Merge branch 'master' of https://e.coding.net/ctcdevteam/cnas
This commit is contained in:
commit
14a563aac0
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.0.5 on 2020-06-24 03:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('certset', '0004_unittype_description'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='implementrule',
|
||||
name='cert_type',
|
||||
field=models.CharField(choices=[('ccc', '强制性产品认证'), ('pv', '自愿性产品认证'), ('sys', '管理体系认证')], default='pv', max_length=50, verbose_name='所属认证类型'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.0.5 on 2020-06-24 05:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('certset', '0005_implementrule_cert_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='implementrule',
|
||||
name='path',
|
||||
field=models.CharField(blank=True, max_length=1000, null=True, verbose_name='文件地址'),
|
||||
),
|
||||
]
|
|
@ -27,8 +27,16 @@ class Standard(CommonAModel):
|
|||
|
||||
class ImplementRule(CommonAModel):
|
||||
|
||||
cert_type_choices = (
|
||||
('ccc', '强制性产品认证'),
|
||||
('pv', '自愿性产品认证'),
|
||||
('sys', '管理体系认证')
|
||||
)
|
||||
|
||||
name = models.CharField('规则名称', max_length=1000)
|
||||
code = models.CharField('编号', max_length=30, unique=True)
|
||||
cert_type = models.CharField('所属认证类型', max_length=50,
|
||||
choices=cert_type_choices, default='pv')
|
||||
standards = models.ManyToManyField(Standard, blank=True, verbose_name='依据标准', related_name='implementrules_standards')
|
||||
ccc_list = models.ManyToManyField(Dict, blank=True, verbose_name='CCC产品认证目录', related_name= 'implementrule_ccc_list')
|
||||
pv_scope = models.ForeignKey(Dict, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='自愿性产品认证领域', related_name= 'implementrule_pv_scope')
|
||||
|
@ -36,6 +44,7 @@ class ImplementRule(CommonAModel):
|
|||
cnas_scope = models.ManyToManyField(Dict, blank=True, verbose_name='CNAS业务范围', related_name= 'implementrule_cnas_scope')
|
||||
economy_class = models.ManyToManyField(Dict, blank=True, verbose_name='国民经济分类', related_name= 'implementrule_economy_class')
|
||||
cert_pattern = models.ManyToManyField(Dict, blank=True, verbose_name='认证模式', related_name= 'implementrule_cert_pattern')
|
||||
path = models.CharField('文件地址', max_length=1000, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '实施规则'
|
||||
|
|
|
@ -2,6 +2,8 @@ from rest_framework import serializers
|
|||
|
||||
from .models import Standard, UnitType, ImplementRule
|
||||
|
||||
from apps.system.serializers import DictSerializer
|
||||
|
||||
|
||||
class StandardSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
@ -13,6 +15,22 @@ class ImplementRuleSerializer(serializers.ModelSerializer):
|
|||
model = ImplementRule
|
||||
fields = '__all__'
|
||||
|
||||
class ImplementRuleListSerializer(serializers.ModelSerializer):
|
||||
pv_scope = DictSerializer()
|
||||
pv_class = DictSerializer()
|
||||
cert_type = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = ImplementRule
|
||||
fields = ['id', 'code', 'name', 'cert_type', 'pv_scope', 'pv_class', 'create_time']
|
||||
@staticmethod
|
||||
def setup_eager_loading(queryset):
|
||||
""" Perform necessary eager loading of data. """
|
||||
queryset = queryset.select_related('pv_scope','pv_class')
|
||||
return queryset
|
||||
|
||||
def get_cert_type(self, obj):
|
||||
return obj.get_cert_type_display()
|
||||
|
||||
class UnitTypeSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = UnitType
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
from .models import Standard, UnitType, ImplementRule
|
||||
from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer
|
||||
from .serializers import StandardSerializer, ImplementRuleSerializer, UnitTypeSerializer, ImplementRuleListSerializer
|
||||
# Create your views here.
|
||||
|
||||
class StandardViewSet(ModelViewSet):
|
||||
|
@ -18,10 +18,22 @@ class ImplementRuleViewSet(ModelViewSet):
|
|||
'put': 'implementrule_update', 'delete': 'implementrule_delete'}
|
||||
queryset = ImplementRule.objects
|
||||
serializer_class = ImplementRuleSerializer
|
||||
search_fields = ['name', 'code']
|
||||
filterset_fields = ['pv_scope']
|
||||
search_fields = ['name', 'code', 'cert_type']
|
||||
filterset_fields = ['pv_scope', 'cert_type']
|
||||
ordering = ['-create_time']
|
||||
|
||||
def get_serializer_class(self):
|
||||
# 根据请求类型动态变更serializer
|
||||
if self.action == 'list':
|
||||
return ImplementRuleListSerializer
|
||||
return ImplementRuleSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = self.queryset
|
||||
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
||||
queryset = self.get_serializer_class().setup_eager_loading(queryset) # 性能优化
|
||||
return queryset
|
||||
|
||||
class UnitTypedViewSet(ModelViewSet):
|
||||
perms_map = {'get': '*', 'post': 'unittype_create',
|
||||
'put': 'unittype_update', 'delete': 'unittype_delete'}
|
||||
|
|
|
@ -30,10 +30,13 @@ class DictSerializer(serializers.ModelSerializer):
|
|||
"""
|
||||
数据字典序列化
|
||||
"""
|
||||
fullname = serializers.SerializerMethodField(read_only=True)
|
||||
class Meta:
|
||||
model = Dict
|
||||
fields = '__all__'
|
||||
|
||||
def get_fullname(self, obj):
|
||||
return obj.code + obj.name
|
||||
|
||||
class PositionSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
|
|
|
@ -75,7 +75,7 @@ class DictViewSet(ModelViewSet):
|
|||
perms_map = {'get': '*', 'post': 'dict_create',
|
||||
'put': 'dict_update', 'delete': 'dict_delete'}
|
||||
queryset = Dict.objects.get_queryset(all=True) # 获取全部的,包括软删除的
|
||||
filterset_fields = ['type', 'is_deleted']
|
||||
filterset_fields = ['type', 'is_deleted', 'type__code']
|
||||
serializer_class = DictSerializer
|
||||
search_fields = ['name']
|
||||
ordering_fields = ['sort']
|
||||
|
@ -83,9 +83,9 @@ class DictViewSet(ModelViewSet):
|
|||
|
||||
def paginate_queryset(self, queryset):
|
||||
"""
|
||||
如果查询参数里有type,则不分页,否则请求分页
|
||||
如果查询参数里有type或type__code,则不分页,否则请求分页
|
||||
"""
|
||||
if (self.request.query_params.get('type', None)) or (self.paginator is None):
|
||||
if (self.request.query_params.get('type__code', None)) or (self.request.query_params.get('type', None)) or (self.paginator is None):
|
||||
return None
|
||||
return self.paginator.paginate_queryset(queryset, self.request, view=self)
|
||||
|
||||
|
|
Loading…
Reference in New Issue