This commit is contained in:
shijing 2022-06-06 17:04:10 +08:00
commit 1bcdff9146
6 changed files with 85 additions and 15 deletions

View File

@ -0,0 +1,33 @@
# Generated by Django 3.0.5 on 2022-06-06 05:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ability', '0032_auto_20220519_0924'),
]
operations = [
migrations.AddField(
model_name='qaction',
name='num2',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='新增参数数量'),
),
migrations.AddField(
model_name='qaction',
name='num3',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='新增方法标准数量'),
),
migrations.AddField(
model_name='qaction',
name='num4',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='新增产品标准数量'),
),
migrations.AlterField(
model_name='qaction',
name='num',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='新增对象数量'),
),
]

View File

@ -0,0 +1,20 @@
# Generated by Django 3.0.5 on 2022-06-06 05:40
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('system', '0021_auto_20220530_1520'),
('ability', '0033_auto_20220606_1323'),
]
operations = [
migrations.AddField(
model_name='quali',
name='file',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.File', verbose_name='关联文件'),
),
]

View File

@ -158,6 +158,8 @@ class Quali(CommonAModel):
qualilib = models.ForeignKey(QualiLib, verbose_name='关联资质库',
null=True, blank=True, on_delete=models.SET_NULL)
end_date = models.DateField('截至日期', null=True, blank=True)
file = models.ForeignKey(File, null=True, blank=True, verbose_name='关联文件', on_delete=models.CASCADE)
class QTask(CommonBModel):
@ -204,7 +206,10 @@ class QAction(CommonBModel):
on_delete=models.CASCADE, related_name='quali_atype')
afield = models.ForeignKey(Dict, null=True, blank=True, verbose_name='所属领域',
on_delete=models.CASCADE, related_name='quali_afield')
num = models.PositiveIntegerField('新增能力数量', null=True, blank=True)
num = models.PositiveIntegerField('新增对象数量', null=True, blank=True)
num2 = models.PositiveIntegerField('新增参数数量', null=True, blank=True)
num3 = models.PositiveIntegerField('新增方法标准数量', null=True, blank=True)
num4 = models.PositiveIntegerField('新增产品标准数量', null=True, blank=True)
qtask = models.ForeignKey(QTask, on_delete=models.CASCADE)
value1 = JSONField('值1', null=True, blank=True, default=dict)
value2 = JSONField('值2', null=True, blank=True, default=dict)

View File

@ -1,6 +1,6 @@
from rest_framework import serializers
from apps.system.models import City, Organization, Province
from apps.system.models import City, File, Organization, Province
from .models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib
from django.db import transaction
from apps.system.serializers import CitySerializer, FileSimpleSerializer, OrganizationSimpleSerializer, DictSerializer, UserSimpleSerializer
@ -17,6 +17,7 @@ class QualiListSerializer(serializers.ModelSerializer):
city_name = serializers.CharField(source='city.name', read_only=True)
org_ = OrganizationSimpleSerializer(source='org', read_only=True)
citys_ = CitySerializer(source='citys', many=True, read_only=True)
file_ = FileSimpleSerializer(source='file', read_only=True)
class Meta:
model = Quali
fields = '__all__'
@ -99,7 +100,7 @@ class QualiCreateSerializer(serializers.ModelSerializer):
citys = serializers.ListField(child=serializers.IntegerField(), label='城市ID列表')
class Meta:
model = Quali
fields = ['name', 'type', 'grade', 'scope', 'level', 'province', 'city', 'description', 'citys']
fields = ['name', 'type', 'grade', 'scope', 'level', 'province', 'city', 'description', 'citys', 'file', 'end_date']
class QualiUpdateSerializer(serializers.ModelSerializer):
@ -107,7 +108,7 @@ class QualiUpdateSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(label='修改资质的ID')
class Meta:
model = Quali
fields = ['scope', 'level', 'description', 'id', 'citys']
fields = ['scope', 'level', 'description', 'id', 'citys', 'file', 'end_date']
class QualiSerializer(serializers.ModelSerializer):
class Meta:
@ -122,13 +123,16 @@ class QActionQualiCreateSerializer(serializers.ModelSerializer):
def create(self, validated_data):
validated_data['action'] = 'quali:create'
if validated_data['value2']['type'] in ['CMA', 'CNAS']:
validated_data['value2']['name'] = validated_data['value2']['type']
value2 = validated_data['value2']
if value2['province']:
value2['province'] = value2['province'].id
if value2['city']:
value2['city'] = value2['city'].id
value2 = self.data['value2']
if value2['type'] in ['CMA', 'CNAS']:
value2['name'] = value2['type']
validated_data['value2'] = value2
# if value2.get('province', None):
# value2['province'] = value2['province'].id
# if value2.get('city', None):
# value2['city'] = value2['city'].id
# if value2.get('file', None):
# value2['file'] = value2['file'].id
return super().create(validated_data)
class QActionQualiUpdateSerializer(serializers.ModelSerializer):
@ -139,12 +143,13 @@ class QActionQualiUpdateSerializer(serializers.ModelSerializer):
def create(self, validated_data):
validated_data['action'] = 'quali:update'
validated_data['value2'] = self.data['value2']
return super().create(validated_data)
class QActionACreateSerializer(serializers.ModelSerializer):
class Meta:
model = QAction
fields = ['atype', 'afield', 'file', 'num', 'qtask']
fields = ['atype', 'afield', 'file', 'num', 'qtask', 'num2', 'num3', 'num4']
extra_kwargs = {'atype': {'required': True}, 'afield': {'required': True}, 'file': {'required': True}}
def create(self, validated_data):
@ -161,6 +166,11 @@ class QActionItemSerializer(serializers.ModelSerializer):
class QActionDetailSerializer(serializers.ModelSerializer):
update_detail = QActionItemSerializer(source='items_qaction', many=True, read_only=True)
value2 = serializers.SerializerMethodField()
quali_name = serializers.CharField(source='quali.name', read_only=True)
atype_name = serializers.CharField(source='atype.name', read_only=True)
afield_name = serializers.CharField(source='afield.name', read_only=True)
file_ = FileSimpleSerializer(source='file', read_only=True)
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
class Meta:
model = QAction
fields ='__all__'
@ -174,4 +184,6 @@ class QActionDetailSerializer(serializers.ModelSerializer):
value2['city_name'] = City.objects.get(id=value2['city']).name
if value2.get('citys', None):
value2['citys_'] = CitySerializer(instance=City.objects.filter(id__in=value2['citys']), many=True).data
if value2.get('file', None):
value2['file_'] = FileSimpleSerializer(instance=File.objects.get(id=value2['file'])).data
return value2

View File

@ -22,7 +22,7 @@ class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet):
class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
perms_map = {'get': '*'}
queryset = Quali.objects.select_related('org', 'province', 'city').prefetch_related('citys')
queryset = Quali.objects.select_related('org', 'province', 'city', 'file').prefetch_related('citys')
serializer_class = QualiListSerializer
search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description']
ordering = ['org', 'org__sort', 'create_time']

View File

@ -48,8 +48,8 @@ class VideoViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
search_fields = ['name', 'category__name', 'description']
# filterset_fields = ['category']
serializer_class = VideoSerializer
ordering_fields = ['create_time', 'sort_str', 'views', 'viewsp']
ordering = ['sort_str', '-create_time']
ordering_fields = ['category__sort', 'sort_str', 'views', 'viewsp']
ordering = ['category__sort', 'sort_str']
def get_serializer_class(self):
if self.action in ['list', 'retrieve']: