diff --git a/sapl/audiencia/views.py b/sapl/audiencia/views.py index b186fef50..8d232293b 100755 --- a/sapl/audiencia/views.py +++ b/sapl/audiencia/views.py @@ -76,7 +76,7 @@ class AudienciaCrud(Crud): class AudienciaPublicaMixin: def has_permission(self): - app_config = sapl.base.models.AppConfig.objects.last() + app_config = sapl.base.models.AppConfig.objects.order_by('id').last() if app_config and app_config.documentos_administrativos == 'O': return True diff --git a/sapl/base/email_utils.py b/sapl/base/email_utils.py index 3ccf64690..267718652 100644 --- a/sapl/base/email_utils.py +++ b/sapl/base/email_utils.py @@ -180,7 +180,7 @@ def criar_email_tramitacao(base_url, casa_legislativa, tipo, doc_mat, status, kwargs={'pk': doc_mat.id}) autores = "" ementa = doc_mat.assunto - tramitacao = doc_mat.tramitacaoadministrativo_set.last() + tramitacao = doc_mat.tramitacaoadministrativo_set.order_by('id').last() templates = load_email_templates(['email/tramitacao.txt', 'email/tramitacao.html'], diff --git a/sapl/base/views.py b/sapl/base/views.py index a9ba56802..9939c5d55 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -554,7 +554,7 @@ class RelatorioPresencaSessaoView(RelatorioMixin, FilterView): Q(data_inicio_mandato__lte=_range[0], data_fim_mandato__isnull=True) | Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1]) | # mandato suplente - Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1])) + Q(data_inicio_mandato__gte=_range[0], data_fim_mandato__lte=_range[1])).order_by('id') m = m.last() parlamentares_presencas.append({ @@ -2074,7 +2074,7 @@ class AppConfigCrud(CrudAux): create_url = '' def form_valid(self, form): - recibo_prop_atual = AppConfig.objects.last().receber_recibo_proposicao + recibo_prop_atual = AppConfig.objects.order_by('id').last().receber_recibo_proposicao recibo_prop_novo = self.request.POST['receber_recibo_proposicao'] if recibo_prop_novo == 'False' and recibo_prop_atual: props = Proposicao.objects.filter(hash_code='', data_recebimento__isnull=True).exclude(data_envio__isnull=True) @@ -2120,8 +2120,8 @@ class AppConfigCrud(CrudAux): form_class = ConfiguracoesAppForm def form_valid(self, form): - numeracao = AppConfig.objects.last().sequencia_numeracao_protocolo - numeracao_antiga = AppConfig.objects.last().inicio_numeracao_protocolo + numeracao = AppConfig.objects.order_by('id').last().sequencia_numeracao_protocolo + numeracao_antiga = AppConfig.objects.order_by('id').last().inicio_numeracao_protocolo self.object = form.save() numeracao_nova = self.object.inicio_numeracao_protocolo diff --git a/sapl/compilacao/models.py b/sapl/compilacao/models.py index bde388b23..31560bf68 100644 --- a/sapl/compilacao/models.py +++ b/sapl/compilacao/models.py @@ -520,7 +520,7 @@ class TextoArticulado(TimestampedMixin): def reagrupar_ordem_de_dispositivos(self): - dpts = Dispositivo.objects.filter(ta=self) + dpts = Dispositivo.objects.filter(ta=self).order_by('id') if not dpts.exists(): return @@ -538,7 +538,7 @@ class TextoArticulado(TimestampedMixin): def reordenar_dispositivos(self): - dpts = Dispositivo.objects.filter(ta=self) + dpts = Dispositivo.objects.filter(ta=self).order_by('id') if not dpts.exists(): return @@ -1758,10 +1758,10 @@ class Dispositivo(BaseModel, TimestampedMixin): 'ordem').filter(nivel=0, ta_id=self.ta_id) def select_next_root(self): - return self.select_roots().filter(ordem__gt=self.ordem).first() + return self.select_roots().filter(ordem__gt=self.ordem).order_by('id').first() def select_prev_root(self): - return self.select_roots().filter(ordem__lt=self.ordem).last() + return self.select_roots().filter(ordem__lt=self.ordem).order_by('id').last() # metodo obsoleto, foi acrescentado o campo auto_inserido no modelo def is_relative_auto_insert__obsoleto(self, perfil_pk=None): @@ -1875,11 +1875,9 @@ class Dispositivo(BaseModel, TimestampedMixin): not self.tipo_dispositivo.dispositivo_de_alteracao: return - filhos = Dispositivo.objects.order_by( - 'ordem_bloco_atualizador').filter( + filhos = Dispositivo.objects.filter( Q(dispositivo_pai_id=self.pk) | - Q(dispositivo_atualizador_id=self.pk)) - + Q(dispositivo_atualizador_id=self.pk)).order_by('ordem_bloco_atualizador') if not filhos.exists(): return diff --git a/sapl/compilacao/views.py b/sapl/compilacao/views.py index 29c00952f..a923501ca 100644 --- a/sapl/compilacao/views.py +++ b/sapl/compilacao/views.py @@ -1442,17 +1442,15 @@ class ActionDragAndMoveDispositivoAlteradoMixin(ActionsCommonsMixin): else: dpt.dispositivo_atualizador = bloco - filhos = Dispositivo.objects.order_by( - 'ordem_bloco_atualizador').filter( + filhos = Dispositivo.objects.filter( Q(dispositivo_pai_id=bloco.pk) | - Q(dispositivo_atualizador_id=bloco.pk)) + Q(dispositivo_atualizador_id=bloco.pk)).order_by('ordem_bloco_atualizador') if not filhos.exists(): dpt.ordem_bloco_atualizador = Dispositivo.INTERVALO_ORDEM else: index = int(self.request.GET['index']) - fpks = filhos.values_list( - 'pk', flat=True).order_by('ordem_bloco_atualizador') + fpks = filhos.values_list('pk', flat=True).order_by('ordem_bloco_atualizador') index_dpt = 0 try: @@ -1749,13 +1747,12 @@ class ActionDeleteDispositivoMixin(ActionsCommonsMixin): for d in dcc: # ultimo DCC do tipo encontrado if d.tipo_dispositivo.class_css not in base_adicao: - ultimo_dcc = Dispositivo.objects.order_by( - 'ordem').filter( + ultimo_dcc = Dispositivo.objects.filter( ta_id=base.ta_id, ordem__lt=base.ordem, ordem__gt=nivel_zero_anterior, tipo_dispositivo__contagem_continua=True, - tipo_dispositivo=d.tipo_dispositivo).last() + tipo_dispositivo=d.tipo_dispositivo).order_by('ordem').last() if not ultimo_dcc: break @@ -2219,8 +2216,7 @@ class ActionDispositivoCreateMixin(ActionsCommonsMixin): registro_inclusao = True tipo = TipoDispositivo.objects.get(pk=context['tipo_pk']) - pub_last = Publicacao.objects.order_by( - 'data', 'hora').filter(ta=base.ta).last() + pub_last = Publicacao.objects.filter(ta=base.ta).order_by('data', 'hora').last() variacao = int(context['variacao']) parents = [base, ] + base.get_parents() diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 1bd594ab0..1d5de8795 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1912,7 +1912,7 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm): ] - if AppConfig.objects.last().escolher_numero_materia_proposicao: + if AppConfig.objects.order_by('id').last().escolher_numero_materia_proposicao: fields.append(to_column(('numero_materia_futuro', 12)),) else: if 'numero_materia_futuro' in self._meta.fields: @@ -2024,7 +2024,7 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm): def save(self, commit=True): cd = self.cleaned_data inst = self.instance - receber_recibo = AppConfig.objects.last().receber_recibo_proposicao + receber_recibo = AppConfig.objects.order_by('id').last().receber_recibo_proposicao if inst.pk: if 'tipo_texto' in cd: @@ -2236,7 +2236,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): ) ] - if not AppConfig.objects.last().escolher_numero_materia_proposicao or \ + if not AppConfig.objects.order_by('id').last().escolher_numero_materia_proposicao or \ not self.instance.numero_materia_futuro: if 'numero_materia_futuro' in self._meta.fields: del fields[0][0][3] diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 2545064ad..85432b785 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -488,7 +488,7 @@ class ProposicaoPendente(PermissionRequiredMixin, ListView): data_devolucao__isnull=True) paginator = context['paginator'] page_obj = context['page_obj'] - context['AppConfig'] = sapl.base.models.AppConfig.objects.all().last() + context['AppConfig'] = sapl.base.models.AppConfig.objects.order_by('id').last() context['page_range'] = make_pagination( page_obj.number, paginator.num_pages) context['NO_ENTRIES_MSG'] = 'Nenhuma proposição pendente.' @@ -783,7 +783,7 @@ class ProposicaoCrud(Crud): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['subnav_template_name'] = '' - context['AppConfig'] = sapl.base.models.AppConfig.objects.all().last() + context['AppConfig'] = sapl.base.models.AppConfig.objects.order_by('id').last() context['title'] = '%s (%s)' % ( self.object, self.object.autor) @@ -2843,7 +2843,7 @@ def get_pdf_docacessorios(request, pk): def configEtiquetaMateriaLegislativaCrud(request): - config = ConfigEtiquetaMateriaLegislativa.objects.last() + config = ConfigEtiquetaMateriaLegislativa.objects.order_by('id').last() if request.method == "POST": form = ConfigEtiquetaMateriaLegislativaForms(request.POST, instance=config) if form.is_valid(): diff --git a/sapl/norma/models.py b/sapl/norma/models.py index ac93f5ae0..66b283265 100644 --- a/sapl/norma/models.py +++ b/sapl/norma/models.py @@ -91,14 +91,8 @@ class NormaJuridicaManager(models.Manager): def normas_com_textos_articulados_pendentes(self): qs = self.get_queryset() - qs = qs.filter( - texto_articulado__editable_only_by_owners=False) - - q = models.Q( - texto_articulado__privacidade=0 - ) | models.Q( - texto_articulado__isnull=True - ) + qs = qs.filter(texto_articulado__editable_only_by_owners=False) + q = models.Q(texto_articulado__privacidade=0) | models.Q(texto_articulado__isnull=True) qs = qs.exclude(q) for n in qs: @@ -107,7 +101,7 @@ class NormaJuridicaManager(models.Manager): if count == 1: count = 0 elif count == 2: - d = ta.dispositivos_set.last() + d = ta.dispositivos_set.order_by('id').last() if d.auto_inserido or not d.texto or d.texto == n.ementa: count = 0 elif count == 3: diff --git a/sapl/painel/views.py b/sapl/painel/views.py index 75f5a1b97..4dce384f8 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -354,23 +354,19 @@ def get_cronometro_status(request, name): def get_materia_aberta(pk): - return OrdemDia.objects.filter( - sessao_plenaria_id=pk, votacao_aberta=True).last() + return OrdemDia.objects.filter(sessao_plenaria_id=pk, votacao_aberta=True).last() def get_presentes(pk, response, materia): if type(materia) == OrdemDia: - presentes = PresencaOrdemDia.objects.filter( - sessao_plenaria_id=pk) + presentes = PresencaOrdemDia.objects.filter(sessao_plenaria_id=pk) else: - presentes = SessaoPlenariaPresenca.objects.filter( - sessao_plenaria_id=pk) + presentes = SessaoPlenariaPresenca.objects.filter(sessao_plenaria_id=pk) sessao = SessaoPlenaria.objects.get(id=pk) num_presentes = len(presentes) data_sessao = sessao.data_inicio - oradores = OradorExpediente.objects.filter( - sessao_plenaria_id=pk).order_by('numero_ordem') + oradores = OradorExpediente.objects.filter(sessao_plenaria_id=pk).order_by('numero_ordem') oradores_list = [] for o in oradores: diff --git a/sapl/parlamentares/migrations/0033_auto_20201019_1206.py b/sapl/parlamentares/migrations/0033_auto_20201019_1206.py new file mode 100644 index 000000000..930fe6b9f --- /dev/null +++ b/sapl/parlamentares/migrations/0033_auto_20201019_1206.py @@ -0,0 +1,17 @@ +# Generated by Django 2.2.13 on 2020-10-19 15:06 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('parlamentares', '0032_frente_parlamentar'), + ] + + operations = [ + migrations.AlterModelOptions( + name='mandato', + options={'ordering': ('id',), 'verbose_name': 'Mandato', 'verbose_name_plural': 'Mandatos'}, + ), + ] diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 7e35168d8..675b4a160 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -460,7 +460,7 @@ class Mandato(models.Model): class Meta: verbose_name = _('Mandato') verbose_name_plural = _('Mandatos') - ordering = ('parlamentar', 'legislatura__numero') + ordering = ('id',) def __str__(self): return _('%(parlamentar)s %(legislatura)s') % { diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index a732aed65..9c74d5357 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -782,7 +782,7 @@ class TramitacaoAdmForm(ModelForm): anexados_list = lista_anexados(documento, False) for da in anexados_list: if not da.tramitacaoadministrativo_set.all() \ - or da.tramitacaoadministrativo_set.last() \ + or da.tramitacaoadministrativo_set.order_by('id').last() \ .unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: da.tramitacao = False if tramitacao.status.indicador == "F" else True da.save() @@ -901,7 +901,7 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm): if tramitar_anexados: anexados_list = lista_anexados(documento, False) for da in anexados_list: - tram_anexada = da.tramitacaoadministrativo_set.last() + tram_anexada = da.tramitacaoadministrativo_set.order_by('id').last() if compara_tramitacoes_doc(ant_tram_principal, tram_anexada): tram_anexada.status = nova_tram_principal.status tram_anexada.data_tramitacao = nova_tram_principal.data_tramitacao @@ -1666,7 +1666,7 @@ class TramitacaoEmLoteAdmForm(ModelForm): anexados = lista_anexados(doc, False) for da in anexados: if not da.tramitacaoadministrativo_set.all() \ - or da.tramitacaoadministrativo_set.last() \ + or da.tramitacaoadministrativo_set.order_by('id').last() \ .unidade_tramitacao_destino == tramitacao.unidade_tramitacao_local: da.tramitacao = False if tramitacao.status.indicador == "F" else True da.save() diff --git a/sapl/protocoloadm/tests/test_protocoloadm.py b/sapl/protocoloadm/tests/test_protocoloadm.py index bfc5d769e..214f029c2 100644 --- a/sapl/protocoloadm/tests/test_protocoloadm.py +++ b/sapl/protocoloadm/tests/test_protocoloadm.py @@ -271,7 +271,7 @@ def test_create_tramitacao(admin_client): 'data_tramitacao': date(2016, 8, 21)}, follow=True) - tramitacao = TramitacaoAdministrativo.objects.last() + tramitacao = TramitacaoAdministrativo.objects.order_by('id').last() # Verifica se a tramitacao que obedece as regras de negócios é criada assert tramitacao.data_tramitacao == date(2016, 8, 21) @@ -600,11 +600,11 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() # Verifica se foram criadas as tramitações para os documentos anexados e anexados aos anexados - assert documento_principal.tramitacaoadministrativo_set.last() == tramitacao_principal + assert documento_principal.tramitacaoadministrativo_set.order_by('id').last() == tramitacao_principal assert tramitacao_principal.documento.tramitacao == (tramitacao_principal.status.indicador != "F") assert compara_tramitacoes_doc(tramitacao_principal, tramitacao_anexada) assert DocumentoAdministrativo.objects.get(id=documento_anexado.pk).tramitacao \ @@ -627,8 +627,8 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 @@ -656,8 +656,8 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() form = TramitacaoAdmEditForm(data={}) # Alterando unidade_tramitacao_destino @@ -671,7 +671,7 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_anexada = form.save() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_1 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 @@ -690,8 +690,8 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() assert tramitacao_principal.texto == "Testando a alteração" assert not tramitacao_anexada.texto == "Testando a alteração" @@ -730,11 +730,11 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() # Verifica se não foram criadas as tramitações para os documentos anexados e anexados aos anexados - assert documento_principal.tramitacaoadministrativo_set.last() == tramitacao_principal + assert documento_principal.tramitacaoadministrativo_set.order_by('id').last() == tramitacao_principal assert tramitacao_principal.documento.tramitacao == (tramitacao_principal.status.indicador != "F") assert not tramitacao_anexada assert not tramitacao_anexada_anexada @@ -752,11 +752,11 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_anexada = form.save() - tramitacao_principal = documento_principal.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_principal = documento_principal.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() assert documento_principal.tramitacaoadministrativo_set.all().count() == 1 - assert documento_anexado.tramitacaoadministrativo_set.last() == tramitacao_anexada + assert documento_anexado.tramitacaoadministrativo_set.order_by('id').last() == tramitacao_anexada assert not tramitacao_anexada_anexada form = TramitacaoAdmEditForm(data={}) @@ -772,8 +772,8 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_principal = form.save() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_1 @@ -792,8 +792,8 @@ def test_tramitacoes_documentos_anexados(admin_client): assert form.is_valid() tramitacao_anexada = form.save() - tramitacao_principal = documento_principal.tramitacaoadministrativo_set.last() - tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.last() + tramitacao_principal = documento_principal.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada_anexada = documento_anexado_anexado.tramitacaoadministrativo_set.order_by('id').last() assert tramitacao_principal.unidade_tramitacao_destino == unidade_tramitacao_destino_2 assert tramitacao_anexada.unidade_tramitacao_destino == unidade_tramitacao_destino_2 @@ -1167,8 +1167,8 @@ def test_tramitacao_lote_documentos_views(admin_client): assert documento_anexado.tramitacaoadministrativo_set.all().count() == 1 assert documento_anexado_anexado.tramitacaoadministrativo_set.all().count() == 0 - tramitacao_principal = documento_principal.tramitacaoadministrativo_set.last() - tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.last() + tramitacao_principal = documento_principal.tramitacaoadministrativo_set.order_by('id').last() + tramitacao_anexada = documento_anexado.tramitacaoadministrativo_set.order_by('id').last() assert compara_tramitacoes_doc(tramitacao_anexada, tramitacao_principal) documentos = [documento_principal.id] diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index ed2f0d78f..11449374f 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -96,7 +96,7 @@ def doc_texto_integral(request, pk): can_see = True if not request.user.is_authenticated: - app_config = AppConfig.objects.last() + app_config = AppConfig.objects.order_by('id').last() if app_config and app_config.documentos_administrativos == 'R': can_see = False @@ -318,7 +318,7 @@ class AcompanhamentoDocumentoView(CreateView): class DocumentoAdministrativoMixin: def has_permission(self): - app_config = AppConfig.objects.last() + app_config = AppConfig.objects.order_by('id').last() if app_config and app_config.documentos_administrativos == 'O': return True @@ -1370,7 +1370,7 @@ class TramitacaoAdmCrud(MasterDetailCrud): if tramitar_anexados: docs_anexados = lista_anexados(documento, False) for da in docs_anexados: - tram_anexada = da.tramitacaoadministrativo_set.last() + tram_anexada = da.tramitacaoadministrativo_set.order_by('id').last() if compara_tramitacoes_doc(tram_anexada, tramitacao): tramitacoes_deletar.append(tram_anexada) if da.tramitacaoadministrativo_set.count() == 0: