mirror of https://github.com/langgenius/dify.git
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from flask_restx import Resource
|
|
from werkzeug.exceptions import Forbidden
|
|
|
|
from controllers.common.fields import Site as SiteResponse
|
|
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
|
|
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 SiteResponse.model_validate(site).model_dump(mode="json")
|