From 5e626090a22578e8a59afa75d32e8d8b709a2252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Matheus?= Date: Tue, 23 Apr 2019 16:16:49 -0300 Subject: [PATCH] =?UTF-8?q?Automatizar=20Em=20Tramita=C3=A7=C3=A3o=3F=20e?= =?UTF-8?q?=20tramita=C3=A7=C3=A3o=20anexados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/materia/forms.py | 41 +++++++++++++++++++++++++++++++++++++---- sapl/materia/views.py | 12 ------------ 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 27b1250af..9fdf2190f 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -549,17 +549,50 @@ class TramitacaoForm(ModelForm): def save(self, commit=True): tramitacao = super(TramitacaoForm, self).save(commit) materia = tramitacao.materia - for ma in materia.anexadas.all(): - if not ma.tramitacao_set.all() \ - or ma.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: + + if tramitacao.status.indicador == "F": + materia.em_tramitacao = False + else: + materia.em_tramitacao = True + materia.save() + + anexadas = lista_anexadas(materia) + for anexada in anexadas: + if not anexada.tramitacao_set.all() \ + or anexada.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: tramitacao_nova = tramitacao tramitacao_nova.pk = None - tramitacao_nova.materia = ma + tramitacao_nova.materia = anexada tramitacao_nova.save() + if tramitacao.status.indicador == "F": + anexada.em_tramitacao = False + else: + anexada.em_tramitacao = True + anexada.save() + return tramitacao +def lista_anexadas(materia_principal): + materias_anexadas = [] + anexadas_principal = Anexada.objects.filter(materia_principal=materia_principal) + + while anexadas_principal: + anexadas = [] + + for anexada in anexadas_principal: + materias_anexadas.append(anexada.materia_anexada) + + anexadas_anexada = Anexada.objects.filter(materia_principal=anexada.materia_anexada) + for a in anexadas_anexada: + anexadas.append(a) + + anexadas_principal = anexadas + + return materias_anexadas + + class TramitacaoUpdateForm(TramitacaoForm): unidade_tramitacao_local = forms.ModelChoiceField( queryset=UnidadeTramitacao.objects.all(), diff --git a/sapl/materia/views.py b/sapl/materia/views.py index e7a730c8f..3b2bd632a 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1221,12 +1221,6 @@ class TramitacaoCrud(MasterDetailCrud): self.object = form.save() username = self.request.user.username - if form.instance.status.indicador == 'F': - form.instance.materia.em_tramitacao = False - else: - form.instance.materia.em_tramitacao = True - form.instance.materia.save() - try: self.logger.debug("user=" + username + ". Tentando enviar Tramitacao (sender={}, post={}, request={})." .format(Tramitacao, self.object, self.request)) @@ -1255,12 +1249,6 @@ class TramitacaoCrud(MasterDetailCrud): self.object = form.save() username = self.request.user.username - if form.instance.status.indicador == 'F': - form.instance.materia.em_tramitacao = False - else: - form.instance.materia.em_tramitacao = True - form.instance.materia.save() - try: self.logger.debug("user=" + username + ". Tentando enviar Tramitacao (sender={}, post={}, request={}" .format(Tramitacao, self.object, self.request))