Create attractive VASL scenarios, with loads of useful information embedded to assist with game play.
https://vasl-templates.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.1 KiB
35 lines
1.1 KiB
6 years ago
|
""" Serve static files. """
|
||
|
|
||
|
import os
|
||
|
import io
|
||
|
|
||
|
from flask import send_file, abort
|
||
|
|
||
|
from vasl_templates.webapp import app
|
||
|
from vasl_templates.webapp.file_server.vasl_mod import VaslMod
|
||
|
from vasl_templates.webapp.config.constants import DATA_DIR
|
||
|
|
||
|
vasl_mod = None
|
||
|
if app.config.get( "VASL_MOD" ):
|
||
|
vasl_mod = VaslMod( app.config["VASL_MOD"], DATA_DIR )
|
||
|
|
||
|
# ---------------------------------------------------------------------
|
||
|
|
||
|
@app.route( "/counter/<gpid>/<side>/<int:index>" )
|
||
|
@app.route( "/counter/<gpid>/<side>", defaults={"index":1} )
|
||
|
def get_counter_image( gpid, side, index ):
|
||
|
"""Get a counter image."""
|
||
|
|
||
|
# check if a VASL module has been configured
|
||
|
if not vasl_mod:
|
||
|
return app.send_static_file( "images/missing-image.png" )
|
||
|
|
||
|
# return the specified counter image
|
||
|
image_path, image_data = vasl_mod.get_piece_image( int(gpid), side, int(index)-1 )
|
||
|
if not image_data:
|
||
|
abort( 404 )
|
||
|
return send_file(
|
||
|
io.BytesIO( image_data ),
|
||
|
attachment_filename = os.path.split( image_path )[1]## nb: so Flask can figure out the MIME type
|
||
|
)
|