From 43f2f96af0a362156d025078522726504f7a6f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Thu, 21 Mar 2019 18:55:30 -0300 Subject: [PATCH] Evitar anexo ciclico - Anexado --- sapl/protocoloadm/forms.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index a09fe9429..c662d1137 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -837,6 +837,26 @@ class AnexadoForm(ModelForm): self.logger.error("Documento já se encontra anexado.") raise ValidationError(_('Documento já se encontra anexado')) + ciclico = False + anexados_anexado = Anexado.objects.filter(documento_principal=documento_anexado) + + while(anexados_anexado and not ciclico): + anexados = [] + + for anexo in anexados_anexado: + + if documento_principal == anexo.documento_anexado: + ciclico = True + else: + for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado): + anexados.append(a) + + anexados_anexado = anexados + + if ciclico: + self.logger.error("O documento não pode ser anexado por um de seus anexados.") + raise ValidationError(_('O documento não pode ser anexado por um de seus anexados')) + cleaned_data['documento_anexado'] = documento_anexado return cleaned_data