inventory/inventory/__init__.py
2025-09-09 09:53:05 -05:00

61 lines
No EOL
2.7 KiB
Python

from __future__ import annotations
import os
from flask import Flask
from crudkit import ProdConfig
from crudkit.api.flask_api import generate_crud_blueprint
from crudkit.core.service import CRUDService
from crudkit.integrations.flask import init_app
from .config import DevConfig
from .routes.index import init_index_routes
def create_app(config_cls=DevConfig) -> Flask:
app = Flask(__name__)
runtime = init_app(app, config=ProdConfig)
print(f"Effective DB URL: {str(runtime.engine.url)}")
from . import models as _models
_models.Base.metadata.create_all(bind=runtime.engine)
Session = app.extensions["crudkit"].get("Session")
if Session is None:
SessionFactory = runtime.session_factory
Session = SessionFactory
session = Session
area_service = CRUDService(_models.Area, session)
brand_service = CRUDService(_models.Brand, session)
device_type_service = CRUDService(_models.DeviceType, session)
image_service = CRUDService(_models.Image, session)
inventory_service = CRUDService(_models.Inventory, session)
room_function_service = CRUDService(_models.RoomFunction, session)
room_service = CRUDService(_models.Room, session)
user_service = CRUDService(_models.User, session)
work_log_service = CRUDService(_models.WorkLog, session)
work_note_service = CRUDService(_models.WorkNote, session)
app.register_blueprint(generate_crud_blueprint(_models.Area, area_service), url_prefix="/api/area")
app.register_blueprint(generate_crud_blueprint(_models.Brand, brand_service), url_prefix="/api/brand")
app.register_blueprint(generate_crud_blueprint(_models.DeviceType, device_type_service), url_prefix="/api/device_type")
app.register_blueprint(generate_crud_blueprint(_models.Image, image_service), url_prefix="/api/image")
app.register_blueprint(generate_crud_blueprint(_models.Inventory, inventory_service), url_prefix="/api/inventory")
app.register_blueprint(generate_crud_blueprint(_models.RoomFunction, room_function_service), url_prefix="/api/room_function")
app.register_blueprint(generate_crud_blueprint(_models.Room, room_service), url_prefix="/api/room")
app.register_blueprint(generate_crud_blueprint(_models.User, user_service), url_prefix="/api/user")
app.register_blueprint(generate_crud_blueprint(_models.WorkLog, work_log_service), url_prefix="/api/work_log")
app.register_blueprint(generate_crud_blueprint(_models.WorkNote, work_note_service), url_prefix="/api/work_note")
init_index_routes(app)
@app.teardown_appcontext
def _remove_session(_exc):
sess = app.extensions["crudkit"].get("Session")
if sess is not None:
sess.remove()
return app