Underground-Digital/Workflow-Engine
0
1from flask import request2from flask_restful import Resource, reqparse3 4from configs import dify_config5from libs.helper import StrLen, email, extract_remote_ip6from libs.password import valid_password7from models.model import DifySetup8from services.account_service import RegisterService, TenantService9 10from . import api11from .error import AlreadySetupError, NotInitValidateError12from .init_validate import get_init_validate_status13from .wraps import only_edition_self_hosted14 15 16class SetupApi(Resource):17 def get(self):18 if dify_config.EDITION == "SELF_HOSTED":19 setup_status = get_setup_status()20 if setup_status:21 return {"step": "finished", "setup_at": setup_status.setup_at.isoformat()}22 return {"step": "not_started"}23 return {"step": "finished"}24 25 @only_edition_self_hosted26 def post(self):27 # is set up28 if get_setup_status():29 raise AlreadySetupError()30 31 # is tenant created32 tenant_count = TenantService.get_tenant_count()33 if tenant_count > 0:34 raise AlreadySetupError()35 36 if not get_init_validate_status():37 raise NotInitValidateError()38 39 parser = reqparse.RequestParser()40 parser.add_argument("email", type=email, required=True, location="json")41 parser.add_argument("name", type=StrLen(30), required=True, location="json")42 parser.add_argument("password", type=valid_password, required=True, location="json")43 args = parser.parse_args()44 45 # setup46 RegisterService.setup(47 email=args["email"], name=args["name"], password=args["password"], ip_address=extract_remote_ip(request)48 )49 50 return {"result": "success"}, 20151 52 53def get_setup_status():54 if dify_config.EDITION == "SELF_HOSTED":55 return DifySetup.query.first()56 return True57 58 59api.add_resource(SetupApi, "/setup")60 