first commit
This commit is contained in:
0
code/system/code_template/backend/__init__.py
Normal file
0
code/system/code_template/backend/__init__.py
Normal file
100
code/system/code_template/backend/api.py
Normal file
100
code/system/code_template/backend/api.py
Normal file
@@ -0,0 +1,100 @@
|
||||
import json
|
||||
|
||||
from system.code_template.backend.mapping import component_to_search_type
|
||||
from utils.ru_convert import RuleConvert
|
||||
|
||||
|
||||
def generator_backend_api(api_info):
|
||||
form_info = api_info.form_info
|
||||
form_info_dict = json.loads(form_info)
|
||||
filter_txt = ''
|
||||
field_code = ''
|
||||
|
||||
for item in form_info_dict.get('schemas'):
|
||||
field_code = f''''{item['field']}', {field_code}'''
|
||||
column = f'''
|
||||
{item['field']}: {component_to_search_type[item['component']]} = Field(None, alias='{item['field']}')'''
|
||||
filter_txt = column + filter_txt
|
||||
|
||||
api_txt = f'''from typing import List
|
||||
from .model import {RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
from ninja import Field, ModelSchema, Query, Router
|
||||
from ninja.pagination import paginate
|
||||
from utils.fu_crud import (
|
||||
ImportSchema,
|
||||
create,
|
||||
delete,
|
||||
export_data,
|
||||
import_data,
|
||||
retrieve,
|
||||
update,
|
||||
)
|
||||
from utils.fu_ninja import FuFilters, MyPagination
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
# 设置过滤字段
|
||||
class Filters(FuFilters):
|
||||
{filter_txt}
|
||||
|
||||
|
||||
# 设置请求接收字段
|
||||
class {RuleConvert.to_upper_camel_case(api_info.code)}SchemaIn(ModelSchema):
|
||||
|
||||
class Config:
|
||||
model = {RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
model_exclude = ['create_datetime', 'update_datetime', 'belong_dept', 'modifier', 'creator', 'id']
|
||||
|
||||
|
||||
# 设置响应字段
|
||||
class {RuleConvert.to_upper_camel_case(api_info.code)}SchemaOut(ModelSchema):
|
||||
|
||||
class Config:
|
||||
model = {RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
model_fields = '__all__'
|
||||
|
||||
|
||||
# 创建{RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
@router.post('/{api_info.code}', response={RuleConvert.to_upper_camel_case(api_info.code)}SchemaOut)
|
||||
def create_{api_info.code}(request, data: {RuleConvert.to_upper_camel_case(api_info.code)}SchemaIn):
|
||||
{api_info.code} = create(request, data, {RuleConvert.to_upper_camel_case(api_info.code)})
|
||||
return {api_info.code}
|
||||
|
||||
|
||||
# 删除{RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
@router.delete('/{api_info.code}/{{id}}')
|
||||
def delete_{api_info.code}(request, id: int):
|
||||
delete(id, {RuleConvert.to_upper_camel_case(api_info.code)})
|
||||
return {{'success': True}}
|
||||
|
||||
|
||||
# 更新{RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
@router.put('/{api_info.code}/{{id}}', response={RuleConvert.to_upper_camel_case(api_info.code)}SchemaOut)
|
||||
def update_{api_info.code}(request, id: int, data: {RuleConvert.to_upper_camel_case(api_info.code)}SchemaIn):
|
||||
{api_info.code} = update(request, id, data, {RuleConvert.to_upper_camel_case(api_info.code)})
|
||||
return {api_info.code}
|
||||
|
||||
|
||||
# 获取{RuleConvert.to_upper_camel_case(api_info.code)}
|
||||
@router.get('/{api_info.code}', response=List[{RuleConvert.to_upper_camel_case(api_info.code)}SchemaOut])
|
||||
@paginate(MyPagination)
|
||||
def list_{api_info.code}(request, filters: Filters = Query(...)):
|
||||
qs = retrieve(request, {RuleConvert.to_upper_camel_case(api_info.code)}, filters)
|
||||
return qs
|
||||
|
||||
|
||||
# 导入
|
||||
@router.get('/{api_info.code}/all/export')
|
||||
def export_{api_info.code}(request):
|
||||
export_fields = ({field_code})
|
||||
return export_data(request, {RuleConvert.to_upper_camel_case(api_info.code)}, {RuleConvert.to_upper_camel_case(api_info.code)}SchemaOut, export_fields)
|
||||
|
||||
|
||||
# 导出
|
||||
@router.post('/{api_info.code}/all/import')
|
||||
def import_{api_info.code}(request, data: ImportSchema):
|
||||
import_fields = ({field_code})
|
||||
return import_data(request, {RuleConvert.to_upper_camel_case(api_info.code)}, {RuleConvert.to_upper_camel_case(api_info.code)}SchemaIn, data, import_fields)
|
||||
'''
|
||||
return api_txt
|
||||
31
code/system/code_template/backend/mapping.py
Normal file
31
code/system/code_template/backend/mapping.py
Normal file
@@ -0,0 +1,31 @@
|
||||
component_to_db_type = {
|
||||
'Input': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
'IconPicker': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
'StrengthMeter': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
'Select': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
'CheckboxGroup': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
'InputNumber': 'DecimalField(null=True, blank=True, max_digits = 13, decimal_places = 4, ',
|
||||
'InputTextArea': 'TextField(null=True, blank=True, ',
|
||||
'RadioGroup': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
'DatePicker': 'DateField(null=True, blank=True, ',
|
||||
'MonthPicker': 'DateField(null=True, blank=True, ',
|
||||
'TimePicker': 'TimeField(null=True, blank=True, ',
|
||||
'Switch': 'BooleanField(null=True, blank=True, ',
|
||||
'Rate': 'CharField(null=True, blank=True, max_length=255, ',
|
||||
}
|
||||
|
||||
component_to_search_type = {
|
||||
'Input': 'str',
|
||||
'IconPicker': 'str',
|
||||
'StrengthMeter': 'str',
|
||||
'Select': 'str',
|
||||
'CheckboxGroup': 'str',
|
||||
'InputNumber': 'int',
|
||||
'InputTextArea': 'str',
|
||||
'RadioGroup': 'str',
|
||||
'DatePicker': 'str',
|
||||
'MonthPicker': 'str',
|
||||
'TimePicker': 'str',
|
||||
'Switch': 'bool',
|
||||
'Rate': 'str',
|
||||
}
|
||||
31
code/system/code_template/backend/model.py
Normal file
31
code/system/code_template/backend/model.py
Normal file
@@ -0,0 +1,31 @@
|
||||
import json
|
||||
|
||||
from system.code_template.backend.mapping import component_to_db_type
|
||||
from utils.ru_convert import RuleConvert
|
||||
|
||||
|
||||
def generator_backend_model(model_info):
|
||||
form_info = model_info.form_info
|
||||
form_info_dict = json.loads(form_info)
|
||||
header_txt = f'''from django.db import models
|
||||
from utils.models import CoreModel
|
||||
|
||||
|
||||
'''
|
||||
columns_txt = ''
|
||||
for item in form_info_dict.get('schemas'):
|
||||
column = f'''
|
||||
{item['field']} = models.{component_to_db_type[item['component']]}verbose_name='{item['label']}', help_text='{item['label']}')'''
|
||||
columns_txt = column + columns_txt
|
||||
|
||||
bottom_txt = f'''class {RuleConvert.to_upper_camel_case(model_info.code)}(CoreModel):
|
||||
{columns_txt}
|
||||
|
||||
class Meta:
|
||||
db_table = 'generator_{model_info.code}'
|
||||
verbose_name = '{model_info.name}'
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ('-create_datetime',)
|
||||
'''
|
||||
model_txt = header_txt + bottom_txt
|
||||
return model_txt
|
||||
9
code/system/code_template/backend/router.py
Normal file
9
code/system/code_template/backend/router.py
Normal file
@@ -0,0 +1,9 @@
|
||||
def generator_router(router_info):
|
||||
router_txt = f'''from ninja import Router
|
||||
from .api import router
|
||||
|
||||
{router_info.code}_router = Router()
|
||||
{router_info.code}_router.add_router('/', router, tags=['{router_info.name}'])
|
||||
'''
|
||||
return router_txt
|
||||
pass
|
||||
Reference in New Issue
Block a user