Files
@ 8a634b5df258
Branch filter:
Location: C3L/C3L-Membership-Online-Form/c3l_membership/__init__.py
8a634b5df258
2.6 KiB
text/x-python
Reformat css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | import base64
import json
import os.path
import secrets
import subprocess
from flask import Flask, g, redirect, request, url_for
from flask.cli import AppGroup
from flask_babel import Babel
from flask_qrcode import QRcode
config_file = os.path.abspath("/etc/membership.json")
qrcode = QRcode()
babel = Babel()
babel_cli = AppGroup("babel")
def create_app():
app = Flask(__name__)
try:
app.config.from_file(config_file, load=json.load)
except FileNotFoundError:
pass
qrcode.init_app(app)
babel.init_app(app)
_default_secret_key = base64.b64encode(secrets.token_bytes()).decode("utf-8")
app.config["SECRET_KEY"] = os.environ.get("SECRET_KEY", _default_secret_key)
app.config["LANGUAGES"] = ["en", "de", "fr", "lb"]
app.config.setdefault("SUPPORTING_FEE", 40)
app.config.setdefault("REGULAR_FEE", 120)
app.config.setdefault("DIGICASH_ENABLED", True)
app.config.setdefault("BITCOIN_ENABLED", True)
app.config.setdefault("ETHEREUM_ENABLED", True)
app.config.setdefault("MONERO_ENABLED", True)
app.config.setdefault("ZCASH_ENABLED", True)
app.config.setdefault(
"BITCOIN_CONVERSION_SCRIPT", "/usr/local/share/btc/BTC_Membership.pl"
)
app.config.setdefault(
"ETHEREUM_CONVERSION_SCRIPT", "/usr/local/share/eth/ETH_Membership.pl"
)
app.config.setdefault(
"MONERO_CONVERSION_SCRIPT", "/usr/local/share/xmr/XMR_Membership.pl"
)
app.config.setdefault(
"ZCASH_CONVERSION_SCRIPT", "/usr/local/share/zcash/ZCASH_Membership.pl"
)
@babel.localeselector
def get_locale():
if not g.get("lang_code", None):
g.lang_code = request.accept_languages.best_match(app.config["LANGUAGES"])
return g.lang_code
from .views import root_page
app.register_blueprint(root_page)
@app.route("/")
def home():
g.lang_code = request.accept_languages.best_match(app.config["LANGUAGES"])
return redirect(url_for("root.index"))
app.cli.add_command(babel_cli)
return app
@babel_cli.command("extract")
def babel_extract():
subprocess.run(
[
"pybabel",
"extract",
"-F",
"babel.cfg",
"-k",
"lazy_gettext",
"-o",
"messages.pot",
".",
]
)
@babel_cli.command("update")
def babel_update():
subprocess.run(
["pybabel", "update", "-i", "messages.pot", "-d", "c3l_membership/translations"]
)
@babel_cli.command("compile")
def babel_compile():
subprocess.run(["pybabel", "compile", "-d", "c3l_membership/translations"])
app = create_app()
|