作者 wanweibin

update

  1 +# Generated by Django 3.1.1 on 2020-10-14 06:41
  2 +
  3 +from django.conf import settings
  4 +from django.db import migrations, models
  5 +import django.db.models.deletion
  6 +
  7 +
  8 +class Migration(migrations.Migration):
  9 +
  10 + dependencies = [
  11 + migrations.swappable_dependency(settings.AUTH_USER_MODEL),
  12 + ('project', '0002_auto_20201008_1634'),
  13 + ]
  14 +
  15 + operations = [
  16 + migrations.AlterModelOptions(
  17 + name='project',
  18 + options={'ordering': ('is_done',)},
  19 + ),
  20 + migrations.AlterField(
  21 + model_name='auditor',
  22 + name='user',
  23 + field=models.ForeignKey(choices=[(2, '邓望明'), (3, '杜波')], on_delete=django.db.models.deletion.CASCADE, related_name='aud', to=settings.AUTH_USER_MODEL, verbose_name='审批人员'),
  24 + ),
  25 + migrations.AlterField(
  26 + model_name='project',
  27 + name='is_pass',
  28 + field=models.BooleanField(blank=True, null=True, verbose_name='是否通过'),
  29 + ),
  30 + ]
  1 +# Generated by Django 3.1.1 on 2020-10-14 07:13
  2 +
  3 +from django.db import migrations
  4 +
  5 +
  6 +class Migration(migrations.Migration):
  7 +
  8 + dependencies = [
  9 + ('project', '0003_auto_20201014_1441'),
  10 + ]
  11 +
  12 + operations = [
  13 + migrations.AlterModelOptions(
  14 + name='result',
  15 + options={'ordering': ('pk',)},
  16 + ),
  17 + ]
@@ -38,7 +38,7 @@ class Project(models.Model): @@ -38,7 +38,7 @@ class Project(models.Model):
38 attachments = models.CharField(max_length=800, default="", verbose_name="附件地址") 38 attachments = models.CharField(max_length=800, default="", verbose_name="附件地址")
39 auditor = models.ManyToManyField(Auditor, related_name="project_auditor", blank=True, verbose_name="审核人员") 39 auditor = models.ManyToManyField(Auditor, related_name="project_auditor", blank=True, verbose_name="审核人员")
40 is_done = models.BooleanField(default=False, blank=True, verbose_name="是否完成") 40 is_done = models.BooleanField(default=False, blank=True, verbose_name="是否完成")
41 - is_pass = models.BooleanField(default=False, blank=True, verbose_name="是否通过") 41 + is_pass = models.BooleanField(null=True, blank=True, verbose_name="是否通过")
42 create_time = models.DateTimeField(auto_now_add=True) 42 create_time = models.DateTimeField(auto_now_add=True)
43 creator = models.ForeignKey(User, related_name="project_creator", on_delete=models.CASCADE, verbose_name="创建人员") 43 creator = models.ForeignKey(User, related_name="project_creator", on_delete=models.CASCADE, verbose_name="创建人员")
44 44
@@ -46,7 +46,7 @@ class Project(models.Model): @@ -46,7 +46,7 @@ class Project(models.Model):
46 return self.category + '-' + self.model_type 46 return self.category + '-' + self.model_type
47 47
48 class Meta: 48 class Meta:
49 - ordering = ('is_done', 'create_time') 49 + ordering = ('is_done',)
50 50
51 51
52 class Result(models.Model): 52 class Result(models.Model):
@@ -65,5 +65,5 @@ class Result(models.Model): @@ -65,5 +65,5 @@ class Result(models.Model):
65 return self.is_accept 65 return self.is_accept
66 66
67 class Meta: 67 class Meta:
68 - ordering = ('-create_time', ) 68 + ordering = ('pk', )
69 69
@@ -16,13 +16,14 @@ class AuditorSerializer(serializers.ModelSerializer): @@ -16,13 +16,14 @@ class AuditorSerializer(serializers.ModelSerializer):
16 16
17 class ProjectSerializer(serializers.ModelSerializer): 17 class ProjectSerializer(serializers.ModelSerializer):
18 result = serializers.ReadOnlyField() 18 result = serializers.ReadOnlyField()
19 - cur_auditor = serializers.ReadOnlyField() 19 + # cur_auditor = serializers.ReadOnlyField()
  20 + creator_name = serializers.ReadOnlyField()
20 21
21 class Meta: 22 class Meta:
22 model = Project 23 model = Project
23 fields = ( 24 fields = (
24 - 'id', 'result', 'creator', 'category', 'model_type', 'market_share_analysis', 'context_analysis',  
25 - 'attachments', 'create_time', "cur_auditor" 25 + 'id', 'result', 'creator_name', 'category', 'model_type', 'market_share_analysis', 'context_analysis',
  26 + 'attachments', 'create_time', "is_done", "is_pass"
26 ) 27 )
27 depth = 1 28 depth = 1
28 29
@@ -54,13 +54,22 @@ class ProjectDetail(RetrieveAPIView): @@ -54,13 +54,22 @@ class ProjectDetail(RetrieveAPIView):
54 54
55 def get(self, request, *args, **kwargs): 55 def get(self, request, *args, **kwargs):
56 obj = self.get_object() 56 obj = self.get_object()
57 - auditor_len = Result.objects.filter(project=obj).count()  
58 - if auditor_len == 2:  
59 - obj.cur_auditor = "已完结"  
60 - elif auditor_len == 1:  
61 - obj.cur_auditor = AUDITORS[1][1]  
62 - else:  
63 - obj.cur_auditor = AUDITORS[0][1] 57 + obj.creator_name = obj.creator.username
  58 + obj.result = []
  59 + auditors = Auditor.objects.all()
  60 + # result = Result.objects.filter(project=obj)
  61 + for i in auditors:
  62 + obj.result.append({
  63 + "auditor": i.user.username,
  64 + "is_accept": i.result_auditor.filter(project=obj).values_list('is_accept', flat=True).first()
  65 + })
  66 + # auditor_len = Result.objects.filter(project=obj).count()
  67 + # if auditor_len == 2:
  68 + # obj.cur_auditor = "已完结"
  69 + # elif auditor_len == 1:
  70 + # obj.cur_auditor = AUDITORS[1][1]
  71 + # else:
  72 + # obj.cur_auditor = AUDITORS[0][1]
64 return response(ProjectSerializer(obj).data) 73 return response(ProjectSerializer(obj).data)
65 74
66 75
@@ -109,7 +118,7 @@ class AuditProject(UpdateAPIView): @@ -109,7 +118,7 @@ class AuditProject(UpdateAPIView):
109 desc = "产品立项流程所有审批已完成" if full_audit_done else f"{request.user.username}已审批完成" 118 desc = "产品立项流程所有审批已完成" if full_audit_done else f"{request.user.username}已审批完成"
110 if full_audit_done: 119 if full_audit_done:
111 obj.is_done = True 120 obj.is_done = True
112 - obj.is_pass = request.data.get('is_accept') 121 + obj.is_pass = bool(request.data.get('is_accept'))
113 else: 122 else:
114 if not accept_param: 123 if not accept_param:
115 obj.is_done = True 124 obj.is_done = True
@@ -130,22 +139,12 @@ class AuditProjectsList(ListAPIView): @@ -130,22 +139,12 @@ class AuditProjectsList(ListAPIView):
130 permission_classes = (IsAuthenticated, IsAdminUser) 139 permission_classes = (IsAuthenticated, IsAdminUser)
131 140
132 def get_queryset(self): 141 def get_queryset(self):
133 - # auditor = Auditor.objects.get(user=self.request.user)  
134 - # sql = Project.objects.filter(  
135 - # auditor__user_id=self.request.user.id,  
136 - # auditor__result_auditor__exact=auditor) \  
137 - # .order_by('-is_done')  
138 data = Project.objects.filter(auditor__user_id=self.request.user.id).order_by('-is_done') 142 data = Project.objects.filter(auditor__user_id=self.request.user.id).order_by('-is_done')
139 for item in data: 143 for item in data:
140 result = item.result_project.filter(auditor__user_id=self.request.user.id).values('is_accept').first() 144 result = item.result_project.filter(auditor__user_id=self.request.user.id).values('is_accept').first()
141 - # item.creator = item.creator.username 145 + item.creator_name = item.creator.username
142 item.result = True if result else False 146 item.result = True if result else False
143 - # print(data.query)  
144 return data 147 return data
145 -#  
146 -# def get(self, request, *args, **kwargs):  
147 -# qs = self.get_queryset(user=request.user, **kwargs)  
148 -# return response(ProjectSerializer(qs, many=True).data)  
149 148
150 149
151 class CheckAuth(APIView): 150 class CheckAuth(APIView):