From ae6681290d00d1b781585e2ac446d33de11e4054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Thu, 30 May 2019 11:21:25 -0300 Subject: [PATCH] Fix #2798 (#2799) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix #2798 * Refatorar cód. que verifica alterações --- sapl/materia/forms.py | 11 ----------- sapl/materia/views.py | 29 ++++++++++++++++++++--------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index b65bef4fd..6ad0fa11c 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -659,17 +659,6 @@ class TramitacaoUpdateForm(TramitacaoForm): 'Você não pode mudar a Unidade de Destino desta ' 'tramitação, pois irá conflitar com a Unidade ' 'Local da tramitação seguinte') - - # Se não houve qualquer alteração em um dos dados, mantém o usuário e ip - if not (cd['data_tramitacao'] != obj.data_tramitacao or \ - cd['unidade_tramitacao_destino'] != obj.unidade_tramitacao_destino or \ - 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 cd['data_tramitacao'] = obj.data_tramitacao cd['unidade_tramitacao_local'] = obj.unidade_tramitacao_local diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 43d6658a3..01a4e4009 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1256,18 +1256,29 @@ 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): + dict_objeto_antigo = Tramitacao.objects.get(pk=self.kwargs['pk']).__dict__ + self.object = form.save() - username = self.request.user.username + dict_objeto_novo = self.object.__dict__ + + user = self.request.user + + atributos = [ + 'data_tramitacao', 'unidade_tramitacao_destino_id', 'status_id', 'texto', + 'data_encaminhamento', 'data_fim_prazo', 'urgente', 'turno' + ] + + # Se não houve qualquer alteração em um dos dados, mantém o usuário e ip + for atributo in atributos: + if dict_objeto_antigo[atributo] != dict_objeto_novo[atributo]: + self.object.user = user + self.object.ip = get_client_ip(self.request) + self.object.save() + break try: - self.logger.debug("user=" + username + ". Tentando enviar Tramitacao (sender={}, post={}, request={}" + self.logger.debug("user=" + user.username + ". Tentando enviar Tramitacao (sender={}, post={}, request={}" .format(Tramitacao, self.object, self.request)) tramitacao_signal.send(sender=Tramitacao, post=self.object, @@ -1276,7 +1287,7 @@ class TramitacaoCrud(MasterDetailCrud): msg = _('Tramitação atualizada, mas e-mail de acompanhamento ' 'de matéria não enviado. Há problemas na configuração ' 'do e-mail.') - self.logger.warning('user=' + username + '. Tramitação atualizada, mas e-mail de acompanhamento ' + self.logger.warning('user=' + user.username + '. Tramitação atualizada, mas e-mail de acompanhamento ' 'de matéria não enviado. Há problemas na configuração ' 'do e-mail.') messages.add_message(self.request, messages.WARNING, msg)