Repository: interlegis/sapl

Issue:
Deixar a ordenação padrão de documentos acessórios na ordem que os documentos são inseridos
<!--- Forneça um resumo geral da _issue_ no título acima -->
Os documentos acessórios na apresentação padrão não tem uma ordem especifica de apresentação, eles ficam apresentados de forma aleatória, caso o usuário queira uma ordem, é preciso um click NOME OU DATA OU TIPO ETC.

Isso confunde o usuário que as vezes insere um documento com determinada data, e esse documento vai para o meio da lista

Solicito uma ordenação por data e hora de inserção, que por padrão os documentos sejam apresentado na ordem que foram inseridos, caso o usuário queria outra ordem ele clica em outras formas de ordenação

## Comportamento Esperado
<!--- Se você está descrevendo um _bug_, conte-nos o que deveria acontecer. -->
<!--- Se você está sugerindo uma mudança/melhoria, conte-nos como deve funcionar. -->
Deixar a apresentação padrão dos documentos acessórios, na ordem que foram INSERIDOS.

## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. --> Hoje não existe uma ordem padrão, os documentos ficam listados de forma aleatória, caso o usuário insira um arquivo com uma da x, esse aquivo vai para o meio da lista por exemplo, deixando o usuário em dúvida se realmente foi inserido o arquivo, caso esse aquivo do usuário inserido fosse o primeiro da lista, ele não ficaria confuso.

## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->

## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1.
2.
3.
4.

## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->

## Imagens do Ocorrido
<!--- Representação visual em vídeo ou imagem do ocorrido -->
<!--- Se está descrevendo um bug poste imagens ou vídeos na reprodução do bug citado, caso se aplique -->

## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_):
* Nome e versão do navegador:
* Nome e versão do Sistema Operacional (desktop ou mobile):
* Link para o seu projeto (Caso de fork deste projeto):



Discussion:

Resolving patch:
diff --git a/sapl/materia/migrations/0074_auto_20201006_0734.py b/sapl/materia/migrations/0074_auto_20201006_0734.py
new file mode 100644
--- /dev/null
+++ b/sapl/materia/migrations/0074_auto_20201006_0734.py
@@ -0,0 +1,17 @@
+# Generated by Django 2.2.13 on 2020-10-06 10:34
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('materia', '0073_auto_20200910_1420'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='documentoacessorio',
+            options={'ordering': ('data', '-data_ultima_atualizacao'), 'verbose_name': 'Documento Acessório', 'verbose_name_plural': 'Documentos Acessórios'},
+        ),
+    ]
diff --git a/sapl/materia/models.py b/sapl/materia/models.py
--- a/sapl/materia/models.py
+++ b/sapl/materia/models.py
@@ -541,15 +541,10 @@ def __str__(self):
 @reversion.register()
 class DocumentoAcessorio(models.Model):
     materia = models.ForeignKey(MateriaLegislativa, on_delete=models.CASCADE)
-    tipo = models.ForeignKey(TipoDocumento,
-                             on_delete=models.PROTECT,
-                             verbose_name=_('Tipo'))
+    tipo = models.ForeignKey(TipoDocumento, on_delete=models.PROTECT, verbose_name=_('Tipo'))
     nome = models.CharField(max_length=50, verbose_name=_('Nome'))
-
-    data = models.DateField(blank=True, null=True,
-                            default=None, verbose_name=_('Data'))
-    autor = models.CharField(
-        max_length=200, blank=True, verbose_name=_('Autor'))
+    data = models.DateField(blank=True, null=True, default=None, verbose_name=_('Data'))
+    autor = models.CharField(max_length=200, blank=True, verbose_name=_('Autor'))
     ementa = models.TextField(blank=True, verbose_name=_('Ementa'))
     indexacao = models.TextField(blank=True)
     arquivo = models.FileField(
@@ -560,18 +555,13 @@ class DocumentoAcessorio(models.Model):
         verbose_name=_('Texto Integral'),
         storage=OverwriteStorage(),
         validators=[restringe_tipos_de_arquivo_txt])
-
-    proposicao = GenericRelation(
-        'Proposicao', related_query_name='proposicao')
-
-    data_ultima_atualizacao = models.DateTimeField(
-        blank=True, null=True,
-        auto_now=True,
-        verbose_name=_('Data'))
+    proposicao = GenericRelation('Proposicao', related_query_name='proposicao')
+    data_ultima_atualizacao = models.DateTimeField(blank=True, null=True, auto_now=True, verbose_name=_('Data'))
 
     class Meta:
         verbose_name = _('Documento Acessório')
         verbose_name_plural = _('Documentos Acessórios')
+        ordering = ('data', '-data_ultima_atualizacao')
 
     def __str__(self):
         return _('%(tipo)s - %(nome)s de %(data)s por %(autor)s') % {


Test patch: