63 lines
2.4 KiB
Python
63 lines
2.4 KiB
Python
#!/bin/python
|
|
#coding: utf-8
|
|
# +-------------------------------------------------------------------
|
|
# | version:1.0
|
|
# +-------------------------------------------------------------------
|
|
# | django-vue-lyadmin
|
|
# +-------------------------------------------------------------------
|
|
# | Author: lybbn
|
|
# +-------------------------------------------------------------------
|
|
# | QQ: 1042594286
|
|
# +-------------------------------------------------------------------
|
|
|
|
# ------------------------------
|
|
# 代码生成--viewset
|
|
# ------------------------------
|
|
|
|
from django.template import Template,Context
|
|
|
|
def lyGenerateViewSet(object):
|
|
#自定义导出
|
|
canExport = False
|
|
export_field_dict = {}
|
|
export_download_filename = "导出%s数据"%object['verbose_name']
|
|
column = object['column']
|
|
for c in column:
|
|
can_export = c.get('can_export',False)
|
|
field_name = c['field_name']
|
|
verbose_name = c['verbose_name']
|
|
field_type = c['field_type']
|
|
if can_export:
|
|
canExport = True
|
|
if field_type in ['ForeignKey','ManyToManyField','OneToOneField']:
|
|
gname = "%s_lyaudocode_name"%field_name
|
|
export_field_dict[gname] = verbose_name
|
|
else:
|
|
export_field_dict[field_name] = verbose_name
|
|
exportData = {
|
|
'canExport':canExport,
|
|
'export_field_dict':export_field_dict,
|
|
'export_download_filename':export_download_filename
|
|
}
|
|
|
|
viewset_code = """# -*- coding: utf-8 -*-
|
|
from utils.viewset import CustomModelViewSet
|
|
from apps.lyautocode.models.models_{{object.class_name}} import {{ object.class_name }}
|
|
from apps.lyautocode.serializers.serializer_{{object.class_name}} import {{ object.class_name}}Serializer
|
|
from apps.lyautocode.filters.filter_{{object.class_name}} import {{ object.class_name }}FilterSet
|
|
|
|
class {{ object.class_name }}ViewSet(CustomModelViewSet):
|
|
\"\"\"
|
|
{{ object.verbose_name }} 接口
|
|
\"\"\"
|
|
|
|
queryset = {{object.class_name}}.objects.all()
|
|
serializer_class = {{ object.class_name}}Serializer
|
|
filterset_class = {{ object.class_name }}FilterSet
|
|
{% if exportData.canExport %}
|
|
export_download_filename = "{{exportData.export_download_filename}}"
|
|
export_field_dict = {{exportData.export_field_dict|safe}}
|
|
{% endif %}
|
|
"""
|
|
context = Context({'object': object,'exportData':exportData})
|
|
return Template(viewset_code).render(context) |