| 
                        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | 
                        - import os
 - from flask import current_app, session
 - from flask_restful import Resource, reqparse
 - from libs.helper import str_len
 - from models.model import DifySetup
 - from services.account_service import TenantService
 - 
 - from . import api
 - from .error import AlreadySetupError, InitValidateFailedError
 - from .wraps import only_edition_self_hosted
 - 
 - 
 - class InitValidateAPI(Resource):
 - 
 -     def get(self):
 -         init_status = get_init_validate_status()
 -         if init_status:
 -             return { 'status': 'finished' }
 -         return {'status': 'not_started' }
 - 
 -     @only_edition_self_hosted
 -     def post(self):
 -         # is tenant created
 -         tenant_count = TenantService.get_tenant_count()
 -         if tenant_count > 0:
 -             raise AlreadySetupError()
 - 
 -         parser = reqparse.RequestParser()
 -         parser.add_argument('password', type=str_len(30),
 -                             required=True, location='json')
 -         input_password = parser.parse_args()['password']
 - 
 -         if input_password != os.environ.get('INIT_PASSWORD'):
 -             session['is_init_validated'] = False
 -             raise InitValidateFailedError()
 -             
 -         session['is_init_validated'] = True
 -         return {'result': 'success'}, 201
 - 
 - def get_init_validate_status():
 -     if current_app.config['EDITION'] == 'SELF_HOSTED':
 -         if os.environ.get('INIT_PASSWORD'):
 -             return session.get('is_init_validated') or DifySetup.query.first()
 -     
 -     return True
 - 
 - api.add_resource(InitValidateAPI, '/init')
 
 
  |