Browse Source

Corrige inconsistencias entre Tramitacao DocAdm e MatLegislativa

pull/2755/head
Cesar Carvalho 7 years ago
parent
commit
71a2209726
  1. 12
      sapl/materia/views.py
  2. 15
      sapl/protocoloadm/forms.py
  3. 25
      sapl/protocoloadm/migrations/0019_auto_20190429_0828.py
  4. 21
      sapl/protocoloadm/migrations/0020_tramitacaoadministrativo_timestamp.py
  5. 7
      sapl/protocoloadm/models.py
  6. 23
      sapl/protocoloadm/views.py
  7. 6
      sapl/templates/protocoloadm/layouts.yaml

12
sapl/materia/views.py

@ -1201,6 +1201,7 @@ class TramitacaoCrud(MasterDetailCrud):
'-timestamp',
'-id').first()
#TODO: Esta checagem foi inserida na issue #2027, mas é mesmo necessária?
if ultima_tramitacao:
if ultima_tramitacao.unidade_tramitacao_destino:
context['form'].fields[
@ -1214,6 +1215,15 @@ class TramitacaoCrud(MasterDetailCrud):
' da última tramitação não pode ser vazia!')
messages.add_message(self.request, messages.ERROR, msg)
primeira_tramitacao = not(Tramitacao.objects.filter(
materia_id=int(kwargs['root_pk'])).exists())
# Se não for a primeira tramitação daquela matéria, o campo
# não pode ser modificado
if not primeira_tramitacao:
context['form'].fields[
'unidade_tramitacao_local'].widget.attrs['disabled'] = True
return context
def form_valid(self, form):
@ -1234,7 +1244,6 @@ class TramitacaoCrud(MasterDetailCrud):
post=self.object,
request=self.request)
except Exception as e:
# TODO log error
msg = _('Tramitação criada, mas e-mail de acompanhamento '
'de matéria não enviado. Há problemas na configuração '
'do e-mail.')
@ -1268,7 +1277,6 @@ class TramitacaoCrud(MasterDetailCrud):
post=self.object,
request=self.request)
except Exception:
# TODO log error
msg = _('Tramitação atualizada, mas e-mail de acompanhamento '
'de matéria não enviado. Há problemas na configuração '
'do e-mail.')

15
sapl/protocoloadm/forms.py

@ -650,12 +650,26 @@ class TramitacaoAdmForm(ModelForm):
fields = ['data_tramitacao',
'unidade_tramitacao_local',
'status',
'urgente',
'unidade_tramitacao_destino',
'data_encaminhamento',
'data_fim_prazo',
'texto',
]
def __init__(self, *args, **kwargs):
super(TramitacaoAdmForm, self).__init__(*args, **kwargs)
self.fields['data_tramitacao'].initial = timezone.now().date()
ust = UnidadeTramitacao.objects.select_related().all()
unidade_tramitacao_destino = [('', '---------')] + [(ut.pk, ut)
for ut in ust if ut.comissao and ut.comissao.ativa]
unidade_tramitacao_destino.extend(
[(ut.pk, ut) for ut in ust if ut.orgao])
unidade_tramitacao_destino.extend(
[(ut.pk, ut) for ut in ust if ut.parlamentar])
self.fields['unidade_tramitacao_destino'].choices = unidade_tramitacao_destino
self.fields['urgente'].label = "Urgente? *"
def clean(self):
cleaned_data = super(TramitacaoAdmForm, self).clean()
@ -743,6 +757,7 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm):
fields = ['data_tramitacao',
'unidade_tramitacao_local',
'status',
'urgente',
'unidade_tramitacao_destino',
'data_encaminhamento',
'data_fim_prazo',

25
sapl/protocoloadm/migrations/0019_auto_20190429_0828.py

@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-29 11:28
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0018_auto_20190314_1532'),
]
operations = [
migrations.AddField(
model_name='tramitacaoadministrativo',
name='urgente',
field=models.BooleanField(choices=[(True, 'Sim'), (False, 'Não')], default=False, verbose_name='Urgente ?'),
),
migrations.AlterField(
model_name='tramitacaoadministrativo',
name='texto',
field=models.TextField(verbose_name='Texto da Ação'),
),
]

21
sapl/protocoloadm/migrations/0020_tramitacaoadministrativo_timestamp.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-29 12:15
from __future__ import unicode_literals
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0019_auto_20190429_0828'),
]
operations = [
migrations.AddField(
model_name='tramitacaoadministrativo',
name='timestamp',
field=models.DateTimeField(default=django.utils.timezone.now),
),
]

7
sapl/protocoloadm/models.py

@ -300,6 +300,7 @@ class TramitacaoAdministrativo(models.Model):
verbose_name=_('Status'))
documento = models.ForeignKey(DocumentoAdministrativo,
on_delete=models.PROTECT)
timestamp = models.DateTimeField(default=timezone.now)
data_tramitacao = models.DateField(
verbose_name=_('Data Tramitação'))
unidade_tramitacao_local = models.ForeignKey(
@ -314,8 +315,10 @@ class TramitacaoAdministrativo(models.Model):
related_name='adm_tramitacoes_destino',
on_delete=models.PROTECT,
verbose_name=_('Unidade Destino'))
texto = models.TextField(
blank=True, verbose_name=_('Texto da Ação'))
urgente = models.BooleanField(verbose_name=_('Urgente ?'),
choices=YES_NO_CHOICES,
default=False)
texto = models.TextField(verbose_name=_('Texto da Ação'))
data_fim_prazo = models.DateField(
blank=True, null=True, verbose_name=_('Data Fim do Prazo'))

23
sapl/protocoloadm/views.py

@ -1120,6 +1120,27 @@ class TramitacaoAdmCrud(MasterDetailCrud):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
username = self.request.user.username
ultima_tramitacao = TramitacaoAdministrativo.objects.filter(
documento_id=self.kwargs['pk']).order_by(
'-data_tramitacao',
'-timestamp',
'-id').first()
#TODO: Esta checagem foi inserida na issue #2027, mas é mesmo necessária?
if ultima_tramitacao:
if ultima_tramitacao.unidade_tramitacao_destino:
context['form'].fields[
'unidade_tramitacao_local'].choices = [
(ultima_tramitacao.unidade_tramitacao_destino.pk,
ultima_tramitacao.unidade_tramitacao_destino)]
else:
self.logger.error('user=' + username + '. Unidade de tramitação destino '
'da última tramitação não pode ser vazia!')
msg = _('Unidade de tramitação destino '
' da última tramitação não pode ser vazia!')
messages.add_message(self.request, messages.ERROR, msg)
primeira_tramitacao = not(TramitacaoAdministrativo.objects.filter(
documento_id=int(kwargs['root_pk'])).exists())
@ -1139,7 +1160,6 @@ class TramitacaoAdmCrud(MasterDetailCrud):
post=self.object,
request=self.request)
except Exception as e:
# TODO log error
self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento '
'não enviado. A não configuração do servidor de e-mail '
'impede o envio de aviso de tramitação. ' + str(e))
@ -1162,7 +1182,6 @@ class TramitacaoAdmCrud(MasterDetailCrud):
post=self.object,
request=self.request)
except Exception as e:
# TODO log error
self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento '
'não enviado. A não configuração do servidor de e-mail '
'impede o envio de aviso de tramitação. ' + str(e))

6
sapl/templates/protocoloadm/layouts.yaml

@ -30,9 +30,9 @@ StatusTramitacaoAdministrativo:
TramitacaoAdministrativo:
{% trans 'Tramitação' %}:
- data_tramitacao:4 unidade_tramitacao_local
- status:4 unidade_tramitacao_destino
- data_encaminhamento data_fim_prazo
- data_tramitacao unidade_tramitacao_local
- unidade_tramitacao_destino data_encaminhamento data_fim_prazo
- status urgente
- texto
Anexado:

Loading…
Cancel
Save