Browse Source

Otimização de consultas em views (#3474)

* Otimização de consultas em views

* Update sapl/protocoloadm/views.py

Co-authored-by: Edward <9326037+edwardoliveira@users.noreply.github.com>
pull/3486/head
Alvaro Gouvea 3 years ago
committed by Edward Oliveira
parent
commit
fd86b7b79f
  1. 14
      sapl/comissoes/views.py
  2. 9
      sapl/materia/views.py
  3. 66
      sapl/protocoloadm/views.py

14
sapl/comissoes/views.py

@ -351,15 +351,17 @@ class AdicionaPautaView(PermissionRequiredMixin, FilterView):
context['root_pk'] = context['object'].comissao.pk context['root_pk'] = context['object'].comissao.pk
qr = self.request.GET.copy() qr = self.request.GET.copy()
materias_pauta = PautaReuniao.objects.filter(reuniao=context['object']) materias_pauta = PautaReuniao.objects.filter(reuniao=context['object'])
nao_listar = [mp.materia.pk for mp in materias_pauta] nao_listar = [mp.materia.pk for mp in materias_pauta]
context['object_list'] = context['object_list'].filter( if not len(qr):
tramitacao__unidade_tramitacao_destino__comissao=context['root_pk'] context['object_list'] = []
).exclude(materia__pk__in=nao_listar).order_by( else:
"materia__tipo", "-materia__ano", "materia__numero" context['object_list'] = context['object_list'].filter(
) tramitacao__unidade_tramitacao_destino__comissao=context['root_pk']
).exclude(materia__pk__in=nao_listar).order_by(
"materia__tipo", "-materia__ano", "materia__numero"
)
context['numero_resultados'] = len(context['object_list']) context['numero_resultados'] = len(context['object_list'])
context['show_results'] = show_results_filter_set(qr) context['show_results'] = show_results_filter_set(qr)

9
sapl/materia/views.py

@ -2263,8 +2263,13 @@ class DocumentoAcessorioEmLoteView(PermissionRequiredMixin, FilterView):
qr = self.request.GET.copy() qr = self.request.GET.copy()
context['tipos_docs'] = TipoDocumento.objects.all() context['tipos_docs'] = TipoDocumento.objects.all()
context['object_list'] = context['object_list'].order_by(
'ano', 'numero') if not len(qr):
context['object_list'] = []
else:
context['object_list'] = context['object_list'].order_by(
'ano', 'numero')
context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else '' context['filter_url'] = ('&' + qr.urlencode()) if len(qr) > 0 else ''
context['show_results'] = show_results_filter_set(qr) context['show_results'] = show_results_filter_set(qr)

66
sapl/protocoloadm/views.py

@ -1122,38 +1122,40 @@ class DocumentoAnexadoEmLoteView(PermissionRequiredMixin, FilterView):
return context return context
qr = self.request.GET.copy() qr = self.request.GET.copy()
context['temp_object_list'] = context['object_list'].order_by( if not len(qr):
'numero', '-ano' context['object_list'] = []
) else:
context['temp_object_list'] = context['object_list'].order_by(
context['object_list'] = [] 'numero', '-ano')
for obj in context['temp_object_list']: context['object_list'] = []
if not obj.pk == int(context['root_pk']): for obj in context['temp_object_list']:
documento_principal = DocumentoAdministrativo.objects.get( if not obj.pk == int(context['root_pk']):
id=context['root_pk']) documento_principal = DocumentoAdministrativo.objects.get(
documento_anexado = obj id=context['root_pk'])
is_anexado = Anexado.objects.filter(documento_principal=documento_principal, documento_anexado = obj
documento_anexado=documento_anexado).exists() is_anexado = Anexado.objects.filter(documento_principal=documento_principal,
if not is_anexado: documento_anexado=documento_anexado).exists()
ciclico = False if not is_anexado:
anexados_anexado = Anexado.objects.filter( ciclico = False
documento_principal=documento_anexado) anexados_anexado = Anexado.objects.filter(
documento_principal=documento_anexado)
while anexados_anexado and not ciclico:
anexados = [] while anexados_anexado and not ciclico:
anexados = []
for anexo in anexados_anexado:
for anexo in anexados_anexado:
if documento_principal == anexo.documento_anexado:
ciclico = True if documento_principal == anexo.documento_anexado:
else: ciclico = True
for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado): else:
anexados.append(a) for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado):
anexados.append(a)
anexados_anexado = anexados
anexados_anexado = anexados
if not ciclico:
context['object_list'].append(obj) if not ciclico:
context['object_list'].append(obj)
context['numero_res'] = len(context['object_list']) context['numero_res'] = len(context['object_list'])

Loading…
Cancel
Save