def registro(request):
    usuario = request.POST["escolhido"]
    est = Estagiario.objects.get(pk=usuario)
    #Se o usuário não tem nenhuma entrada em aberto naquele dia:
    if RegistroPonto.objects.filter(Estagiario=est,
                                    Data=datetime.now(),
                                    Saida=None).count() == 0:
        novoreg = RegistroPonto(Estagiario=est,
                                Data=datetime.now(),
                                Entrada=datetime.time(datetime.now()))
        novoreg.save()
        estado = 1
    #Se o usuário ja possui uma entrada naquele dia:
    else:

        def tolerancia(Hora, Fixo):
            fixodelta = timedelta(minutes=Fixo.minute, hours=Fixo.hour)
            horadelta = timedelta(minutes=Hora.minute, hours=Hora.hour)
            hmax = fixodelta + timedelta(minutes=15)
            hmin = fixodelta - timedelta(minutes=15)
            if horadelta > hmax:
                return 0
            elif horadelta < hmin:
                return 0
            else:
                return 1

        reg = RegistroPonto.objects.get(Estagiario=est,
                                        Data=datetime.now(),
                                        Saida=None)
        reg.Saida = datetime.time(datetime.now())
        reg.save()
        #Se o horário está dentro do Horário Fixo então ele é automaticamente aceito.
        for fix in HorarioFixo.objects.filter(
                Estagiario=est,
                DiaSemana=((datetime.now().weekday() + 2) % 7)):
            if tolerancia(reg.Entrada, fix.Entrada) == 1:
                if tolerancia(reg.Saida, fix.Saida) == 1:
                    reg.Entrada = fix.Entrada
                    reg.Saida = fix.Saida
                    reg.Aceito = True
                    reg.save()

        estado = 2

    return HttpResponseRedirect(('/?est=%d&estado=%d') % (est.id, estado))
Example #2
0
def novo(request):
    if request.method == 'POST':
        form = FormRegistroPonto(request.POST, request.FILES)
        if form.is_valid():
            dados = form.cleaned_data
            registroponto = RegistroPonto(
                dia = dados['dia'],
                hora = dados['hora'],
                tipo = dados['tipo'],
                imagem = '',
                usuario = request.user,
                )
            registroponto.save()


            return render_to_response("gravado.html",{})

    else:
        form = FormRegistroPonto()

    return render_to_response("novoregistro.html",{'form':form}, context_instance=RequestContext(request))
def registro(request):    
    usuario = request.POST["escolhido"]
    est = Estagiario.objects.get(pk=usuario)    
    #Se o usuário não tem nenhuma entrada em aberto naquele dia:
    if RegistroPonto.objects.filter(Estagiario= est, Data = datetime.now(), Saida=None).count() == 0:
        novoreg = RegistroPonto(Estagiario=est, Data=datetime.now(), Entrada=datetime.time(datetime.now()))
        novoreg.save()
        estado = 1
    #Se o usuário ja possui uma entrada naquele dia:
    else:
        def tolerancia(Hora, Fixo):
            fixodelta=timedelta(minutes=Fixo.minute,hours=Fixo.hour)
            horadelta=timedelta(minutes=Hora.minute,hours=Hora.hour)
            hmax = fixodelta + timedelta(minutes=15)
            hmin = fixodelta - timedelta(minutes=15)    
            if horadelta > hmax:
                    return 0
            elif horadelta < hmin:
                    return 0
            else:
                    return 1

        reg = RegistroPonto.objects.get(Estagiario= est, Data = datetime.now(), Saida=None)
        reg.Saida = datetime.time(datetime.now())
        reg.save()
        #Se o horário está dentro do Horário Fixo então ele é automaticamente aceito.
        for fix in HorarioFixo.objects.filter(Estagiario = est, DiaSemana=((datetime.now().weekday()+2) % 7)):
            if tolerancia(reg.Entrada,fix.Entrada) == 1:
                if tolerancia(reg.Saida, fix.Saida) ==1:
                    reg.Entrada = fix.Entrada
                    reg.Saida = fix.Saida
                    reg.Aceito = True
                    reg.save()


        estado = 2

    return HttpResponseRedirect( ('/?est=%d&estado=%d') % (est.id,estado) )