Files
@ 83d7cbad018a
Branch filter:
Location: C3L/C3L-Membership-Online-Form/c3l_membership/__init__.py - annotation
83d7cbad018a
2.6 KiB
text/x-python
Add babel command to flask cli
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 | 7cf7d1e162a4 6f06fc328a13 6f06fc328a13 7cf7d1e162a4 83d7cbad018a 6f06fc328a13 4005eddcc559 83d7cbad018a 4005eddcc559 6f06fc328a13 6f06fc328a13 7cf7d1e162a4 6f06fc328a13 6f06fc328a13 4005eddcc559 83d7cbad018a 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 7cf7d1e162a4 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 4005eddcc559 6f06fc328a13 7cf7d1e162a4 7cf7d1e162a4 4005eddcc559 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 025b79e9a3f3 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 6f06fc328a13 4005eddcc559 4005eddcc559 4005eddcc559 4005eddcc559 4005eddcc559 4005eddcc559 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 4005eddcc559 4005eddcc559 4005eddcc559 4005eddcc559 4005eddcc559 83d7cbad018a 83d7cbad018a 6f06fc328a13 6f06fc328a13 6f06fc328a13 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 83d7cbad018a 6f06fc328a13 | 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()
|