Cleanup, add unique IDs tpo card.vm articles, add support for stacking figures, add more flags qhich trigger item layout, add feature to show current stock, fix SVG upload bug

This commit is contained in:
2017-12-26 18:58:17 +01:00
parent 76b66ff555
commit 1aa3c569a8
3 changed files with 48 additions and 36 deletions
+8 -1
View File
@@ -68,7 +68,7 @@ def to_yaml(card):
def from_dir(path):
return [from_file(i, in_carddir=False) for i in glob.glob(os.path.join(path, "*.yaml"))]
def from_form(form):
def from_form(form):#sanic's request.form
card = Card()
for key, val in form.items():
if not val[0]: continue
@@ -89,6 +89,13 @@ def is_filename_vacant(filename, in_carddir=True):
filename += ".yaml"
return not os.path.exists(filename)
def get_vacant_filename():
i = 1
while 1:
if is_filename_vacant("card-%s" % str(i).zfill(4)):
return "card-%s" % str(i).zfill(4)
i += 1
class open_file:#contextmanager
def __init__(self, filename):
self.filename = filename
+21 -14
View File
@@ -5,19 +5,27 @@
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
#macro(figure $card)
#if($card.figure_source == "material-icons")
#if($card.figure.__contains__(","))
#figure_embed($card.figure.split(",").get(1).strip(), $card.figure_source, "111")
#figure_embed($card.figure.split(",").get(0).strip(), $card.figure_source, "aaa")
#else
#figure_embed($card.figure, $card.figure_source, "aaa")
#end
#end
#macro(figure_embed $figure $source $color)
#if($source == "material-icons")
<!--https://material.io/icons/-->
<i class="material-icons figure">$escape_html($card.figure)</i>
#elseif($card.figure_source == "mdi")
<i class="material-icons figure">$escape_html($label)</i>
#elseif($source == "mdi")
<!--https://materialdesignicons.com/-->
<i class="mdi mdi-$escape_html($card.figure)"></i>
#elseif($card.figure_source == "fa")
<i class="mdi mdi-$escape_html($figure)"></i>
#elseif($source == "fa")
<!--http://fontawesome.io/icons/-->
<i class="fa fa-$escape_html($card.figure)"></i>
#elseif($card.figure_source == "svg")
<i class="fa fa-$escape_html($figure)"></i>
#elseif($source == "svg")
<!--/cards/svg-->
<!--<img class="svg_filter" src="/svg/${escape_html($card.figure)}.svg">-->
<img src="/svg/${escape_html($card.figure)}.svg?color=999">
<!--<img class="svg_filter" src="/svg/${escape_html($figure)}.svg">-->
<img src="/svg/${escape_html($figure)}.svg?color=$color">
#end
#end
#macro(specialFlags $card)
@@ -67,19 +75,18 @@
<title>Cards</title>
#foreach($card in $cards)
#set($card_is_item = false)
#foreach($flag in ["Consumable", "Title", "Food", "Trinket", "Crafting Material", "Collectible", "Alchemy Material", "Ammo", "Splash", "Thrown", "Draw Card"])
#foreach($flag in ["Consumable", "Title", "Food", "Trinket", "Crafting Material", "Collectible", "Alchemy Material", "Ammo", "Splash", "Thrown", "Draw Card", "Passive", "Melee Weapon", "Arc Weapon", "LoS Weapon"])
#if($card.flags.__contains__($flag)) #set($card_is_item = true) #end
#if($card.flags.__contains__($flag.lower())) #set($card_is_item = true) #end
#end
#if($card_is_item)
<article #if class="item" onclick="location.href='creator?filename=$escape_html($card.filename)'">
<article id="$escape_html($card.filename)" #if class="item" onclick="location.href='creator?filename=$escape_html($card.filename)'">
#elseif($card.effects)
<article #if class="effects" onclick="location.href='creator?filename=$escape_html($card.filename)'">
<article id="$escape_html($card.filename)" #if class="effects" onclick="location.href='creator?filename=$escape_html($card.filename)'">
#else
<article onclick="location.href='creator?filename=$escape_html($card.filename)'">
<article id="$escape_html($card.filename)" onclick="location.href='creator?filename=$escape_html($card.filename)'">
#end
<h1>$escape_html($card.title)</h1>
<figure>
+19 -21
View File
@@ -65,14 +65,7 @@ async def show_creator(request):
initialcard = card.from_file(str(request.args["filename"][0])+".yaml")
else:
initialcard = card.Card()
#find vacant fileame:
i = 1
while 1:
if card.is_filename_vacant("card-%s" % str(i).zfill(4)):
initialcard.filename = "card-%s" % str(i).zfill(4)
break
i += 1
initialcard.filename = card.get_vacant_filename()
#initialcard.power = ""
#initialcard.cp = ""
#initialcard.steps = ""
@@ -88,25 +81,23 @@ async def show_creator(request):#not used atm
#find vacant fileame:
if not initialcard.filename:
i = 1
while 1:
if card.is_filename_vacant("card-%s" % str(i).zfill(4)):
initialcard.filename = "card-%s" % str(i).zfill(4)
break
i += 1
initialcard.filename = card.get_vacant_filename()
return {"card":initialcard}
@app.get('/cards/show')
@mergeTemplate("cards/card.vm")
async def show_cards(request):
if "card" not in request.args:
return response.redirect('/cards/')
cards = []
for i in request.args["card"]:
if "/" in i or "\\" in i:
return response.redirect('/cards/')
cards.append(card.from_file(i+".yaml"))
if "card" in request.args:
for i in request.args["card"]:
if "/" in i or "\\" in i: return response.redirect('/cards/')
cards.append(card.from_file(i+".yaml"))
elif "stock" in request.args:
for i in card.from_dir(config.carddir):
cards.extend([i]*int(i.copies_owned))
else:
return response.redirect('/cards/')
return locals()
@app.post('/cards/preview')
@@ -114,6 +105,8 @@ async def show_cards(request):
async def preview_card(request):
cards = [card.from_form(request.form)]
if "save" in request.form:
if not cards[0].filename:
cards[0].filename = card.get_vacant_filename()
card.to_file(cards[0])
was_saved = True
if "delete" in request.form:
@@ -149,6 +142,11 @@ async def svg_add(request):
name = request.form.get("name") or file.name
if name[-4:] == ".svg": name = name[:-4]
page = 1
current_collection = None
collections = svg.list_collections()
filter = None
svg.store(name, file.body)
uploaded = True