| # -*- coding:utf-8 -*- | # -*- coding:utf-8 -*- | ||||
| import os | |||||
| from flask_restful import fields, marshal_with | from flask_restful import fields, marshal_with | ||||
| from werkzeug.exceptions import Forbidden | from werkzeug.exceptions import Forbidden | ||||
| from controllers.web.wraps import WebApiResource | from controllers.web.wraps import WebApiResource | ||||
| from extensions.ext_database import db | from extensions.ext_database import db | ||||
| from models.model import Site | from models.model import Site | ||||
| from services.billing_service import BillingService | |||||
| class AppSiteApi(WebApiResource): | class AppSiteApi(WebApiResource): | ||||
| 'site': fields.Nested(site_fields), | 'site': fields.Nested(site_fields), | ||||
| 'model_config': fields.Nested(model_config_fields, allow_null=True), | 'model_config': fields.Nested(model_config_fields, allow_null=True), | ||||
| 'plan': fields.String, | 'plan': fields.String, | ||||
| 'can_replace_logo': fields.Boolean, | |||||
| } | } | ||||
| @marshal_with(app_fields) | @marshal_with(app_fields) | ||||
| if not site: | if not site: | ||||
| raise Forbidden() | raise Forbidden() | ||||
| return AppSiteInfo(app_model.tenant, app_model, site, end_user.id) | |||||
| edition = os.environ.get('EDITION') | |||||
| can_replace_logo = False | |||||
| if edition == 'CLOUD': | |||||
| info = BillingService.get_info(app_model.tenant_id) | |||||
| can_replace_logo = info['can_replace_logo'] | |||||
| return AppSiteInfo(app_model.tenant, app_model, site, end_user.id, can_replace_logo) | |||||
| api.add_resource(AppSiteApi, '/site') | api.add_resource(AppSiteApi, '/site') | ||||
| class AppSiteInfo: | class AppSiteInfo: | ||||
| """Class to store site information.""" | """Class to store site information.""" | ||||
| def __init__(self, tenant, app, site, end_user): | |||||
| def __init__(self, tenant, app, site, end_user, can_replace_logo): | |||||
| """Initialize AppSiteInfo instance.""" | """Initialize AppSiteInfo instance.""" | ||||
| self.app_id = app.id | self.app_id = app.id | ||||
| self.end_user_id = end_user | self.end_user_id = end_user | ||||
| self.site = site | self.site = site | ||||
| self.model_config = None | self.model_config = None | ||||
| self.plan = tenant.plan | self.plan = tenant.plan | ||||
| self.can_replace_logo = can_replace_logo | |||||
| if app.enable_site and site.prompt_public: | if app.enable_site and site.prompt_public: | ||||
| app_model_config = app.app_model_config | app_model_config = app.app_model_config |