Проверка подписи записи у каждого человека в списке утвердителей в Django
У меня установлен следующий класс модели:
class Moc(models.Model):
.....my other fields.....
def __str__(self):
return self.moc_title
def get_absolute_url(self):
return reverse('moc_content_update', kwargs={'pk': self.pk})
class Verifier(models.Model):
moc = models.ForeignKey(Moc, related_name='verifiers', on_delete=models.CASCADE, default='1')
verifier_group = models.CharField(max_length=36, blank=True, null=True)
verifier_name = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE,)
verify_due = models.DateField(blank=True, null=True)
def __str__(self):
return str(self.id)
def save(self, *args, **kwargs):
created = not self.pk
super().save(*args, **kwargs)
if created:
VerifierSignOff.objects.create(verifier=self)
class VerifierSignOff(models.Model):
verifier = models.OneToOneField(Verifier, related_name='verifiersignoff', blank=True, null=True, on_delete=models.CASCADE)
approve = models.BooleanField(default=False)
reject = models.BooleanField(default=False)
signoff_date = models.DateField(auto_now=True)
note = models.TextField(max_length=256, blank=True)
def __str__(self):
return str(self.id)
Мои представления настроены на создание экземпляра Moc, добавление верификаторов (всего 3 пользователя) с соответствующими VerifierSignOff и отображение его на моем шаблоне без каких-либо проблем.
Мой views.py:
def verify_coordinate_view(request, pk):
moc = get_object_or_404(Moc, pk=pk)
# I guess I need to have MOC Status logic here
return render(request, 'moc/moc_content_verification.html', context={'pk':pk, 'moc':moc, })
def verifier_signoff_view(request, pk):
verifiersignoff = VerifierSignOff.objects.get(pk=pk)
form = VerifierSignForm
if request.method == 'POST':
form = VerifierSignForm(request.POST, instance=verifiersignoff)
if form.is_valid():
form.save(commit=False)
if verifiersignoff.approve is True and verifiersignoff.reject is True:
return HttpResponseForbidden('You have either APPROVE or REJECT - operation not allowed!')
else:
form.save()
return redirect('verify_coordinate', pk=verifiersignoff.verifier.moc_id)
# return redirect('index')
else:
return render(request, 'moc/verify_signoff.html', context={'verifiersignoff': verifiersignoff, 'form': form})
Я отображаю все на своем шаблоне, т.е. я могу добавлять/удалять своих пользователей, одобрять/отклонять запись и т.д.
Моя цель - отобразить статус моего экземпляра Moc, т.е. VERIFIED (если 3oo3 пользователя одобрили запись) или REJECTED (если кто-то из 3oo3 отклонит запись, другими словами, если какой-то пользователь отклонит запись, она станет не действительной, несмотря на то, что 2 других пользователя уже одобрили ее).
Я отображаю этот процесс на моем шаблоне, используя цикл for:
мой псевдошаблон:
{% for obj in moc.verifiers.all %}
<tr style="text-align: center>
<td>---my sign-off / delete user---buttons</td>
<td>{{ forloop.counter }}{{ obj.verifier_group }}</td>
<td>{{ obj.verifier_name }}</td>
<td>{{ obj.verify_due|date:'d M Y' }}</td>
<td>
<input class="form-check-input-bg" type="checkbox" value="{{ obj.verifiersignoff.approve }}" checked onclick="return false">
</td>
<td>
<input class="form-check-input-bg" type="checkbox" value="{{ obj.verifiersignoff.reject }}" onclick="return false">
</td>
<td>{{ obj.verifiersignoff.signoff_date|date:'d M Y'}}</td>
<td>{{ obj.verifiersignoff.verified_by }}</td>
<td>{{ obj.note }}</td>
{% empty %}
<td colspan="8" style="WIDTH: 130px">No verifiers assigned yet...</td>
</tr>
{% endfor %}
Я могу отображать индивидуальные статусы одобрения/отклонения отдельных объектов цикла в моем шаблоне, однако я хочу отображать консолидированный СТАТУС в соответствии с моим описанием выше, т.е. что-то вроде
MOC STATUS: {{?????? I don't know how I can generate this variable in my logic ?????}}