作者 wanweibin

update

# Generated by Django 3.1.1 on 2020-10-14 06:41
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('project', '0002_auto_20201008_1634'),
]
operations = [
migrations.AlterModelOptions(
name='project',
options={'ordering': ('is_done',)},
),
migrations.AlterField(
model_name='auditor',
name='user',
field=models.ForeignKey(choices=[(2, '邓望明'), (3, '杜波')], on_delete=django.db.models.deletion.CASCADE, related_name='aud', to=settings.AUTH_USER_MODEL, verbose_name='审批人员'),
),
migrations.AlterField(
model_name='project',
name='is_pass',
field=models.BooleanField(blank=True, null=True, verbose_name='是否通过'),
),
]
... ...
# Generated by Django 3.1.1 on 2020-10-14 07:13
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('project', '0003_auto_20201014_1441'),
]
operations = [
migrations.AlterModelOptions(
name='result',
options={'ordering': ('pk',)},
),
]
... ...
... ... @@ -38,7 +38,7 @@ class Project(models.Model):
attachments = models.CharField(max_length=800, default="", verbose_name="附件地址")
auditor = models.ManyToManyField(Auditor, related_name="project_auditor", blank=True, verbose_name="审核人员")
is_done = models.BooleanField(default=False, blank=True, verbose_name="是否完成")
is_pass = models.BooleanField(default=False, blank=True, verbose_name="是否通过")
is_pass = models.BooleanField(null=True, blank=True, verbose_name="是否通过")
create_time = models.DateTimeField(auto_now_add=True)
creator = models.ForeignKey(User, related_name="project_creator", on_delete=models.CASCADE, verbose_name="创建人员")
... ... @@ -46,7 +46,7 @@ class Project(models.Model):
return self.category + '-' + self.model_type
class Meta:
ordering = ('is_done', 'create_time')
ordering = ('is_done',)
class Result(models.Model):
... ... @@ -65,5 +65,5 @@ class Result(models.Model):
return self.is_accept
class Meta:
ordering = ('-create_time', )
ordering = ('pk', )
... ...
... ... @@ -16,13 +16,14 @@ class AuditorSerializer(serializers.ModelSerializer):
class ProjectSerializer(serializers.ModelSerializer):
result = serializers.ReadOnlyField()
cur_auditor = serializers.ReadOnlyField()
# cur_auditor = serializers.ReadOnlyField()
creator_name = serializers.ReadOnlyField()
class Meta:
model = Project
fields = (
'id', 'result', 'creator', 'category', 'model_type', 'market_share_analysis', 'context_analysis',
'attachments', 'create_time', "cur_auditor"
'id', 'result', 'creator_name', 'category', 'model_type', 'market_share_analysis', 'context_analysis',
'attachments', 'create_time', "is_done", "is_pass"
)
depth = 1
... ...
... ... @@ -54,13 +54,22 @@ class ProjectDetail(RetrieveAPIView):
def get(self, request, *args, **kwargs):
obj = self.get_object()
auditor_len = Result.objects.filter(project=obj).count()
if auditor_len == 2:
obj.cur_auditor = "已完结"
elif auditor_len == 1:
obj.cur_auditor = AUDITORS[1][1]
else:
obj.cur_auditor = AUDITORS[0][1]
obj.creator_name = obj.creator.username
obj.result = []
auditors = Auditor.objects.all()
# result = Result.objects.filter(project=obj)
for i in auditors:
obj.result.append({
"auditor": i.user.username,
"is_accept": i.result_auditor.filter(project=obj).values_list('is_accept', flat=True).first()
})
# auditor_len = Result.objects.filter(project=obj).count()
# if auditor_len == 2:
# obj.cur_auditor = "已完结"
# elif auditor_len == 1:
# obj.cur_auditor = AUDITORS[1][1]
# else:
# obj.cur_auditor = AUDITORS[0][1]
return response(ProjectSerializer(obj).data)
... ... @@ -109,7 +118,7 @@ class AuditProject(UpdateAPIView):
desc = "产品立项流程所有审批已完成" if full_audit_done else f"{request.user.username}已审批完成"
if full_audit_done:
obj.is_done = True
obj.is_pass = request.data.get('is_accept')
obj.is_pass = bool(request.data.get('is_accept'))
else:
if not accept_param:
obj.is_done = True
... ... @@ -130,22 +139,12 @@ class AuditProjectsList(ListAPIView):
permission_classes = (IsAuthenticated, IsAdminUser)
def get_queryset(self):
# auditor = Auditor.objects.get(user=self.request.user)
# sql = Project.objects.filter(
# auditor__user_id=self.request.user.id,
# auditor__result_auditor__exact=auditor) \
# .order_by('-is_done')
data = Project.objects.filter(auditor__user_id=self.request.user.id).order_by('-is_done')
for item in data:
result = item.result_project.filter(auditor__user_id=self.request.user.id).values('is_accept').first()
# item.creator = item.creator.username
item.creator_name = item.creator.username
item.result = True if result else False
# print(data.query)
return data
#
# def get(self, request, *args, **kwargs):
# qs = self.get_queryset(user=request.user, **kwargs)
# return response(ProjectSerializer(qs, many=True).data)
class CheckAuth(APIView):
... ...