Files
@ 8db1bb6cb4de
Branch filter:
Location: C3L/C3L-Membership-Online-Form/c3l_membership/__init__.py - annotation
8db1bb6cb4de
2.1 KiB
text/x-python
Bump version
7cf7d1e162a4 6f06fc328a13 6f06fc328a13 7cf7d1e162a4 83d7cbad018a 6f06fc328a13 4005eddcc559 83d7cbad018a 4005eddcc559 6f06fc328a13 6f06fc328a13 6f06fc328a13 4005eddcc559 83d7cbad018a 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 7f4b23cdb141 7f4b23cdb141 7f4b23cdb141 7f4b23cdb141 7f4b23cdb141 6f06fc328a13 7cf7d1e162a4 6f06fc328a13 6f06fc328a13 6f06fc328a13 6f06fc328a13 4005eddcc559 6f06fc328a13 7cf7d1e162a4 7cf7d1e162a4 4005eddcc559 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 7cf7d1e162a4 10cfc4437178 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
qrcode = QRcode()
babel = Babel()
babel_cli = AppGroup("babel")
def create_app():
app = Flask(__name__)
if app.debug:
config_file = os.path.abspath("config.json")
else:
config_file = os.path.abspath("/etc/membership.json")
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("CRYPTOCURRENCIES", dict())
@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()
|