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:
@@ -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
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user