| 
					
				 | 
			
			
				@@ -1,4 +1,6 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # -*- coding:utf-8 -*- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import os 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from flask_restful import fields, marshal_with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from werkzeug.exceptions import Forbidden 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -6,6 +8,7 @@ from controllers.web import api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from controllers.web.wraps import WebApiResource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from extensions.ext_database import db 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from models.model import Site 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from services.billing_service import BillingService 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class AppSiteApi(WebApiResource): 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,6 +42,7 @@ class AppSiteApi(WebApiResource): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'site': fields.Nested(site_fields), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'model_config': fields.Nested(model_config_fields, allow_null=True), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'plan': fields.String, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'can_replace_logo': fields.Boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @marshal_with(app_fields) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -50,7 +54,14 @@ class AppSiteApi(WebApiResource): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if not site: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -59,7 +70,7 @@ api.add_resource(AppSiteApi, '/site') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class AppSiteInfo: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """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.""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.app_id = app.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.end_user_id = end_user 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -67,6 +78,7 @@ class AppSiteInfo: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.site = site 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.model_config = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.plan = tenant.plan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.can_replace_logo = can_replace_logo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if app.enable_site and site.prompt_public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             app_model_config = app.app_model_config 
			 |