@@ -19,5 +19,3 @@ from .explore import audio, completion, conversation, installed_app, message, pa
|
||||
from .workspace import account, members, model_providers, models, tool_providers, workspace
|
||||
# Import billing controllers
|
||||
from .billing import billing
|
||||
# Import operation controllers
|
||||
from .operation import operation
|
||||
|
@@ -3,10 +3,12 @@ from flask_restful import Resource
|
||||
from services.feature_service import FeatureService
|
||||
|
||||
from . import api
|
||||
from .wraps import cloud_utm_record
|
||||
|
||||
|
||||
class FeatureApi(Resource):
|
||||
|
||||
@cloud_utm_record
|
||||
def get(self):
|
||||
return FeatureService.get_features(current_user.current_tenant_id).dict()
|
||||
|
||||
|
@@ -1,30 +0,0 @@
|
||||
from flask_login import current_user
|
||||
from flask_restful import Resource, reqparse
|
||||
|
||||
from controllers.console import api
|
||||
from controllers.console.setup import setup_required
|
||||
from controllers.console.wraps import account_initialization_required, only_edition_cloud
|
||||
from libs.login import login_required
|
||||
from services.operation_service import OperationService
|
||||
|
||||
|
||||
class TenantUtm(Resource):
|
||||
|
||||
@setup_required
|
||||
@login_required
|
||||
@account_initialization_required
|
||||
@only_edition_cloud
|
||||
def post(self):
|
||||
|
||||
parser = reqparse.RequestParser()
|
||||
parser.add_argument('utm_source', type=str, required=True)
|
||||
parser.add_argument('utm_medium', type=str, required=True)
|
||||
parser.add_argument('utm_campaign', type=str, required=False, default='')
|
||||
parser.add_argument('utm_content', type=str, required=False, default='')
|
||||
parser.add_argument('utm_term', type=str, required=False, default='')
|
||||
args = parser.parse_args()
|
||||
|
||||
return OperationService.record_utm(current_user.current_tenant_id, args)
|
||||
|
||||
|
||||
api.add_resource(TenantUtm, '/operation/utm')
|
@@ -1,10 +1,13 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
import json
|
||||
from functools import wraps
|
||||
from flask import request
|
||||
|
||||
from controllers.console.workspace.error import AccountNotInitializedError
|
||||
from flask import abort, current_app
|
||||
from flask_login import current_user
|
||||
from services.feature_service import FeatureService
|
||||
from services.operation_service import OperationService
|
||||
|
||||
|
||||
def account_initialization_required(view):
|
||||
@@ -73,3 +76,20 @@ def cloud_edition_billing_resource_check(resource: str,
|
||||
return decorated
|
||||
return interceptor
|
||||
|
||||
|
||||
def cloud_utm_record(view):
|
||||
@wraps(view)
|
||||
def decorated(*args, **kwargs):
|
||||
try:
|
||||
features = FeatureService.get_features(current_user.current_tenant_id)
|
||||
|
||||
if features.billing.enabled:
|
||||
utm_info = request.cookies.get('utm_info')
|
||||
|
||||
if utm_info:
|
||||
utm_info = json.loads(utm_info)
|
||||
OperationService.record_utm(current_user.current_tenant_id, utm_info)
|
||||
except Exception as e:
|
||||
pass
|
||||
return view(*args, **kwargs)
|
||||
return decorated
|
||||
|
Reference in New Issue
Block a user