Browse Source

Apenas atualiza o usuario e ip na edicao se houve alteracao

pull/2736/head
Cesar Carvalho 7 years ago
parent
commit
9c1b4db6ba
  1. 34
      sapl/materia/forms.py
  2. 6
      sapl/materia/views.py
  3. 30
      sapl/protocoloadm/forms.py
  4. 7
      sapl/protocoloadm/views.py
  5. 1
      sapl/templates/materia/tramitacao_detail.html

34
sapl/materia/forms.py

@ -601,32 +601,44 @@ class TramitacaoUpdateForm(TramitacaoForm):
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
cd = self.cleaned_data
obj = self.instance
ultima_tramitacao = Tramitacao.objects.filter( ultima_tramitacao = Tramitacao.objects.filter(
materia_id=self.instance.materia_id).order_by( materia_id=obj.materia_id).order_by(
'-data_tramitacao', '-data_tramitacao',
'-id').first() '-id').first()
# Se a Tramitação que está sendo editada não for a mais recente, # Se a Tramitação que está sendo editada não for a mais recente,
# ela não pode ter seu destino alterado. # ela não pode ter seu destino alterado.
if ultima_tramitacao != self.instance: if ultima_tramitacao != obj:
if self.cleaned_data['unidade_tramitacao_destino'] != \ if cd['unidade_tramitacao_destino'] != \
self.instance.unidade_tramitacao_destino: obj.unidade_tramitacao_destino:
self.logger.error("Você não pode mudar a Unidade de Destino desta " self.logger.error("Você não pode mudar a Unidade de Destino desta "
"tramitação para {}, pois irá conflitar com a Unidade " "tramitação para {}, pois irá conflitar com a Unidade "
"Local da tramitação seguinte ({})." "Local da tramitação seguinte ({})."
.format(self.cleaned_data['unidade_tramitacao_destino'], .format(cd['unidade_tramitacao_destino'],
self.instance.unidade_tramitacao_destino)) obj.unidade_tramitacao_destino))
raise ValidationError( raise ValidationError(
'Você não pode mudar a Unidade de Destino desta ' 'Você não pode mudar a Unidade de Destino desta '
'tramitação, pois irá conflitar com a Unidade ' 'tramitação, pois irá conflitar com a Unidade '
'Local da tramitação seguinte') 'Local da tramitação seguinte')
self.cleaned_data['data_tramitacao'] = \ # Se não houve qualquer alteração em um dos dados, mantém o usuário e ip
self.instance.data_tramitacao if not (cd['data_tramitacao'] != obj.data_tramitacao or \
self.cleaned_data['unidade_tramitacao_local'] = \ cd['unidade_tramitacao_destino'] != obj.unidade_tramitacao_destino or \
self.instance.unidade_tramitacao_local cd['status'] != obj.status or cd['texto'] != obj.texto or \
cd['data_encaminhamento'] != obj.data_encaminhamento or \
cd['data_fim_prazo'] != obj.data_fim_prazo or \
cd['urgente'] != obj.urgente or \
cd['turno'] != obj.turno):
cd['user'] = obj.user
cd['ip'] = obj.ip
return self.cleaned_data cd['data_tramitacao'] = obj.data_tramitacao
cd['unidade_tramitacao_local'] = obj.unidade_tramitacao_local
return cd
class LegislacaoCitadaForm(ModelForm): class LegislacaoCitadaForm(ModelForm):

6
sapl/materia/views.py

@ -1252,6 +1252,12 @@ class TramitacaoCrud(MasterDetailCrud):
layout_key = 'TramitacaoUpdate' 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): def form_valid(self, form):
self.object = form.save() self.object = form.save()
username = self.request.user.username username = self.request.user.username

30
sapl/protocoloadm/forms.py

@ -762,30 +762,40 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm):
if not self.is_valid(): if not self.is_valid():
return self.cleaned_data return self.cleaned_data
cd = self.cleaned_data
obj = self.instance
ultima_tramitacao = TramitacaoAdministrativo.objects.filter( ultima_tramitacao = TramitacaoAdministrativo.objects.filter(
documento_id=self.instance.documento_id).order_by( documento_id=obj.documento_id).order_by(
'-data_tramitacao', '-data_tramitacao',
'-id').first() '-id').first()
# Se a Tramitação que está sendo editada não for a mais recente, # Se a Tramitação que está sendo editada não for a mais recente,
# ela não pode ter seu destino alterado. # ela não pode ter seu destino alterado.
if ultima_tramitacao != self.instance: if ultima_tramitacao != obj:
if self.cleaned_data['unidade_tramitacao_destino'] != \ if cd['unidade_tramitacao_destino'] != \
self.instance.unidade_tramitacao_destino: obj.unidade_tramitacao_destino:
self.logger.error('Você não pode mudar a Unidade de Destino desta ' self.logger.error('Você não pode mudar a Unidade de Destino desta '
'tramitação (id={}), pois irá conflitar com a Unidade ' 'tramitação (id={}), pois irá conflitar com a Unidade '
'Local da tramitação seguinte'.format(self.instance.documento_id)) 'Local da tramitação seguinte'.format(obj.documento_id))
raise ValidationError( raise ValidationError(
'Você não pode mudar a Unidade de Destino desta ' 'Você não pode mudar a Unidade de Destino desta '
'tramitação, pois irá conflitar com a Unidade ' 'tramitação, pois irá conflitar com a Unidade '
'Local da tramitação seguinte') 'Local da tramitação seguinte')
self.cleaned_data['data_tramitacao'] = \ # Se não houve qualquer alteração em um dos dados, mantém o usuário e ip
self.instance.data_tramitacao if not (cd['data_tramitacao'] != obj.data_tramitacao or \
self.cleaned_data['unidade_tramitacao_local'] = \ cd['unidade_tramitacao_destino'] != obj.unidade_tramitacao_destino or \
self.instance.unidade_tramitacao_local cd['status'] != obj.status or cd['texto'] != obj.texto or \
cd['data_encaminhamento'] != obj.data_encaminhamento or \
cd['data_fim_prazo'] != obj.data_fim_prazo):
cd['user'] = obj.user
cd['ip'] = obj.ip
return self.cleaned_data cd['data_tramitacao'] = obj.data_tramitacao
cd['unidade_tramitacao_local'] = obj.unidade_tramitacao_local
return cd
class AnexadoForm(ModelForm): class AnexadoForm(ModelForm):

7
sapl/protocoloadm/views.py

@ -1156,6 +1156,12 @@ class TramitacaoAdmCrud(MasterDetailCrud):
form_class = TramitacaoAdmEditForm form_class = TramitacaoAdmEditForm
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
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): def form_valid(self, form):
self.object = form.save() self.object = form.save()
username = self.request.user.username username = self.request.user.username
@ -1164,7 +1170,6 @@ class TramitacaoAdmCrud(MasterDetailCrud):
post=self.object, post=self.object,
request=self.request) request=self.request)
except Exception as e: except Exception as e:
# TODO log error
self.logger.error('user=' + username + '. Tramitação criada, mas e-mail de acompanhamento de documento ' 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 ' 'não enviado. A não configuração do servidor de e-mail '
'impede o envio de aviso de tramitação. ' + str(e)) 'impede o envio de aviso de tramitação. ' + str(e))

1
sapl/templates/materia/tramitacao_detail.html

@ -1,7 +1,6 @@
{% extends "crud/detail.html" %} {% extends "crud/detail.html" %}
{% load i18n %} {% load i18n %}
{% block actions %} {% endblock %}
{% block detail_content %} {% block detail_content %}
{{ block.super }} {{ block.super }}
{% if user.is_superuser %} {% if user.is_superuser %}

Loading…
Cancel
Save