Browse Source

Fix 2720 - Adiciona usuarios em tramitacoes

pull/2736/head
Cesar Carvalho 7 years ago
parent
commit
a085addc1f
  1. 14
      sapl/materia/forms.py
  2. 28
      sapl/materia/migrations/0046_auto_20190417_1212.py
  3. 11
      sapl/materia/models.py
  4. 19
      sapl/materia/views.py

14
sapl/materia/forms.py

@ -461,11 +461,17 @@ class TramitacaoForm(ModelForm):
'unidade_tramitacao_destino',
'data_encaminhamento',
'data_fim_prazo',
'texto']
'texto',
'user',
'ip']
widgets = {'user': forms.HiddenInput(),
'ip': forms.HiddenInput()}
def __init__(self, *args, **kwargs):
super(TramitacaoForm, self).__init__(*args, **kwargs)
self.fields['data_tramitacao'].initial = timezone.now().date()
self.fields['user'].initial = kwargs['initial']['user']
self.fields['ip'].initial = kwargs['initial']['ip']
ust = UnidadeTramitacao.objects.select_related().all()
unidade_tramitacao_destino = [('', '---------')] + [(ut.pk, ut)
for ut in ust if ut.comissao and ut.comissao.ativa]
@ -556,6 +562,8 @@ class TramitacaoForm(ModelForm):
tramitacao_nova.pk = None
tramitacao_nova.materia = ma
tramitacao_nova.save()
tramitacao.ip = self.fields['ip'].initial
tramitacao.user = self.fields['user'].initial
return tramitacao
@ -580,11 +588,15 @@ class TramitacaoUpdateForm(TramitacaoForm):
'data_encaminhamento',
'data_fim_prazo',
'texto',
'user',
'ip'
]
widgets = {
'data_encaminhamento': forms.DateInput(format='%d/%m/%Y'),
'data_fim_prazo': forms.DateInput(format='%d/%m/%Y'),
'user': forms.HiddenInput(),
'ip': forms.HiddenInput()
}
def clean(self):

28
sapl/materia/migrations/0046_auto_20190417_1212.py

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-04-17 15:12
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('materia', '0045_auto_20190415_1050'),
]
operations = [
migrations.AddField(
model_name='tramitacao',
name='ip',
field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'),
),
migrations.AddField(
model_name='tramitacao',
name='user',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Usuário'),
),
]

11
sapl/materia/models.py

@ -18,7 +18,7 @@ from sapl.parlamentares.models import Parlamentar
#from sapl.protocoloadm.models import Protocolo
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, SaplGenericForeignKey,
SaplGenericRelation, restringe_tipos_de_arquivo_txt,
texto_upload_path)
texto_upload_path, get_settings_auth_user_model)
EM_TRAMITACAO = [(1, 'Sim'),
@ -1003,6 +1003,15 @@ class Tramitacao(models.Model):
texto = models.TextField(verbose_name=_('Texto da Ação'))
data_fim_prazo = models.DateField(
blank=True, null=True, verbose_name=_('Data Fim Prazo'))
user = models.ForeignKey(get_settings_auth_user_model(),
verbose_name=_('Usuário'),
on_delete=models.PROTECT,
null=True,
blank=True)
ip = models.CharField(verbose_name=_('IP'),
max_length=30,
blank=True,
default='')
class Meta:
verbose_name = _('Tramitação')

19
sapl/materia/views.py

@ -53,7 +53,7 @@ from sapl.parlamentares.models import Legislatura
from sapl.protocoloadm.models import Protocolo
from sapl.settings import MEDIA_ROOT
from sapl.utils import (YES_NO_CHOICES, autor_label, autor_modal, SEPARADOR_HASH_PROPOSICAO,
gerar_hash_arquivo, get_base_url,
gerar_hash_arquivo, get_base_url, get_client_ip,
get_mime_type_from_file_extension, montar_row_autor,
show_results_filter_set, mail_service_configured)
@ -1189,6 +1189,8 @@ class TramitacaoCrud(MasterDetailCrud):
else:
initial['unidade_tramitacao_local'] = ''
initial['data_tramitacao'] = timezone.now().date()
initial['ip'] = get_client_ip(self.request)
initial['user'] = self.request.user
return initial
def get_context_data(self, **kwargs):
@ -1220,6 +1222,8 @@ class TramitacaoCrud(MasterDetailCrud):
self.object = form.save()
username = self.request.user.username
form.instance.user = self.request.user
form.instance.ip = get_client_ip(self.request)
if form.instance.status.indicador == 'F':
form.instance.materia.em_tramitacao = False
@ -1234,7 +1238,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.')
@ -1251,6 +1254,12 @@ class TramitacaoCrud(MasterDetailCrud):
layout_key = 'TramitacaoUpdate'
def get_initial(self):
initial = super(UpdateView, self).get_initial()
initial['ip'] = get_client_ip(self.request)
initial['user'] = self.request.user
return initial
def form_valid(self, form):
self.object = form.save()
username = self.request.user.username
@ -2273,6 +2282,8 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView):
messages.add_message(request, messages.ERROR, msg)
return self.get(request, self.kwargs)
user = request.user
ip = get_client_ip(request)
t = Tramitacao(
materia=materia,
data_tramitacao=data_tramitacao,
@ -2285,7 +2296,9 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView):
urgente=urgente,
status_id=request.POST['status'],
turno=request.POST['turno'],
texto=request.POST['texto']
texto=request.POST['texto'],
user=user,
ip=ip
)
t.save()
try:

Loading…
Cancel
Save