You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gcgj-dify-1.7.0/api/controllers/console/workspace/account_ext.py

88 lines
3.2 KiB
Python

from flask_restful import Resource, reqparse # type: ignore
import flask_login
from unstructured.utils import first
from controllers.console import api
from controllers.console.wraps import setup_required
from services.ext.account_ext_service import AccountExtService, TenantExtService
from models.account import (
Account,
Tenant,
)
from extensions.ext_database import db
class AccountsApi(Resource):
@setup_required
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("accounts",
type=lambda x: x if isinstance(x, list) else [] ,
required=True,
location="json")
parser.add_argument("target_tenant_id", type=str,
required=True,
location="json")
args = parser.parse_args()
target_tenant_id = args["target_tenant_id"]
accounts = args["accounts"]
AccountExtService.update_account_list(accounts=accounts,
target_tenant_id=target_tenant_id)
return {}
class LoginAccountInfo:
def __init__(self, id, name, tenant_id):
self.id = id
self.name = name
self.tenant_id = tenant_id
def to_dict(self):
return {
"id": self.id,
"name": self.name,
"tenant_id": self.tenant_id,
}
class LoginAccountsApi(Resource):
@setup_required
def get(self):
current_user = flask_login.current_user
# current_user_info = db.session.query(Account).filter(Account.id==current_user.id).first()
tenant = current_user.current_tenant
login_account = LoginAccountInfo(id=current_user.id, name=current_user.name, tenant_id=tenant.id)
return login_account.to_dict()
class TenantEnableApi(Resource):
@setup_required
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("target_tenant_id", type=str, required=True, location="json")
parser.add_argument("target_tenant_name", type=str, required=True, location="json")
args = parser.parse_args()
target_tenant_id = args["target_tenant_id"]
target_tenant_name = args["target_tenant_name"]
tenant_account_info = TenantExtService.enable_tenant(target_tenant_id=target_tenant_id,target_tenant_name=target_tenant_name)
return tenant_account_info.to_dict(),200
class TenantInitApi(Resource):
@setup_required
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("target_tenant_id", type=str, required=True, location="json")
parser.add_argument("target_tenant_name", type=str, required=True, location="json")
args = parser.parse_args()
target_tenant_id = args["target_tenant_id"]
target_tenant_name = args["target_tenant_name"]
tenant_data = TenantExtService.init_tenant(target_tenant_id=target_tenant_id,target_tenant_name=target_tenant_name)
return tenant_data.to_dict(),200
api.add_resource(AccountsApi, "/accounts/update")
api.add_resource(TenantEnableApi, "/tenant/enable")
api.add_resource(TenantInitApi, "/tenant/init")
api.add_resource(LoginAccountsApi, "/login/account/info")