Simplify withResource, replace withTemplate with mergeTemplate
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import airspeed, os, html
|
||||
from sanic import response
|
||||
try:
|
||||
from html5print import HTMLBeautifier
|
||||
except ModuleNotFoundError:
|
||||
@@ -87,40 +88,33 @@ def withResource(path, binary=False):
|
||||
content = readfile(os.path.join(config.resourcedir, path), binary)
|
||||
else:
|
||||
content = data
|
||||
if "file" in kwargs:
|
||||
kwargs["file"][os.path.basename(path)] = content
|
||||
else:
|
||||
kwargs["file"] = {os.path.basename(path): content}
|
||||
return func(*args, **kwargs)
|
||||
return func(*args, content, **kwargs)
|
||||
return newfunc
|
||||
return decorator
|
||||
|
||||
def withTemplate(path, isHTML=True):
|
||||
def mergeTemplate(path):
|
||||
filename = os.path.join(config.resourcedir, path)
|
||||
if config.cache:
|
||||
template = airspeed.Template(readfile(filename), filename)
|
||||
|
||||
def decorator(func):
|
||||
def newfunc(*args, **kwargs):
|
||||
if not config.cache:
|
||||
t = airspeed.Template(readfile(filename), filename)
|
||||
async def newfunc(*args, **kwargs):
|
||||
if config.cache:
|
||||
tem = template
|
||||
else:
|
||||
t = template
|
||||
|
||||
class T:
|
||||
def merge(self, objects):
|
||||
objects.update({"escape_html":escape_html, "escape_url":escape_url})
|
||||
if config.prettifyHTML and isHTML:
|
||||
return HTMLBeautifier.beautify(
|
||||
t.merge(objects, loader=VelocityFileLoader()),
|
||||
indent=4)#.replace("/>", ">")
|
||||
else:
|
||||
return t.merge(objects, loader=VelocityFileLoader())
|
||||
|
||||
if "template" in kwargs:
|
||||
kwargs["template"][os.path.basename(path)] = T()
|
||||
tem = airspeed.Template(readfile(filename), filename)
|
||||
|
||||
objects = await func(*args, **kwargs)
|
||||
|
||||
objects.update({
|
||||
"escape_html": escape_html,
|
||||
"escape_url":escape_url})
|
||||
|
||||
if config.prettifyHTML:
|
||||
return response.html(HTMLBeautifier.beautify(
|
||||
tem.merge(objects, loader=VelocityFileLoader()),
|
||||
indent = 4))#.replace("/>", ">")
|
||||
else:
|
||||
kwargs["template"] = {os.path.basename(path): T()}
|
||||
return func(*args, **kwargs)
|
||||
return response.html(tem.merge(objects, loader=VelocityFileLoader()))
|
||||
return newfunc
|
||||
return decorator
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys, os, airspeed, glob
|
||||
from sanic import Sanic, response
|
||||
from common import withTemplate, withResource, call
|
||||
from common import mergeTemplate, withResource, call
|
||||
import card
|
||||
import svg
|
||||
import config
|
||||
@@ -14,8 +14,8 @@ async def root(request):
|
||||
|
||||
@app.get("/cards/")
|
||||
@app.post("/cards/")
|
||||
@withTemplate("cards/cardlist.vm")
|
||||
async def show_cardlist(request, template={}):
|
||||
@mergeTemplate("cards/cardlist.vm")
|
||||
async def show_cardlist(request):
|
||||
if "action" in request.form and "filename" in request.form:
|
||||
with card.open_file(request.form.get("filename")) as c:
|
||||
if request.form.get("action") == "increment_stock":
|
||||
@@ -56,11 +56,11 @@ async def show_cardlist(request, template={}):
|
||||
sum_cp = sum(int(i.copies_owned) * int(i.cp or 0) for i in cards)
|
||||
sum_copies = sum(int(i.copies_owned) for i in cards)
|
||||
|
||||
return response.html(template["cardlist.vm"].merge(locals()))
|
||||
return locals()
|
||||
|
||||
@app.get('/cards/creator')
|
||||
@withTemplate("cards/creator.vm")
|
||||
async def preview_card(request, template={}):
|
||||
@mergeTemplate("cards/creator.vm")
|
||||
async def show_creator(request):
|
||||
if "filename" in request.args:
|
||||
initialcard = card.from_file(str(request.args["filename"][0])+".yaml")
|
||||
else:
|
||||
@@ -79,11 +79,11 @@ async def preview_card(request, template={}):
|
||||
#initialcard.effects = ""
|
||||
#initialcard.flags = ""
|
||||
|
||||
return response.html(template["creator.vm"].merge({"card":initialcard}))
|
||||
return {"card":initialcard}
|
||||
|
||||
@app.post('/cards/creator')
|
||||
@withTemplate("cards/creator.vm")
|
||||
async def preview_card(request, template={}):
|
||||
@mergeTemplate("cards/creator.vm")
|
||||
async def show_creator(request):#not used atm
|
||||
initialcard = card.from_form(request.form)
|
||||
|
||||
#find vacant fileame:
|
||||
@@ -94,11 +94,11 @@ async def preview_card(request, template={}):
|
||||
initialcard.filename = "card-%s" % str(i).zfill(4)
|
||||
break
|
||||
i += 1
|
||||
return response.html(template["creator.vm"].merge({"card":initialcard}))
|
||||
return {"card":initialcard}
|
||||
|
||||
@app.get('/cards/show')
|
||||
@withTemplate("cards/card.vm")
|
||||
async def show_cards(request, template={}):
|
||||
@mergeTemplate("cards/card.vm")
|
||||
async def show_cards(request):
|
||||
if "card" not in request.args:
|
||||
return response.redirect('/cards/')
|
||||
|
||||
@@ -107,11 +107,11 @@ async def show_cards(request, template={}):
|
||||
if "/" in i or "\\" in i:
|
||||
return response.redirect('/cards/')
|
||||
cards.append(card.from_file(i+".yaml"))
|
||||
return response.html(template["card.vm"].merge(locals()))
|
||||
return locals()
|
||||
|
||||
@app.post('/cards/preview')
|
||||
@withTemplate("cards/card.vm")
|
||||
async def preview_card(request, template={}):
|
||||
@mergeTemplate("cards/card.vm")
|
||||
async def preview_card(request):
|
||||
cards = [card.from_form(request.form)]
|
||||
if "save" in request.form:
|
||||
card.to_file(cards[0])
|
||||
@@ -119,11 +119,11 @@ async def preview_card(request, template={}):
|
||||
if "delete" in request.form:
|
||||
card.del_file(cards[0])
|
||||
was_deleted = True
|
||||
return response.html(template["card.vm"].merge(locals()))
|
||||
return locals()
|
||||
|
||||
@app.get("/cards/svg")
|
||||
@withTemplate("cards/svg.vm")
|
||||
async def svg_list(request, template={}):
|
||||
@mergeTemplate("cards/svg.vm")
|
||||
async def svg_list(request):
|
||||
filter = request.args.get("filter")
|
||||
page = int(request.args.get("page") or 1)
|
||||
current_collection = request.args.get("collection")
|
||||
@@ -140,11 +140,11 @@ async def svg_list(request, template={}):
|
||||
svgs.sort()
|
||||
svgs = svgs[(page-1)*config.svg_page_size:page*config.svg_page_size]
|
||||
|
||||
return response.html(template["svg.vm"].merge(locals()))
|
||||
return locals()
|
||||
|
||||
@app.post("/cards/svg")
|
||||
@withTemplate("cards/svg.vm")
|
||||
async def svg_add(request, template={}):
|
||||
@mergeTemplate("cards/svg.vm")
|
||||
async def svg_add(request):
|
||||
file = request.files.get("file")
|
||||
name = request.form.get("name") or file.name
|
||||
if name[-4:] == ".svg": name = name[:-4]
|
||||
@@ -153,7 +153,7 @@ async def svg_add(request, template={}):
|
||||
|
||||
uploaded = True
|
||||
svgs = svg.list_all()
|
||||
return response.html(template["svg.vm"].merge(locals()))
|
||||
return locals()
|
||||
|
||||
#add static resources (with caching):
|
||||
for file in glob.iglob(os.path.join(config.resourcedir, "**","*"), recursive=True):
|
||||
@@ -168,8 +168,7 @@ for file in glob.iglob(os.path.join(config.resourcedir, "**","*"), recursive=Tru
|
||||
|
||||
@app.get(f"/{route}")
|
||||
@withResource(route)
|
||||
async def card_style(request, file={}):
|
||||
file = tuple(file.values())[0]
|
||||
async def card_style(request, file):
|
||||
return response.text(file, headers={"Content-Type": f"text/{filetype}"})
|
||||
|
||||
#add svgs:
|
||||
|
||||
Reference in New Issue
Block a user