Underground-Digital/Workflow-Engine
0
1import os2 3from flask import session4from flask_restful import Resource, reqparse5 6from configs import dify_config7from libs.helper import StrLen8from models.model import DifySetup9from services.account_service import TenantService10 11from . import api12from .error import AlreadySetupError, InitValidateFailedError13from .wraps import only_edition_self_hosted14 15 16class InitValidateAPI(Resource):17 def get(self):18 init_status = get_init_validate_status()19 if init_status:20 return {"status": "finished"}21 return {"status": "not_started"}22 23 @only_edition_self_hosted24 def post(self):25 # is tenant created26 tenant_count = TenantService.get_tenant_count()27 if tenant_count > 0:28 raise AlreadySetupError()29 30 parser = reqparse.RequestParser()31 parser.add_argument("password", type=StrLen(30), required=True, location="json")32 input_password = parser.parse_args()["password"]33 34 if input_password != os.environ.get("INIT_PASSWORD"):35 session["is_init_validated"] = False36 raise InitValidateFailedError()37 38 session["is_init_validated"] = True39 return {"result": "success"}, 20140 41 42def get_init_validate_status():43 if dify_config.EDITION == "SELF_HOSTED":44 if os.environ.get("INIT_PASSWORD"):45 return session.get("is_init_validated") or DifySetup.query.first()46 47 return True48 49 50api.add_resource(InitValidateAPI, "/init")51 