From 2c30a8450a8c5dad6043ca25df898206061ff4f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Cantu=C3=A1ria?= Date: Tue, 8 Sep 2020 10:16:50 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20orena=C3=A7=C3=A3o=20impl=C3=ADcita?= =?UTF-8?q?=20e=20expl=C3=ADcita=20de=20tramita=C3=A7=C3=A3o=20de=20mat?= =?UTF-8?q?=C3=A9ria=20(#3259)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/api/views.py | 2 +- sapl/base/email_utils.py | 2 +- sapl/materia/forms.py | 13 ++++----- sapl/materia/models.py | 1 + sapl/materia/tests/test_materia.py | 42 +++++++++++++++--------------- sapl/materia/views.py | 17 +++++------- sapl/relatorios/views.py | 2 +- sapl/sessao/views.py | 4 +-- 8 files changed, 40 insertions(+), 43 deletions(-) diff --git a/sapl/api/views.py b/sapl/api/views.py index ce269ba51..eb04e8b4a 100644 --- a/sapl/api/views.py +++ b/sapl/api/views.py @@ -467,7 +467,7 @@ class _MateriaLegislativaViewSet: if not materia.tramitacao_set.exists(): return Response({}) - ultima_tramitacao = materia.tramitacao_set.last() + ultima_tramitacao = materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() serializer_class = SaplApiViewSetConstrutor.get_class_for_model( Tramitacao).serializer_class(ultima_tramitacao) diff --git a/sapl/base/email_utils.py b/sapl/base/email_utils.py index 48b0e3adb..3ccf64690 100644 --- a/sapl/base/email_utils.py +++ b/sapl/base/email_utils.py @@ -171,7 +171,7 @@ def criar_email_tramitacao(base_url, casa_legislativa, tipo, doc_mat, status, ementa = doc_mat.ementa autores = [autoria.autor.nome for autoria in doc_mat.autoria_set.all()] - tramitacao = doc_mat.tramitacao_set.last() + tramitacao = doc_mat.tramitacao_set.order_by('-data_tramitacao', '-id').first() else: doc_mat_url = reverse('sapl.protocoloadm:tramitacaoadministrativo_list', diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index f6eeb5542..2d16a914a 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -560,8 +560,9 @@ class TramitacaoForm(ModelForm): lista_tramitacao = [] anexadas_list = lista_anexados(materia) for ma in anexadas_list: - if not ma.tramitacao_set.all() \ - or ma.tramitacao_set.last().unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: + if not ma.tramitacao_set.order_by('-data_tramitacao', '-id').all() \ + or ma.tramitacao_set.order_by('-data_tramitacao', '-id').first().unidade_tramitacao_destino \ + == tramitacao.unidade_tramitacao_local: ma.em_tramitacao = False if tramitacao.status.indicador == "F" else True ma.save() lista_tramitacao.append(Tramitacao( @@ -689,7 +690,7 @@ class TramitacaoUpdateForm(TramitacaoForm): if tramitar_anexadas: anexadas_list = lista_anexados(materia) for ma in anexadas_list: - tram_anexada = ma.tramitacao_set.last() + tram_anexada = ma.tramitacao_set.order_by('-data_tramitacao', '-id').first() if compara_tramitacoes_mat(ant_tram_principal, tram_anexada): tram_anexada.status = nova_tram_principal.status tram_anexada.data_tramitacao = nova_tram_principal.data_tramitacao @@ -1785,9 +1786,9 @@ class TramitacaoEmLoteForm(ModelForm): lista_tramitacao = [] anexadas = lista_anexados(mat) for ml in anexadas: - if not ml.tramitacao_set.all() \ - or ml.tramitacao_set.last() \ - .unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: + if not ml.tramitacao_set.order_by('-data_tramitacao', '-id').all() or \ + ml.tramitacao_set.order_by('-data_tramitacao', '-id').first().unidade_tramitacao_destino \ + == tramitacao.unidade_tramitacao_local: ml.em_tramitacao = False if tramitacao.status.indicador == "F" else True ml.save() lista_tramitacao.append(Tramitacao( diff --git a/sapl/materia/models.py b/sapl/materia/models.py index d45252767..0f17761bb 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -1176,6 +1176,7 @@ class Tramitacao(models.Model): class Meta: verbose_name = _('Tramitação') verbose_name_plural = _('Tramitações') + ordering = ('-data_tramitacao', '-id') def __str__(self): return _('%(materia)s | %(status)s | %(data)s') % { diff --git a/sapl/materia/tests/test_materia.py b/sapl/materia/tests/test_materia.py index b8411c7c5..be6d697cb 100644 --- a/sapl/materia/tests/test_materia.py +++ b/sapl/materia/tests/test_materia.py @@ -747,11 +747,11 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = materia_anexada.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() # Verifica se foram criadas as tramitações para as matérias anexadas e anexadas às anexadas - assert materia_principal.tramitacao_set.last() == tramitacao_principal + assert materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first() == tramitacao_principal assert tramitacao_principal.materia.em_tramitacao == (tramitacao_principal.status.indicador != "F") assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada) assert MateriaLegislativa.objects.get(id=materia_anexada.pk).em_tramitacao \ @@ -774,8 +774,8 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = materia_anexada.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 @@ -804,8 +804,8 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = materia_anexada.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() form = TramitacaoUpdateForm(data={}) # Alterando unidade_tramitacao_destino @@ -820,7 +820,7 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_anexada = form.save() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_1 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 @@ -839,8 +839,8 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = materia_anexada.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() assert tramitacao_principal.texto == "Testando a alteração" assert not tramitacao_anexada.texto == "Testando a alteração" @@ -883,11 +883,11 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = materia_anexada.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() # Deve ser criada tramitação apenas para a matéria principal - assert materia_principal.tramitacao_set.last() == tramitacao_principal + assert materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first() == tramitacao_principal assert not tramitacao_anexada assert not tramitacao_anexada_anexada @@ -905,11 +905,11 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_anexada = form.save() - tramitacao_principal = materia_principal.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_principal = materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() - assert materia_anexada.tramitacao_set.last() == tramitacao_anexada - assert materia_principal.tramitacao_set.all().count() == 1 + assert materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() == tramitacao_anexada + assert materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').all().count() == 1 assert compara_tramitacoes_mat(tramitacao_principal, tramitacao_anexada) assert not tramitacao_anexada_anexada @@ -926,8 +926,8 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = materia_anexada.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_anexada = materia_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1 @@ -946,8 +946,8 @@ def test_tramitacoes_materias_anexadas(admin_client): assert form.is_valid() tramitacao_anexada = form.save() - tramitacao_principal = materia_principal.tramitacao_set.last() - tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.last() + tramitacao_principal = materia_principal.tramitacao_set.order_by('-data_tramitacao', '-id').first() + tramitacao_anexada_anexada = materia_anexada_anexada.tramitacao_set.order_by('-data_tramitacao', '-id').first() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 diff --git a/sapl/materia/views.py b/sapl/materia/views.py index a6d0d4bad..2d8990bb2 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1209,10 +1209,8 @@ class TramitacaoCrud(MasterDetailCrud): def get_initial(self): initial = super(CreateView, self).get_initial() - local = MateriaLegislativa.objects.get( - pk=self.kwargs['pk']).tramitacao_set.order_by( - '-data_tramitacao', - '-id').first() + local = MateriaLegislativa.objects.get(pk=self.kwargs['pk'])\ + .tramitacao_set.order_by('-data_tramitacao', '-id').first() if local: initial['unidade_tramitacao_local' @@ -1343,10 +1341,7 @@ class TramitacaoCrud(MasterDetailCrud): url = reverse('sapl.materia:tramitacao_list', kwargs={'pk': materia.id}) - ultima_tramitacao = materia.tramitacao_set.order_by( - '-data_tramitacao', - '-timestamp', - '-id').first() + ultima_tramitacao = materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() if tramitacao.pk != ultima_tramitacao.pk: username = request.user.username @@ -1366,7 +1361,7 @@ class TramitacaoCrud(MasterDetailCrud): if tramitar_anexadas: mat_anexadas = lista_anexados(materia) for ma in mat_anexadas: - tram_anexada = ma.tramitacao_set.last() + tram_anexada = ma.tramitacao_set.order_by('-data_tramitacao', '-id').first() if compara_tramitacoes_mat(tram_anexada, tramitacao): tramitacoes_deletar.append(tram_anexada) if ma.tramitacao_set.count() == 0: @@ -2372,7 +2367,7 @@ class PrimeiraTramitacaoEmLoteView(PermissionRequiredMixin, FilterView): context['title'] = _('Primeira Tramitação em Lote') # Pega somente documentos que não possuem tramitação context['object_list'] = [obj for obj in context['object_list'] - if obj.tramitacao_set.all().count() == 0] + if obj.tramitacao_set.order_by('-data_tramitacao', '-id').all().count() == 0] else: context['title'] = _('Tramitação em Lote') context['form'].fields['unidade_tramitacao_local'].initial = UnidadeTramitacao.objects.get( @@ -2625,7 +2620,7 @@ class ExcluirTramitacaoEmLoteView(PermissionRequiredMixin, FormView): status=form.cleaned_data['status']) for tramitacao in tramitacao_set: materia = tramitacao.materia - if tramitacao == materia.tramitacao_set.last(): + if tramitacao == materia.tramitacao_set.order_by('-data_tramitacao', '-id').first(): tramitacao.delete() return redirect(self.get_success_url()) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index b5e2c50fd..2550acef1 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -821,7 +821,7 @@ def get_sessao_plenaria(sessao, casa): def get_turno(materia): descricao_turno = '' descricao_tramitacao = '' - tramitacoes = materia.tramitacao_set.all().order_by('-data_tramitacao') + tramitacoes = materia.tramitacao_set.order_by('-data_tramitacao', '-id').all() tramitacoes_turno = tramitacoes.exclude(turno="") if tramitacoes: diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 6bc757022..7aaf3d668 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -3593,7 +3593,7 @@ class PautaSessaoDetailView(DetailView): resultado = _('Matéria não votada') resultado_observacao = _(' ') - ultima_tramitacao = m.materia.tramitacao_set.order_by('-data_tramitacao').select_related('status').first() + ultima_tramitacao = m.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() numeracao = m.materia.numeracao_set.first() materias_expediente.append({ @@ -3643,7 +3643,7 @@ class PautaSessaoDetailView(DetailView): resultado = _('Matéria não votada') resultado_observacao = _(' ') - ultima_tramitacao = o.materia.tramitacao_set.order_by('-data_tramitacao').first() + ultima_tramitacao = o.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() numeracao = o.materia.numeracao_set.first() materias_ordem.append({