From b0685219fcf85425e34338aff1cc9c7f795aad70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Wed, 21 Aug 2019 13:56:03 -0300 Subject: [PATCH] =?UTF-8?q?Refatora=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/base/views.py | 12 ++++-------- .../migrations/0022_deduplica_protocolos.py | 5 ++--- sapl/templates/base/protocolos_duplicados.html | 8 +++++--- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/sapl/base/views.py b/sapl/base/views.py index 8fec1a305..f6f29e8ba 100644 --- a/sapl/base/views.py +++ b/sapl/base/views.py @@ -1615,14 +1615,10 @@ class ListarProtocolosComMateriasView(PermissionRequiredMixin, ListView): def protocolos_duplicados(): - protocolos = {} - for p in Protocolo.objects.order_by('-ano', 'numero'): - key = "{}/{}".format(p.numero, p.ano) - val = protocolos.get(key, list()) - val.append(p) - protocolos[key] = val - - return [(v[0], len(v)) for (k, v) in protocolos.items() if len(v) > 1] + return [ + protocolo for protocolo in Protocolo.objects.values( + 'numero', 'ano').order_by('-ano', 'numero').annotate(total=Count('numero')).filter(total__gt=1) + ] class ListarProtocolosDuplicadosView(PermissionRequiredMixin, ListView): diff --git a/sapl/protocoloadm/migrations/0022_deduplica_protocolos.py b/sapl/protocoloadm/migrations/0022_deduplica_protocolos.py index 97c5b2e4e..790030a5f 100644 --- a/sapl/protocoloadm/migrations/0022_deduplica_protocolos.py +++ b/sapl/protocoloadm/migrations/0022_deduplica_protocolos.py @@ -10,9 +10,8 @@ def deduplica_protocolos(apps, schema_editor): protocolos = protocolos_duplicados() for protocolo in protocolos: - protocolos_clones = Protocolo.objects.filter(numero=protocolo[0].numero, ano=protocolo[0].ano).order_by('id')[1:] - for protocolo_dispensavel in protocolos_clones: - protocolo_dispensavel.delete() + protocolo_principal = Protocolo.objects.filter(numero=protocolo['numero'], ano=protocolo['ano']).order_by('-id')[0] + Protocolo.objects.filter(numero=protocolo['numero'], ano=protocolo['ano']).exclude(id=protocolo_principal.id).delete() class Migration(migrations.Migration): diff --git a/sapl/templates/base/protocolos_duplicados.html b/sapl/templates/base/protocolos_duplicados.html index 6a45a0045..be71fc499 100644 --- a/sapl/templates/base/protocolos_duplicados.html +++ b/sapl/templates/base/protocolos_duplicados.html @@ -15,12 +15,14 @@ - {% for protocolo, quantidade in protocolos_duplicados %} + {% for protocolo in protocolos_duplicados %} - {{ protocolo }} + + {{ protocolo.numero }}/{{ protocolo.ano }} + - {{ quantidade }} + {{ protocolo.total }} {% endfor %}