def sla_ocorrencias(request, time_id=None): ''' Ocorrencias com SLA estourado. ''' SaveInfo(request.user, 'sla_ocorrencias') operador = Operador.objects.get(user=request.user.id) ocorrencias = Ocorrencia.objects.filter(status__descricao='Aberto') SLA = [] SLA_24 = [] SLA_25 = [] SLA_26 = [] SLA_28 = [] SLA_cliente = [] if not request.user.has_perm('manager.completo'): ocorrencias = ocorrencias.filter(cliente__nome=operador.cliente) for ocorrencia in ocorrencias: tempo = ocorrencia.SLA.tempo total = datetime.now() - ocorrencia.data_ini if total >= timedelta(hours=24, seconds=1): SLA_cliente.append(ocorrencia) if timedelta(hours=21, seconds=0) <= total <= timedelta(hours=24, seconds=0): SLA.append(ocorrencia) elif timedelta(hours=24, seconds=1) <= total <= timedelta(hours=25, seconds=0): SLA_24.append(ocorrencia) elif timedelta(hours=25, seconds=1) <= total <= timedelta(hours=26, seconds=0): SLA_25.append(ocorrencia) elif timedelta(hours=26, seconds=1) <= total <= timedelta(hours=28, seconds=0): SLA_26.append(ocorrencia) elif total >= timedelta(hours=28, seconds=10): SLA_28.append(ocorrencia) if time_id: time_id = int(time_id) if not time_id: sla_out = SLA msg = '' elif time_id == 24: sla_out = SLA_24 msg = '24 Horas' elif time_id == 25: sla_out = SLA_25 msg = '25 Horas' elif time_id == 26: sla_out = SLA_26 msg = '26 Horas' elif time_id == 28: sla_out = SLA_28 msg = '28 Horas' if not request.user.has_perm('manager.completo'): sla_out = SLA_cliente sla_out = Paginacao(request, sla_out, 15) return render_to_response("sla_ocorrencias.html", {'msg':msg, 'sla_out': sla_out, 'user':request.user})
def ocorrencias(request): ''' Mostra todas as ocorrências, separando-as por Abertas, SLA estourado, Desatualizadas (Dashboard). ''' SaveInfo(request.user, 'ocorrencias') SLA = [] SLA_24 = [] SLA_25 = [] SLA_26 = [] SLA_28 = [] SLA_cliente = [] assentamentos = [] ocorrencias = Ocorrencia.objects.filter(status__descricao="Aberto") permission = request.user.has_perm('manager.completo') encerradas = Ocorrencia.objects.filter(status__descricao='Fechado') numPenAbertura = Ocorrencia.objects.filter(status__descricao='Pendente Abertura') numPenEncerramento = Ocorrencia.objects.filter(status__descricao='Pendente Encerramento') if not request.user.has_perm('manager.completo'): operador = Operador.objects.get(user=request.user.id) ocorrencias = ocorrencias.filter(cliente__nome=operador.cliente) encerradas = Ocorrencia.objects.filter(cliente__nome=operador.cliente).filter(status__descricao='Fechado') numPenAbertura = numPenAbertura.filter(cliente__nome=operador.cliente) numPenEncerramento = numPenEncerramento.filter(cliente__nome=operador.cliente) nao_atribuido = [id for id in Ocorrencia.objects.exclude(status__descricao='Fechado') if not id.operador.has_perm('manager.completo')] for ocorrencia in ocorrencias: try: last_data = ocorrencia.assentamento_set.all().order_by('-data')[0] diferenca = datetime.now() - last_data.data last_data = last_data.data except: diferenca = datetime.now() - ocorrencia.data_ini last_data = ocorrencia.data_ini tempo = ocorrencia.SLA.tempo total = datetime.now() - ocorrencia.data_ini if total >= timedelta(hours=24, seconds=0): SLA_cliente.append(ocorrencia) if timedelta(hours=21, seconds=0) <= total <= timedelta(hours=24, seconds=0): SLA.append(ocorrencia) elif timedelta(hours=24, seconds=1) <= total <= timedelta(hours=25, seconds=0): SLA_24.append(ocorrencia) elif timedelta(hours=25, seconds=1) <= total <= timedelta(hours=26, seconds=0): SLA_25.append(ocorrencia) elif timedelta(hours=26, seconds=1) <= total <= timedelta(hours=28, seconds=0): SLA_26.append(ocorrencia) elif total >= timedelta(hours=28, seconds=10): SLA_28.append(ocorrencia) if diferenca >= timedelta(hours=2): assentamentos.append([ocorrencia, last_data]) if not request.user.has_perm('manager.completo'): count_sla = len(SLA_cliente) else: count_sla = len(SLA) + len(SLA_24) + len(SLA_25) + len(SLA_26) + len(SLA_28) return render_to_response("ocorrencias.html", {'abertas': ocorrencias[:5], 'assentamentos': assentamentos[:5], 'SLA': SLA[:3], 'SLA_24': SLA_24[:3], 'SLA_25': SLA_25[:3], 'SLA_26': SLA_26[:3], 'SLA_28': SLA_28[:3], 'SLA_cliente':SLA_cliente[:5], 'nao_atribuido':nao_atribuido, 'usuario': request.user, 'permission': permission, 'user':request.user, 'encerradas':encerradas[:5], 'numAbertas':ocorrencias.count(), 'numTratativa':len(assentamentos), 'numSLA':count_sla, 'numPenAbertura':numPenAbertura.count(), 'numPenEncerramento':numPenEncerramento.count(), 'numFechadas':encerradas.count()})