From 6ffd9751863de3a22aa337c5e7ca82febc057e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Matheus?= Date: Thu, 28 Mar 2019 11:03:49 -0300 Subject: [PATCH] Evitar anexo ciclico - Anexada --- sapl/materia/forms.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 4b75e134a..321a62b5b 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -768,6 +768,26 @@ class AnexadaForm(ModelForm): if is_anexada: self.logger.error("Matéria já se encontra anexada.") raise ValidationError(_('Matéria já se encontra anexada')) + + ciclico = False + anexadas_anexada = Anexada.objects.filter(materia_principal=materia_anexada) + + while(anexadas_anexada and not ciclico): + anexadas = [] + + for anexa in anexadas_anexada: + + if materia_principal == anexa.materia_anexada: + ciclico = True + else: + for a in Anexada.objects.filter(materia_principal=anexa.documento_anexado): + anexadas.append(a) + + anexadas_anexada = anexadas + + if ciclico: + self.logger.error("A matéria não pode ser anexada por uma de suas anexadas.") + raise ValidationError(_("A matéria não pode ser anexada por uma de suas anexadas.")) cleaned_data['materia_anexada'] = materia_anexada