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.
88 lines
3.2 KiB
Python
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")
|