接口测试完毕
This commit is contained in:
parent
d68418d23c
commit
b5e961bc64
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-19 00:11
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ability', '0026_qactionitem_qaction'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='qaction',
|
||||||
|
name='qtask',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ability.QTask'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-19 00:32
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ability', '0027_auto_20220519_0811'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='grade',
|
||||||
|
field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='等级'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='level',
|
||||||
|
field=models.CharField(blank=True, max_length=10, null=True, verbose_name='等级'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='name',
|
||||||
|
field=models.CharField(blank=True, max_length=20, null=True, verbose_name='资质名称'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-19 00:33
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0020_auto_20220513_0926'),
|
||||||
|
('ability', '0028_auto_20220519_0832'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='citys',
|
||||||
|
field=models.ManyToManyField(blank=True, null=True, related_name='quali_citys', to='system.City', verbose_name='备案城市'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-19 00:34
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0020_auto_20220513_0926'),
|
||||||
|
('ability', '0029_auto_20220519_0833'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='citys',
|
||||||
|
field=models.ManyToManyField(blank=True, related_name='quali_citys', to='system.City', verbose_name='备案城市'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-19 01:03
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ability', '0030_auto_20220519_0834'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='grade',
|
||||||
|
field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='等级1'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='level',
|
||||||
|
field=models.CharField(blank=True, max_length=10, null=True, verbose_name='等级2'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='quali',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('CMA', 'CMA'), ('CNAS', 'CNAS'), ('OTHER', 'OTHER')], max_length=10, verbose_name='资质类型'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 3.0.5 on 2022-05-19 01:24
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('ability', '0031_auto_20220519_0903'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='qactionitem',
|
||||||
|
name='action',
|
||||||
|
field=models.CharField(choices=[('update', '更新'), ('citys:add', '新增备案城市'), ('citys:remove', '移除备案城市')], default='update', max_length=20, verbose_name='操作类型'),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -146,14 +146,14 @@ class Quali(CommonAModel):
|
||||||
(30, '市级')
|
(30, '市级')
|
||||||
)
|
)
|
||||||
org = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='所属单位')
|
org = models.ForeignKey(Organization, on_delete=models.CASCADE, verbose_name='所属单位')
|
||||||
name = models.CharField('资质名称', max_length=20)
|
name = models.CharField('资质名称', max_length=20, null=True, blank=True)
|
||||||
type = models.PositiveSmallIntegerField('资质类型', choices=QUALI_TYPE_CHOICES)
|
type = models.CharField('资质类型', choices=QUALI_TYPE_CHOICES, max_length=10)
|
||||||
grade = models.PositiveSmallIntegerField('等级')
|
grade = models.PositiveSmallIntegerField('等级1', null=True, blank=True)
|
||||||
scope = models.TextField('范围', null=True, blank=True)
|
scope = models.TextField('范围', null=True, blank=True)
|
||||||
level = models.CharField('等级', max_length=10)
|
level = models.CharField('等级2', max_length=10, null=True, blank=True)
|
||||||
province = models.ForeignKey(Province, on_delete=models.SET_NULL, null=True, blank=True)
|
province = models.ForeignKey(Province, on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
city = models.ForeignKey(City, on_delete=models.SET_NULL, null=True, blank=True, related_name='quali_city')
|
city = models.ForeignKey(City, on_delete=models.SET_NULL, null=True, blank=True, related_name='quali_city')
|
||||||
citys = models.ManyToManyField(City, verbose_name='备案城市', related_name='quali_citys')
|
citys = models.ManyToManyField(City, verbose_name='备案城市', related_name='quali_citys', blank=True)
|
||||||
description = models.TextField('描述', null=True, blank=True)
|
description = models.TextField('描述', null=True, blank=True)
|
||||||
qualilib = models.ForeignKey(QualiLib, verbose_name='关联资质库',
|
qualilib = models.ForeignKey(QualiLib, verbose_name='关联资质库',
|
||||||
null=True, blank=True, on_delete=models.SET_NULL)
|
null=True, blank=True, on_delete=models.SET_NULL)
|
||||||
|
|
@ -205,7 +205,7 @@ class QAction(CommonBModel):
|
||||||
afield = models.ForeignKey(Dict, null=True, blank=True, verbose_name='所属领域',
|
afield = models.ForeignKey(Dict, null=True, blank=True, verbose_name='所属领域',
|
||||||
on_delete=models.CASCADE, related_name='quali_afield')
|
on_delete=models.CASCADE, related_name='quali_afield')
|
||||||
num = models.PositiveIntegerField('新增能力数量', null=True, blank=True)
|
num = models.PositiveIntegerField('新增能力数量', null=True, blank=True)
|
||||||
qtask = models.ForeignKey(QOrg, on_delete=models.CASCADE)
|
qtask = models.ForeignKey(QTask, on_delete=models.CASCADE)
|
||||||
value1 = JSONField('值1', null=True, blank=True, default=dict)
|
value1 = JSONField('值1', null=True, blank=True, default=dict)
|
||||||
value2 = JSONField('值2', null=True, blank=True, default=dict)
|
value2 = JSONField('值2', null=True, blank=True, default=dict)
|
||||||
confirmed = models.BooleanField('是否确认',default=False)
|
confirmed = models.BooleanField('是否确认',default=False)
|
||||||
|
|
@ -217,7 +217,7 @@ class QActionItem(BaseModel):
|
||||||
('citys:add', '新增备案城市'),
|
('citys:add', '新增备案城市'),
|
||||||
('citys:remove', '移除备案城市'),
|
('citys:remove', '移除备案城市'),
|
||||||
)
|
)
|
||||||
action = models.PositiveSmallIntegerField('操作类型', null=True, blank=True, choices=QACTIONITEM_CHOICE)
|
action = models.CharField('操作类型', max_length=20, choices=QACTIONITEM_CHOICE)
|
||||||
field = models.CharField('变动字段', max_length=20)
|
field = models.CharField('变动字段', max_length=20)
|
||||||
value1 = JSONField('原值', null=True, blank=True, default=dict)
|
value1 = JSONField('原值', null=True, blank=True, default=dict)
|
||||||
value2 = JSONField('新值', null=True, blank=True, default=dict)
|
value2 = JSONField('新值', null=True, blank=True, default=dict)
|
||||||
|
|
|
||||||
|
|
@ -23,31 +23,31 @@ class QualiListSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class QTaskCreateUpdateSerializer(serializers.ModelSerializer):
|
class QTaskCreateUpdateSerializer(serializers.ModelSerializer):
|
||||||
orgs = serializers.PrimaryKeyRelatedField(label='上报公司ID列表',
|
orgs = serializers.PrimaryKeyRelatedField(label='上报公司ID列表',
|
||||||
queryset = Organization.objects.all(), many=True)
|
queryset = Organization.objects.all(), many=True, write_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = QTask
|
model = QTask
|
||||||
fields = ['name', 'end_date', 'orgs']
|
fields = ['name', 'end_date', 'orgs']
|
||||||
|
|
||||||
@transaction.atomic
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
orgs = validated_data.pop('orgs')
|
with transaction.atomic():
|
||||||
validated_data['state'] = '待发布'
|
orgs = validated_data.pop('orgs')
|
||||||
instance = super().create(validated_data)
|
validated_data['state'] = '待发布'
|
||||||
for i in orgs:
|
instance = super().create(validated_data)
|
||||||
QOrg.objects.get_or_create(qtask=instance, org=i,
|
for i in orgs:
|
||||||
defaults={'qtask': instance, 'org': i})
|
QOrg.objects.get_or_create(qtask=instance, org=i,
|
||||||
return instance
|
defaults={'qtask': instance, 'org': i})
|
||||||
|
return instance
|
||||||
|
|
||||||
@transaction.atomic
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
if instance.state == '已关闭':
|
with transaction.atomic():
|
||||||
raise ParseError('任务已关闭,不可更改')
|
if instance.state == '已关闭':
|
||||||
orgs = validated_data.pop('orgs')
|
raise ParseError('任务已关闭,不可更改')
|
||||||
instance = super().update(instance, validated_data)
|
orgs = validated_data.pop('orgs')
|
||||||
for i in orgs:
|
instance = super().update(instance, validated_data)
|
||||||
QOrg.objects.get_or_create(qtask=instance, org=i,
|
for i in orgs:
|
||||||
defaults={'qtask': instance, 'org': i})
|
QOrg.objects.get_or_create(qtask=instance, org=i,
|
||||||
return instance
|
defaults={'qtask': instance, 'org': i})
|
||||||
|
return instance
|
||||||
|
|
||||||
|
|
||||||
class QTaskListSerializer(serializers.ModelSerializer):
|
class QTaskListSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -93,16 +93,18 @@ class QActionServiceSerializer(serializers.ModelSerializer):
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
class QualiCreateSerializer(serializers.ModelSerializer):
|
class QualiCreateSerializer(serializers.ModelSerializer):
|
||||||
citys = serializers.PrimaryKeyRelatedField(queryset=City.objects.all(), many=True, label='城市ID列表')
|
citys = serializers.ListField(child=serializers.IntegerField(), label='城市ID列表')
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Quali
|
model = Quali
|
||||||
fields = ['name', 'type', 'grade', 'scope', 'level', 'province', 'city', 'description', 'citys']
|
fields = ['name', 'type', 'grade', 'scope', 'level', 'province', 'city', 'description', 'citys']
|
||||||
|
|
||||||
|
|
||||||
class QualiUpdateSerializer(serializers.ModelSerializer):
|
class QualiUpdateSerializer(serializers.ModelSerializer):
|
||||||
citys = serializers.PrimaryKeyRelatedField(queryset=City.objects.all(), many=True, label='城市ID列表')
|
citys = serializers.ListField(child=serializers.IntegerField(), label='城市ID列表')
|
||||||
|
id = serializers.IntegerField(label='修改资质的ID')
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Quali
|
model = Quali
|
||||||
fields = ['name', 'type', 'grade', 'scope', 'level', 'province', 'city', 'description', 'id', 'citys']
|
fields = ['scope', 'level', 'description', 'id', 'citys']
|
||||||
|
|
||||||
class QualiSerializer(serializers.ModelSerializer):
|
class QualiSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
@ -114,9 +116,11 @@ class QActionQualiCreateSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = QAction
|
model = QAction
|
||||||
fields = ['qtask', 'value2']
|
fields = ['qtask', 'value2']
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
validated_data['action'] = 'quali:create'
|
validated_data['action'] = 'quali:create'
|
||||||
|
if validated_data['value2']['type'] in ['CMA', 'CNAS']:
|
||||||
|
validated_data['value2']['name'] = validated_data['value2']['type']
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
class QActionQualiUpdateSerializer(serializers.ModelSerializer):
|
class QActionQualiUpdateSerializer(serializers.ModelSerializer):
|
||||||
|
|
@ -126,7 +130,7 @@ class QActionQualiUpdateSerializer(serializers.ModelSerializer):
|
||||||
fields = ['qtask', 'value2']
|
fields = ['qtask', 'value2']
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
validated_data['action'] = 'quali:create'
|
validated_data['action'] = 'quali:update'
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
class QActionACreateSerializer(serializers.ModelSerializer):
|
class QActionACreateSerializer(serializers.ModelSerializer):
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,12 @@ from rest_framework.viewsets import GenericViewSet
|
||||||
from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin
|
from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from apps.ability.models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib
|
from apps.ability.models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib
|
||||||
from apps.ability.serializers_qtask import QActionDetailSerializer, QActionListSerializer, QActionQualiCreateSerializer, QActionQualiUpdateSerializer, QActionServiceSerializer, QOrgListSerializer, QTaskCreateUpdateSerializer, QTaskListSerializer, QualiCreateSerializer, QualiLibListSerializer, QualiListSerializer, QualiSerializer, QualiUpdateSerializer
|
from apps.ability.serializers_qtask import QActionACreateSerializer, QActionDetailSerializer, QActionListSerializer, QActionQualiCreateSerializer, QActionQualiUpdateSerializer, QActionServiceSerializer, QOrgListSerializer, QTaskCreateUpdateSerializer, QTaskListSerializer, QualiCreateSerializer, QualiLibListSerializer, QualiListSerializer, QualiSerializer, QualiUpdateSerializer
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from apps.system.mixins import CreateUpdateCustomMixin
|
from apps.system.mixins import CreateUpdateCustomMixin
|
||||||
|
from apps.system.models import City
|
||||||
from utils.pagination import PageOrNot
|
from utils.pagination import PageOrNot
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
@ -26,8 +27,24 @@ class QualiViewSet(ListModelMixin, GenericViewSet):
|
||||||
search_fields = ['name', 'type', 'grade']
|
search_fields = ['name', 'type', 'grade']
|
||||||
ordering = ['org__sort']
|
ordering = ['org__sort']
|
||||||
|
|
||||||
|
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
||||||
|
def my(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
我的资质
|
||||||
|
"""
|
||||||
|
user = self.request.user
|
||||||
|
queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept))
|
||||||
|
|
||||||
|
page = self.paginate_queryset(queryset)
|
||||||
|
if page is not None:
|
||||||
|
serializer = self.get_serializer(page, many=True)
|
||||||
|
return self.get_paginated_response(serializer.data)
|
||||||
|
|
||||||
|
serializer = self.get_serializer(queryset, many=True)
|
||||||
|
return Response(serializer.data)
|
||||||
|
|
||||||
class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, UpdateModelMixin, GenericViewSet):
|
class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, UpdateModelMixin, GenericViewSet):
|
||||||
perms_map = {'get': 'qtask_view', 'post': 'qtask_create'}
|
perms_map = {'get': 'qtask_view', 'post': 'qtask_create', 'put': 'qtask_update'}
|
||||||
queryset = QTask.objects.all()
|
queryset = QTask.objects.all()
|
||||||
serializer_class = QTaskListSerializer
|
serializer_class = QTaskListSerializer
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
@ -37,7 +54,7 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up
|
||||||
return QTaskCreateUpdateSerializer
|
return QTaskCreateUpdateSerializer
|
||||||
return super().get_serializer_class()
|
return super().get_serializer_class()
|
||||||
|
|
||||||
@action(methods=['put'], detail=True, perms_map = {'put':'qtask_start'})
|
@action(methods=['put'], detail=True, perms_map = {'put':'qtask_start'}, serializer_class=serializers.Serializer)
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def start(self, request, *args, **kwargs):
|
def start(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
@ -47,7 +64,6 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up
|
||||||
if obj.state == '待发布':
|
if obj.state == '待发布':
|
||||||
obj.state = '进行中'
|
obj.state = '进行中'
|
||||||
obj.save()
|
obj.save()
|
||||||
QOrg.objects.filter(qtask=obj).update(state='待报送')
|
|
||||||
return Response()
|
return Response()
|
||||||
return Response('任务状态错误', status=status.HTTP_400_BAD_REQUEST)
|
return Response('任务状态错误', status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
|
@ -58,13 +74,13 @@ class QOrgViewSet(ListModelMixin, GenericViewSet):
|
||||||
serializer_class = QOrgListSerializer
|
serializer_class = QOrgListSerializer
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, perms_map = {'post':'qtask_my'})
|
@action(methods=['get'], detail=False, perms_map = {'get':'qtask_my'})
|
||||||
def my(self, request, *args, **kwargs):
|
def my(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
我的报送任务
|
我的报送任务
|
||||||
"""
|
"""
|
||||||
user = self.request.user
|
user = self.request.user
|
||||||
queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept))
|
queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept).exclude(qtask__state='待发布'))
|
||||||
|
|
||||||
page = self.paginate_queryset(queryset)
|
page = self.paginate_queryset(queryset)
|
||||||
if page is not None:
|
if page is not None:
|
||||||
|
|
@ -81,7 +97,6 @@ def cal_count(qtask, org):
|
||||||
qorg.count_confirmed = qs.filter(confirmed=True).count()
|
qorg.count_confirmed = qs.filter(confirmed=True).count()
|
||||||
qorg.save()
|
qorg.save()
|
||||||
|
|
||||||
|
|
||||||
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet):
|
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet):
|
||||||
perms_map = {'get': 'qtask_view'}
|
perms_map = {'get': 'qtask_view'}
|
||||||
queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept')
|
queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept')
|
||||||
|
|
@ -95,7 +110,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
return QActionDetailSerializer
|
return QActionDetailSerializer
|
||||||
return super().get_serializer_class()
|
return super().get_serializer_class()
|
||||||
|
|
||||||
@action(methods=['get'], detail=False, perms_map = {'post':'qaction_my'})
|
@action(methods=['get'], detail=False, perms_map = {'get':'qaction_my'})
|
||||||
def my(self, request, *args, **kwargs):
|
def my(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
我的报送操作
|
我的报送操作
|
||||||
|
|
@ -144,7 +159,6 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
serializer.save(create_by=user, belong_dept=user.dept)
|
serializer.save(create_by=user, belong_dept=user.dept)
|
||||||
vdata = serializer.validated_data
|
vdata = serializer.validated_data
|
||||||
cal_count(vdata['qtask'], user.dept)
|
cal_count(vdata['qtask'], user.dept)
|
||||||
# 更新资质库
|
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
@action(methods=['post'], detail=False,
|
@action(methods=['post'], detail=False,
|
||||||
|
|
@ -157,13 +171,30 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
user = request.user
|
user = request.user
|
||||||
serializer = self.get_serializer(data=request.data)
|
serializer = self.get_serializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
serializer.save(create_by=user, belong_dept=user.dept)
|
obj = serializer.save(create_by=user, belong_dept=user.dept)
|
||||||
vdata = serializer.validated_data
|
vdata = serializer.validated_data
|
||||||
|
# 比较差别
|
||||||
|
quali = Quali.objects.get(id=obj.value2.get('id'))
|
||||||
|
old_data = QualiSerializer(instance=quali).data
|
||||||
|
obj.value1 = old_data
|
||||||
|
for k, v in obj.value2.items():
|
||||||
|
if v != old_data[k]:
|
||||||
|
QActionItem.objects.create(action='update', field=k, value1=old_data[k], value2=v, qaction=obj)
|
||||||
|
if k == 'citys':
|
||||||
|
old_citys = set(old_data['citys'])
|
||||||
|
new_citys = set(v)
|
||||||
|
removes = old_citys.difference(new_citys)
|
||||||
|
adds = new_citys.difference(old_citys)
|
||||||
|
for i in removes:
|
||||||
|
QActionItem.objects.create(action='city:remove', field='citys', city=City.objects.get(id=i), qaction=obj)
|
||||||
|
for i in adds:
|
||||||
|
QActionItem.objects.create(action='city:add', field='citys', city=City.objects.get(id=i), qaction=obj)
|
||||||
|
|
||||||
cal_count(vdata['qtask'], user.dept)
|
cal_count(vdata['qtask'], user.dept)
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
@action(methods=['post'], detail=False,
|
@action(methods=['post'], detail=False,
|
||||||
perms_map = {'post':'ability_create'}, serializer_class=QActionQualiCreateSerializer)
|
perms_map = {'post':'ability_create'}, serializer_class=QActionACreateSerializer)
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def ability_create(self, request, *args, **kwargs):
|
def ability_create(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
@ -187,36 +218,33 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
if obj.confirmed:
|
if obj.confirmed:
|
||||||
raise ParseError('该动作已确认')
|
raise ParseError('该动作已确认')
|
||||||
if obj.action == 'service.update':
|
if obj.action == 'service:update':
|
||||||
org = obj.org
|
org = obj.belong_dept
|
||||||
org.service = obj.service
|
org.service = obj.value2
|
||||||
org.save()
|
org.save()
|
||||||
elif obj.action == 'quali:create':
|
elif obj.action == 'quali:create':
|
||||||
serializer = QualiCreateSerializer(data=obj.value2)
|
serializer = QualiCreateSerializer(data=obj.value2)
|
||||||
serializer.save(org=obj.belong_dept, create_by=obj.create_by)
|
serializer.is_valid(raise_exception=True)
|
||||||
|
instance = serializer.save(org=obj.belong_dept, create_by=obj.create_by)
|
||||||
|
if instance.type == 'OTHER':
|
||||||
|
qualiLib, _ = QualiLib.objects.get_or_create(name=instance.name)
|
||||||
|
levels = qualiLib.levels
|
||||||
|
levels.append(instance.level)
|
||||||
|
le = list(set(levels))
|
||||||
|
qualiLib.levels = le
|
||||||
|
qualiLib.save()
|
||||||
|
instance.qualilib = qualiLib
|
||||||
|
instance.save()
|
||||||
elif obj.action == 'quali:update':
|
elif obj.action == 'quali:update':
|
||||||
quali = Quali.objects.get(id=obj.value2.get('id'))
|
quali = Quali.objects.get(id=obj.value2.get('id'))
|
||||||
old_data = QualiSerializer(instance=quali).data
|
|
||||||
obj.value1 = old_data
|
|
||||||
s = QualiUpdateSerializer(instance=quali, data=obj.value2)
|
s = QualiUpdateSerializer(instance=quali, data=obj.value2)
|
||||||
|
s.is_valid(raise_exception=True)
|
||||||
s.save(update_by=obj.create_by)
|
s.save(update_by=obj.create_by)
|
||||||
# 比较差别
|
|
||||||
for k, v in obj.value2.items():
|
|
||||||
if v != old_data[k]:
|
|
||||||
QActionItem.objects.create(action='update', field=k, vaule1=old_data[k], value2=v, qaction=obj)
|
|
||||||
if k == 'citys':
|
|
||||||
old_citys = set(old_data['citys'])
|
|
||||||
new_citys = set(v)
|
|
||||||
removes = old_citys.difference(new_citys)
|
|
||||||
adds = new_citys.difference(old_citys)
|
|
||||||
for i in removes:
|
|
||||||
QAction.objects.create(action='city:remove', field='citys', city=i, qaction=obj)
|
|
||||||
for i in adds:
|
|
||||||
QAction.objects.create(action='city:add', field='citys', city=i, qaction=obj)
|
|
||||||
elif obj.action == 'ability:create':
|
elif obj.action == 'ability:create':
|
||||||
pass
|
pass
|
||||||
obj.confirmed = True
|
obj.confirmed = True
|
||||||
obj.save()
|
obj.save()
|
||||||
|
cal_count(obj.qtask, obj.belong_dept)
|
||||||
return Response(status=status.HTTP_200_OK)
|
return Response(status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue