예제 #1
0
 def save(self):
     b = Bussiness()
     turno = self.cleaned_data['hora']
     telefono = self.cleaned_data['telefono']
     modificado = b.modificar_linea_reserva(self.lr, turno, telefono)
     logger.debug("Modificado %s"%modificado)
     return modificado
예제 #2
0
def cancelar_reserva(request, lr_id=None):
    b = Bussiness()
    if request.method == 'POST':
        form = CancelarReservaForm(data=request.POST)
        if form.is_valid():
            reserva = form.cleaned_data["turnos"]
            motivo = form.cleaned_data["motivo"]
            if b.cancelar_reserva(reserva, motivo, request.user.get_profile()):
                messages.success(request, u'Reserva cancelada con éxito')
            siguiente = form.cleaned_data['next'] if form.cleaned_data['next'] else request.path
            return HttpResponseRedirect(siguiente)
    elif lr_id and LineaDeReserva.objects.filter(id=lr_id).exists():
        lr = LineaDeReserva.objects.get(id=lr_id)
        if lr.estado != Turno.RESERVADO or lr.turno.estado != Turno.RESERVADO:
            messages.warning(request, u'No puede cancelar una reserva con un estado distinto a reservado')
            logger.warning('Intentando cancelar la linea de reserva %s con estado %s'%(lr.id,lr.estado))
        form = CancelarReservaForm(initial={'afiliado':lr.reserva.afiliado.id,
                                            'numero':lr.reserva.afiliado.numero,
                                            'dni':lr.reserva.afiliado.dni,
                                            'next':request.GET.get('next')
                                            },
                                   lr=lr)
    else:
        form = CancelarReservaForm(initial=request.GET)
    return render(request, "turno/cancelar_reserva.html", locals())
예제 #3
0
 def __init__(self, lr=None, *args, **kwargs):
     super(ModificarReservaForm, self).__init__(*args, **kwargs)
     import calendar
     self.lr = lr
     b = Bussiness()
     dias = [(calendar.timegm(dia['fecha'].utctimetuple()), 
              dia['fecha'].strftime('%d %b %Y')) 
             for dia in b.getDiaTurnos(lr.turno.ee.especialista.id) 
             if dia['estado'] is None]
     dias.insert(0,('',"Seleccionar dia para modificar"))
     self.fields['dia'] = forms.CharField(widget=forms.Select(choices=dias), required=False)
예제 #4
0
def confirmar_reserva(request):
    b = Bussiness()
    if request.method == 'POST':
        form = ConfirmarTurnoForm(request.POST)
        if form.is_valid():
            reservas = form.cleaned_data["turnos"]
            if b.confirmar_reserva(reservas, request.user.get_profile()):
                messages.success(request, u'Reserva confirmada con éxito')
            return HttpResponseRedirect(request.path)
    else:
        form = ConfirmarTurnoForm()
    return render(request, "turno/confirmar.html", locals())
예제 #5
0
def get_reservas_especialista(request, especialidad, especialista, year, month, day):
    b = Bussiness()
    ee = EspecialistaEspecialidad.objects.filter(especialidad=especialidad,
                                                 especialista=especialista)
    fecha = datetime.date(int(year), int(month), int(day))
    lineas = b.get_reserva_especialista(ee, fecha)
    data = [{"fecha_reserva": lr.reserva.fecha,
             "fecha_turno": lr.turno.fecha,
             "afiliado":lr.reserva.afiliado.full_name(),
             "numero": lr.reserva.afiliado.numero,
             "telefono": lr.reserva.telefono,
             } for lr in lineas]
    return JSONResponse(data)
예제 #6
0
def consultar_reservas(request):
    if len(request.GET) > 0:
        form = ConsultarReservaForm(request.GET)
        if form.is_valid():
            b=Bussiness()
            object_list = b.consultar_reservas(especialidad=form.cleaned_data['especialidad'], 
                                             especialista=form.cleaned_data['especialista'], 
                                             afiliado=form.cleaned_data['afiliado'], 
                                             fecha_turno=form.cleaned_data['fecha_turno'],
                                             fecha_reserva=form.cleaned_data['fecha_reserva'],
                                             estado=form.cleaned_data['estado'],)
    else:
        form = ConsultarReservaForm(initial=request.GET)
    return TemplateResponse(request, "turno/buscar.html", locals())
예제 #7
0
    def prompt_init():
        parent_init = Bussiness.prompt_init()

        rooms = int(input("Enter number of rooms: "))

        parent_init.update({"rooms": rooms})
        return parent_init
예제 #8
0
    def prompt_init():
        parent_init = Bussiness.prompt_init()

        slots = int(input("Enter number of slots: "))

        parent_init.update({"slots": slots})

        return parent_init
예제 #9
0
def cancelar_turnos(request):
    if request.method == 'POST':
        form = CancelarTurnoForm(request.POST)
        if form.is_valid():
            ee = EspecialistaEspecialidad.objects.filter(especialidad=form.cleaned_data["especialidad"],
                                                         especialista=form.cleaned_data["especialista"])
            if ee:
                ee = ee[0]
                b = Bussiness()
                fecha = datetime.date.fromtimestamp(form.cleaned_data["fecha"]/1000)
                cancelados = b.cancelar_turnos(ee.especialista.id, fecha)
                messages.success(request, u'%s turnos cancelados' % len(cancelados))
                return HttpResponseRedirect(request.path)
            else:
                messages.error(request, u'La combinacion de especialidad y especialista no coincide')
    else:
        form = CancelarTurnoForm()
    return render(request, "turno/cancelar_turnos.html", locals())
예제 #10
0
def crear_turnos(request):
    b = Bussiness()
    if request.method == 'POST':
        form = CrearTurnoForm(request.POST)
        if form.is_valid():
            logger.info("<%s> esta creando turnos" % request.user.username)
            service = ReservaTurnosService()
            creados = service.crear_turnos(dias=form.cleaned_data['dias'])
            if creados:
                messages.success(request, 
                                 u'%s Turnos creados con éxito' % len(creados))
            else:
                messages.warning(request, 
                                 u'No se creó ningún turno, puede que ya se \
                                 crearon con anterioridad')
            return HttpResponseRedirect(request.path)
    else:
        hasta = (timezone.now() + datetime.timedelta(days=b.DIAS-1)).strftime("%d-%m-%Y")
        last = Turno.objects.order_by('fecha').last()
        frecuencia = b.MINUTOS
        form = CrearTurnoForm(initial={'dias':b.DIAS})
        historial = b.get_historial_creacion_turnos()
    return render(request, "turno/creacion.html", locals())
예제 #11
0
def getTurnosDisponibles(request, especialista_id, year, month, day):
    bussiness = Bussiness()
    fecha = datetime.date(int(year), int(month), int(day))
    data = bussiness.getTurnosDisponibles(especialista_id, fecha)
    return JSONResponse(data)
예제 #12
0
def getDiaTurnos(request, especialista_id):
    bussiness = Bussiness()
    data = bussiness.getDiaTurnos(especialista_id)
    return JSONResponse(data)    
예제 #13
0
def getAfiliado(request, parametro, valor):
    bussiness = Bussiness()
    data = bussiness.getAfiliados(parametro, valor)
    return JSONResponse(data)
예제 #14
0
def get_turnos_afiliado(request,afiliado_id,today=False):
    b = Bussiness()
    day = timezone.now() if today else None
    data = b.get_turnos_reservados(afiliado_id, day)
    return JSONResponse(data)
예제 #15
0
def verificarPresentismo(request, afiliado_id):
    bussiness = Bussiness()
    data = {'presentismo_ok': bussiness.presentismoOK(afiliado_id)}
    return JSONResponse(data)