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/2811/head
Cesar Augusto de Carvalho 6 years ago
committed by Cesar Carvalho
parent
commit
b60a07ab38
  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):
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

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.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):

4
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(

Loading…
Cancel
Save