| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- from flask_restx import Resource
- from werkzeug.exceptions import Forbidden
-
- from controllers.common.fields import build_site_model
- from controllers.service_api import service_api_ns
- from controllers.service_api.wraps import validate_app_token
- from extensions.ext_database import db
- from models.account import TenantStatus
- from models.model import App, Site
-
-
- @service_api_ns.route("/site")
- class AppSiteApi(Resource):
- """Resource for app sites."""
-
- @service_api_ns.doc("get_app_site")
- @service_api_ns.doc(description="Get application site configuration")
- @service_api_ns.doc(
- responses={
- 200: "Site configuration retrieved successfully",
- 401: "Unauthorized - invalid API token",
- 403: "Forbidden - site not found or tenant archived",
- }
- )
- @validate_app_token
- @service_api_ns.marshal_with(build_site_model(service_api_ns))
- def get(self, app_model: App):
- """Retrieve app site info.
-
- Returns the site configuration for the application including theme, icons, and text.
- """
- site = db.session.query(Site).where(Site.app_id == app_model.id).first()
-
- if not site:
- raise Forbidden()
-
- assert app_model.tenant
- if app_model.tenant.status == TenantStatus.ARCHIVE:
- raise Forbidden()
-
- return site
|