Skip to content

Commit

Permalink
add form schemas.
Browse files Browse the repository at this point in the history
  • Loading branch information
GarfieldDai committed Oct 24, 2023
1 parent 41e452d commit 6067034
Show file tree
Hide file tree
Showing 11 changed files with 123 additions and 3 deletions.
4 changes: 2 additions & 2 deletions .vscode/launch.json → api/.vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "api/app.py",
"FLASK_APP": "app.py",
"FLASK_DEBUG": "1",
"GEVENT_SUPPORT": "True"
},
Expand All @@ -21,7 +21,7 @@
"--debug"
],
"jinja": true,
"justMyCode": true
"justMyCode": false
}
]
}
2 changes: 1 addition & 1 deletion api/controllers/console/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
api = ExternalApi(bp)

# Import other controllers
from . import setup, version, apikey, admin
from . import setup, version, apikey, admin, form_schemas

# Import app controllers
from .app import advanced_prompt_template, app, site, completion, model_config, statistic, conversation, message, generator, audio
Expand Down
23 changes: 23 additions & 0 deletions api/controllers/console/form_schemas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from flask_restful import Resource, reqparse

from controllers.console import api
from controllers.console.setup import setup_required
from controllers.console.wraps import account_initialization_required
from libs.login import login_required
from services.form_schemas_service import FormSchemasService


class FormSchemas(Resource):

@setup_required
@login_required
@account_initialization_required
def get(self):
parser = reqparse.RequestParser()
parser.add_argument('module', type=str, required=True, location='args')
args = parser.parse_args()

return FormSchemasService.get_form_schemas(args['module'])


api.add_resource(FormSchemas, '/form-schemas')
1 change: 1 addition & 0 deletions api/core/hooks/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from core.hooks.moderation.cloud_service.cloud_service import CloudService
30 changes: 30 additions & 0 deletions api/core/hooks/base_hook.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import json
import os

registered_hooks = {}

class BaseHook:

def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
cls.register()

@classmethod
def register(cls):
subclass_path = os.path.abspath(cls.__module__.replace(".", os.path.sep) + '.py')
subclass_dir_path = os.path.dirname(subclass_path)
parent_folder_name = os.path.basename(os.path.dirname(subclass_dir_path))

if parent_folder_name == 'hooks':
return

json_path = os.path.join(subclass_dir_path, 'schema.json')
json_data = {}
if os.path.exists(json_path):
with open(json_path, 'r') as f:
json_data = json.load(f)

if parent_folder_name not in registered_hooks:
registered_hooks[parent_folder_name] = []

registered_hooks[parent_folder_name].append(json_data)
Empty file.
4 changes: 4 additions & 0 deletions api/core/hooks/moderation/base_moderation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from ..base_hook import BaseHook

class BaseModeration(BaseHook):
pass
Empty file.
4 changes: 4 additions & 0 deletions api/core/hooks/moderation/cloud_service/cloud_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from ...moderation.base_moderation import BaseModeration

class CloudService(BaseModeration):
pass
51 changes: 51 additions & 0 deletions api/core/hooks/moderation/cloud_service/schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{
"name": "cloud_service",
"label": {
"en-US": "Cloud Service",
"zh-Hans": "云服务"
},
"form_schema": [
{
"select": {
"label": {
"en-US": "Cloud Provider",
"zh-Hans": "云计算厂商"
},
"variable": "cloud_provider",
"required": true,
"options": [
"腾讯云",
"阿里云",
"AWS"
],
"default": "",
"placeholder": ""
}
},
{
"text-input": {
"label": {
"en-US": "API Endpoint",
"zh-Hans": "API Endpoint"
},
"variable": "api_endpoint",
"required": true,
"max-length": 100,
"default": "",
"placeholder": ""
}
},
{
"paragraph": {
"label": {
"en-US": "API Key",
"zh-Hans": "API Key"
},
"variable": "api_keys",
"required": true,
"default": "",
"placeholder": ""
}
}
]
}
7 changes: 7 additions & 0 deletions api/services/form_schemas_service.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from core.hooks.base_hook import registered_hooks

class FormSchemasService:

@classmethod
def get_form_schemas(cls, module: str) -> list[dict]:
return registered_hooks.get(module, [])

0 comments on commit 6067034

Please sign in to comment.