Initial commit: aplicatie de cantarire si etichetare
Aplicatie Flask + SQLite pentru productie alimentara: cantarirea componentelor unui produs finit si tiparirea etichetei prin QZ Tray. - produse finite (retete) formate din componente cantarite - designer vizual de etichete (mm/px, zona sigura, campuri variabile, cod QR cu continut din mai multe bucati) - legare produs finit -> sablon de eticheta - navigare pe doua taburi: Cantarire / Setari - administrare: componente, produse finite, sabloane, campuri, istoric - backup, resetare baza de date, checklist de pregatire, /healthz - CLI de administrare si serviciu systemd pentru productie - vendor/syncpulse-scale-bridge (GPL-3.0-or-later) pentru citirea cantarului
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
"""Aplicatia Flask: fabrica, blueprint-uri, filtre Jinja."""
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
from flask import Flask
|
||||
|
||||
from . import db
|
||||
from .config import Config
|
||||
from .labels import _format_datetime, _format_weight
|
||||
from .logging_setup import configure_logging
|
||||
from .scale import create_scale
|
||||
|
||||
|
||||
def create_app(test_config: dict | None = None) -> Flask:
|
||||
app = Flask(__name__, instance_relative_config=False)
|
||||
app.config.from_object(Config)
|
||||
if test_config:
|
||||
app.config.update(test_config)
|
||||
|
||||
instance_dir = Path(app.config["INSTANCE_DIR"])
|
||||
instance_dir.mkdir(parents=True, exist_ok=True)
|
||||
Path(app.config["DATABASE"]).parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
db.register(app)
|
||||
create_scale(app)
|
||||
if not app.config.get("TESTING"):
|
||||
configure_logging()
|
||||
|
||||
with app.app_context():
|
||||
db.init_db()
|
||||
|
||||
from .routes import (api, components, fields, history, label_templates, main, monitor,
|
||||
printing, recipes)
|
||||
|
||||
app.register_blueprint(main.bp)
|
||||
app.register_blueprint(components.bp)
|
||||
app.register_blueprint(recipes.bp)
|
||||
app.register_blueprint(label_templates.bp)
|
||||
app.register_blueprint(fields.bp)
|
||||
app.register_blueprint(printing.bp)
|
||||
app.register_blueprint(history.bp)
|
||||
app.register_blueprint(monitor.bp)
|
||||
app.register_blueprint(api.bp)
|
||||
|
||||
app.jinja_env.filters["weight"] = _format_weight
|
||||
app.jinja_env.filters["dt"] = _format_datetime
|
||||
|
||||
@app.context_processor
|
||||
def inject_globals():
|
||||
from .db import all_settings
|
||||
|
||||
return {
|
||||
"app_settings": all_settings(),
|
||||
"current_year": datetime.now().year,
|
||||
"app_version": "0.1.0",
|
||||
}
|
||||
|
||||
return app
|
||||
Reference in New Issue
Block a user