Browse Source

Otimização de consultas em views

pull/3474/head
AlGouvea 4 years ago
parent
commit
92f53aa7a2
  1. 14
      sapl/comissoes/views.py
  2. 9
      sapl/materia/views.py
  3. 67
      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)

67
sapl/protocoloadm/views.py

@ -1118,38 +1118,41 @@ 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['temp_object_list'] = []
) context['object_list'] = []
else:
context['object_list'] = [] context['temp_object_list'] = context['object_list'].order_by(
for obj in context['temp_object_list']: 'numero', '-ano')
if not obj.pk == int(context['root_pk']): context['object_list'] = []
documento_principal = DocumentoAdministrativo.objects.get( for obj in context['temp_object_list']:
id=context['root_pk']) if not obj.pk == int(context['root_pk']):
documento_anexado = obj documento_principal = DocumentoAdministrativo.objects.get(
is_anexado = Anexado.objects.filter(documento_principal=documento_principal, id=context['root_pk'])
documento_anexado=documento_anexado).exists() documento_anexado = obj
if not is_anexado: is_anexado = Anexado.objects.filter(documento_principal=documento_principal,
ciclico = False documento_anexado=documento_anexado).exists()
anexados_anexado = Anexado.objects.filter( if not is_anexado:
documento_principal=documento_anexado) ciclico = False
anexados_anexado = Anexado.objects.filter(
while anexados_anexado and not ciclico: documento_principal=documento_anexado)
anexados = []
while anexados_anexado and not ciclico:
for anexo in anexados_anexado: anexados = []
if documento_principal == anexo.documento_anexado: for anexo in anexados_anexado:
ciclico = True
else: if documento_principal == anexo.documento_anexado:
for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado): ciclico = True
anexados.append(a) else:
for a in Anexado.objects.filter(documento_principal=anexo.documento_anexado):
anexados_anexado = anexados anexados.append(a)
if not ciclico: anexados_anexado = anexados
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