diff --git a/server/apps/ability/migrations/0033_auto_20220606_1323.py b/server/apps/ability/migrations/0033_auto_20220606_1323.py new file mode 100644 index 0000000..dc1ca9c --- /dev/null +++ b/server/apps/ability/migrations/0033_auto_20220606_1323.py @@ -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='新增对象数量'), + ), + ] diff --git a/server/apps/ability/migrations/0034_quali_file.py b/server/apps/ability/migrations/0034_quali_file.py new file mode 100644 index 0000000..607f617 --- /dev/null +++ b/server/apps/ability/migrations/0034_quali_file.py @@ -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='关联文件'), + ), + ] diff --git a/server/apps/ability/models.py b/server/apps/ability/models.py index fce4ce5..432b6ad 100644 --- a/server/apps/ability/models.py +++ b/server/apps/ability/models.py @@ -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) diff --git a/server/apps/ability/serializers_qtask.py b/server/apps/ability/serializers_qtask.py index c827508..9561466 100644 --- a/server/apps/ability/serializers_qtask.py +++ b/server/apps/ability/serializers_qtask.py @@ -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 \ No newline at end of file diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 56d5966..605218b 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -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'] diff --git a/server/apps/vod/views.py b/server/apps/vod/views.py index ee11e4c..89d1687 100644 --- a/server/apps/vod/views.py +++ b/server/apps/vod/views.py @@ -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']: