1
I’m in a strange situation with Django and Count method, I have a queryset that I called ranges and then I have a variable qtd_intervalo
where I store the intervalos.count()
then I do the tests:
if qtd_intervalo > 1:
if qtd_intervalo ==1:
qtd_intervalos = intervalos.count()
if qtd_intervalos > 1:
#se existem intervalos em aberto então eu irei finalizalos e pronto
intervalos.update(finalizada = True,data_finalizacao = agora,data_final=agora,usuario_edicao = usuario)
_horario_final = "{0}:{1}".format(agora.hour,agora.minute)
usuario.flags['em_trabalho'] = True
usuario.flags['em_intervalo'] = False
usuario.save()
_html = _FECHAR_PONTO + _ABRIR_INTERVALO
return {"sucesso":True,'html':_html,
"mensagem":"Foram finalizados {0} intervalos às {1}".format(qtd_intervalos,_horario_final)}
elif qtd_intervalos == 1:
_hora_inicio = intervalos[0].data_inicial
_horario_inicio = "{0}:{1}".format(_hora_inicio.hour,_hora_inicio.minute)
_horario_final = "{0}:{1}".format(agora.hour,agora.minute)
intervalos.update(finalizada = True,data_finalizacao = agora,data_final=agora,usuario_edicao = usuario)
usuario.flags['em_trabalho'] = True
usuario.flags['em_intervalo'] = False
usuario.save()
_html = _FECHAR_PONTO + _ABRIR_INTERVALO
return {"sucesso":True,'html':_html,
"mensagem":"Foi finalizado o intervalo aberto em {0} às {1}".format(_horario_inicio,_horario_final)}
else:
intervalo = Calendario(dependencia = calendario_ponto,usuario = usuario)
_data_final = agora + relativedelta(minutes=30)
nome = "Intervalo de {0}".format(usuario)
descricao = "Intervalo: {0}".format(agora)
flags = {'cancelada':False,'lida':False,
'situacao_finalizacao':{"status":"aguardando início",'cor':'gray','icone':"fa fa-hourglass-o fa-2x",
'icone_normal':"fa fa-hourglass-o",'estilo':'default',},
'percentual':0,"ponto":True,"intervalo":True,"em_servico":False}
etc..
But time or again inside this if I get the bug:
File "/home/caaorg/caaorg/institutional/models.py" in open_close 4374. _hora_inicio = intervals[0]. starting date_initial
File "/home/caaorg/virtual-caaorg/lib/python3.7/site-Packages/Django/db/models/query.py" in getitem 309. Return Qs. _result_cache[0]
Exception Type: Indexerror at /accounting/change-status-my-range/ Exception Value: list index out of range
Which makes no sense because I checked earlier if the amount of items in queryset is greater than zero...
Django 2.2.16 and python 3.7
Does anyone have any idea what this might be?
I didn’t see in your code where it’s initialized
intervalos
, you could update your post?– Paulo Marques