예제 #1
0
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})
예제 #2
0
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()})