Browse Source

Fix #2754 - Tramita os documentos anexados ao DocAdm principal (#2757)

* Fix 2754 - Tramita os anexados ao DocAdm principal

* Otimiza criação das tramitações anexadas
pull/2769/head
Cesar Augusto de Carvalho 6 years ago
committed by Edward
parent
commit
261345ff0b
  1. 34
      sapl/materia/forms.py
  2. 28
      sapl/protocoloadm/forms.py
  3. 4
      sapl/protocoloadm/views.py

34
sapl/materia/forms.py

@ -553,21 +553,29 @@ class TramitacaoForm(ModelForm):
def save(self, commit=True): def save(self, commit=True):
tramitacao = super(TramitacaoForm, self).save(commit) tramitacao = super(TramitacaoForm, self).save(commit)
materia = tramitacao.materia materia = tramitacao.materia
materia.em_tramitacao = False if tramitacao.status.indicador == "F" else True materia.em_tramitacao = False if tramitacao.status.indicador == "F" else True
materia.save() materia.save()
lista_tramitacao = []
anexadas = lista_anexadas(materia) for ma in materia.anexadas.all():
for anexada in anexadas: if not ma.tramitacao_set.all() \
if not anexada.tramitacao_set.all() \ or ma.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local:
or anexada.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: ma.em_tramitacao = False if tramitacao.status.indicador == "F" else True
tramitacao_nova = tramitacao ma.save()
tramitacao_nova.pk = None lista_tramitacao.append(Tramitacao(
tramitacao_nova.materia = anexada status=tramitacao.status,
tramitacao_nova.save() materia=ma,
data_tramitacao=tramitacao.data_tramitacao,
anexada.em_tramitacao = False if tramitacao.status.indicador == "F" else True unidade_tramitacao_local=tramitacao.unidade_tramitacao_local,
anexada.save() 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 return tramitacao

28
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 import forms
from django.core.exceptions import (MultipleObjectsReturned, from django.core.exceptions import (MultipleObjectsReturned,
ObjectDoesNotExist, ValidationError) ObjectDoesNotExist, ValidationError)
from django.db import models from django.db import models, transaction
from django.db.models import Max from django.db.models import Max
from django.forms import ModelForm from django.forms import ModelForm
from django.utils import timezone from django.utils import timezone
@ -745,6 +745,32 @@ class TramitacaoAdmForm(ModelForm):
return self.cleaned_data 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): class TramitacaoAdmEditForm(TramitacaoAdmForm):

4
sapl/protocoloadm/views.py

@ -1103,6 +1103,10 @@ class TramitacaoAdmCrud(MasterDetailCrud):
form_class = TramitacaoAdmForm form_class = TramitacaoAdmForm
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def get_success_url(self):
return reverse('sapl.protocoloadm:tramitacaoadministrativo_list', kwargs={
'pk': self.kwargs['pk']})
def get_initial(self): def get_initial(self):
initial = super(CreateView, self).get_initial() initial = super(CreateView, self).get_initial()
local = DocumentoAdministrativo.objects.get( local = DocumentoAdministrativo.objects.get(

Loading…
Cancel
Save