| | from flask import request |
| | from flask_restful import Resource, reqparse |
| |
|
| | from configs import dify_config |
| | from libs.helper import StrLen, email, extract_remote_ip |
| | from libs.password import valid_password |
| | from models.model import DifySetup |
| | from services.account_service import RegisterService, TenantService |
| |
|
| | from . import api |
| | from .error import AlreadySetupError, NotInitValidateError |
| | from .init_validate import get_init_validate_status |
| | from .wraps import only_edition_self_hosted |
| |
|
| |
|
| | class SetupApi(Resource): |
| | def get(self): |
| | if dify_config.EDITION == "SELF_HOSTED": |
| | setup_status = get_setup_status() |
| | if setup_status: |
| | return {"step": "finished", "setup_at": setup_status.setup_at.isoformat()} |
| | return {"step": "not_started"} |
| | return {"step": "finished"} |
| |
|
| | @only_edition_self_hosted |
| | def post(self): |
| | |
| | if get_setup_status(): |
| | raise AlreadySetupError() |
| |
|
| | |
| | tenant_count = TenantService.get_tenant_count() |
| | if tenant_count > 0: |
| | raise AlreadySetupError() |
| |
|
| | if not get_init_validate_status(): |
| | raise NotInitValidateError() |
| |
|
| | parser = reqparse.RequestParser() |
| | parser.add_argument("email", type=email, required=True, location="json") |
| | parser.add_argument("name", type=StrLen(30), required=True, location="json") |
| | parser.add_argument("password", type=valid_password, required=True, location="json") |
| | args = parser.parse_args() |
| |
|
| | |
| | RegisterService.setup( |
| | email=args["email"], name=args["name"], password=args["password"], ip_address=extract_remote_ip(request) |
| | ) |
| |
|
| | return {"result": "success"}, 201 |
| |
|
| |
|
| | def get_setup_status(): |
| | if dify_config.EDITION == "SELF_HOSTED": |
| | return DifySetup.query.first() |
| | return True |
| |
|
| |
|
| | api.add_resource(SetupApi, "/setup") |
| |
|