diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 3c5533345..831d062cd 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -553,21 +553,29 @@ class TramitacaoForm(ModelForm): def save(self, commit=True): tramitacao = super(TramitacaoForm, self).save(commit) materia = tramitacao.materia - materia.em_tramitacao = False if tramitacao.status.indicador == "F" else 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 = anexada - tramitacao_nova.save() - - anexada.em_tramitacao = False if tramitacao.status.indicador == "F" else True - anexada.save() + lista_tramitacao = [] + for ma in materia.anexadas.all(): + if not ma.tramitacao_set.all() \ + or ma.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: + ma.em_tramitacao = False if tramitacao.status.indicador == "F" else True + ma.save() + lista_tramitacao.append(Tramitacao( + status=tramitacao.status, + materia=ma, + data_tramitacao=tramitacao.data_tramitacao, + unidade_tramitacao_local=tramitacao.unidade_tramitacao_local, + data_encaminhamento=tramitacao.data_encaminhamento, + unidade_tramitacao_destino=tramitacao.unidade_tramitacao_destino, + urgente=tramitacao.urgente, + turno=tramitacao.turno, + texto=tramitacao.texto, + data_fim_prazo=tramitacao.data_fim_prazo, + user=tramitacao.user, + ip=tramitacao.ip + )) + Tramitacao.objects.bulk_create(lista_tramitacao) return tramitacao diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index f833e890f..10c5c1c9c 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -7,7 +7,7 @@ from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Div from django import forms from django.core.exceptions import (MultipleObjectsReturned, ObjectDoesNotExist, ValidationError) -from django.db import models +from django.db import models, transaction from django.db.models import Max from django.forms import ModelForm from django.utils import timezone @@ -745,6 +745,32 @@ class TramitacaoAdmForm(ModelForm): return self.cleaned_data + @transaction.atomic + def save(self, commit=True): + tramitacao = super(TramitacaoAdmForm, self).save(commit) + documento = tramitacao.documento + lista_tramitacao = [] + for da in documento.anexados.all(): + if not da.tramitacaoadministrativo_set.all() \ + or da.tramitacaoadministrativo_set.last() \ + .unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: + lista_tramitacao.append(TramitacaoAdministrativo( + status=tramitacao.status, + documento=da, + data_tramitacao=tramitacao.data_tramitacao, + unidade_tramitacao_local=tramitacao.unidade_tramitacao_local, + data_encaminhamento=tramitacao.data_encaminhamento, + unidade_tramitacao_destino=tramitacao.unidade_tramitacao_destino, + urgente=tramitacao.urgente, + texto=tramitacao.texto, + data_fim_prazo=tramitacao.data_fim_prazo, + user=tramitacao.user, + ip=tramitacao.ip + )) + TramitacaoAdministrativo.objects.bulk_create(lista_tramitacao) + + return tramitacao + class TramitacaoAdmEditForm(TramitacaoAdmForm): diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index bc8ae0bd4..730f86097 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -1103,6 +1103,10 @@ class TramitacaoAdmCrud(MasterDetailCrud): form_class = TramitacaoAdmForm logger = logging.getLogger(__name__) + def get_success_url(self): + return reverse('sapl.protocoloadm:tramitacaoadministrativo_list', kwargs={ + 'pk': self.kwargs['pk']}) + def get_initial(self): initial = super(CreateView, self).get_initial() local = DocumentoAdministrativo.objects.get(