Пример #1
0
def reservars(request):
    existe = "reserva"
    guardac = request.POST['cliente']
    print(guardac)
    #print(Cliente.objects.get(cli_id=guardac))
    form = ReservaForm(request.POST) # A form bound to the POST data
    men= MensajeForm(request.POST)
    if form.is_valid(): # All validation rules pass
        print("reserva validad")
        if men.is_valid():
            men.save()
            form.save()
            met = Mensaje.objects.latest('men_id')
            ret = Reserva.objects.latest('res_id')
            ret.estado_est=Estado.objects.get(est_id=3)
            ret.cliente_cli=Cliente.objects.get(cli_id=guardac)
            ret.mensaje_men=met
            ret.save()
            return HttpResponseRedirect('/reservas/')
        else:
            print(men)
            print("formato mensaje invalido")
    else:
        print("formato reserva invalido")

    return render_to_response('commerce/Reserva/generarReserva.html', {'guardac':guardac,'existe':existe,'form': form, 'men':men})
Пример #2
0
def nueva_reserva(request):
    error = 0
    usuario = request.user
    if request.method == 'POST':
        formulario = ReservaForm(request.POST)
        datetime.datetime.utcnow().replace(tzinfo=utc)
        if formulario.is_valid():
            id = request.POST['objecte']
            # selecionamos la fechas para hacer la comparativa

            data_ini = request.POST['data_inici']
            data_final = request.POST['data_final']
            reserva = Reserva.objects.all()

            for element in reserva:
                if(element.objecte==Objecte.objects.get(pk=id)):
                    if(datetime.datetime.strptime(data_ini,"%d/%m/%Y %H:%M").replace(tzinfo=utc) >= element.data_inici and datetime.datetime.strptime(data_ini,"%d/%m/%Y %H:%M").replace(tzinfo=utc) <= element.data_final):
                        error = 1
                        break
                    elif(datetime.datetime.strptime(data_final,'%d/%m/%Y %H:%M').replace(tzinfo=utc) >= element.data_inici and datetime.datetime.strptime(data_final,"%d/%m/%Y %H:%M").replace(tzinfo=utc) <= element.data_final):
                        error = 1
                        break

            if(error!=1):
                obj=Objecte.objects.get(pk=id)
                obj.disponible = 'No'
                obj.save()
                formulario.save()
                return espai_usuari(request)
            else:
                pass
        else:
            messages.error(request, "Error")
    else:
        formulario = ReservaForm()
        #formulario.fields['objecte'].queryset = Objecte.objects.filter(disponible='Si')
        messages.error(request, "Error")

    return render(request, 'reserves/nueva_reserva.html', {'formulario': formulario, 'error':error})
Пример #3
0
def nuevaReserva (request, recurso_id):
    """
        Este método utiliza la infraestructura para el manipulador porque las nuevas
        reservas hay que tratarlas con cuidado a la hora de introducirlas en la base
        de datos.
    """
    #manipulador = Reserva.AddManipulator ()
    
    errors = {}
    if request.POST:
        new_data = request.POST.copy ()
        new_data['responsable'] = request.user.id
        new_data['inicio_date'] = new_data['fechaianyo'] + '-' + new_data['fechaimes'] + '-' + new_data['fechaidia']
        new_data['fin_date'] = new_data['inicio_date']
        new_data['fin'] = new_data['fin_date'] + " " + new_data['fin_time']
        new_data['inicio'] = new_data['inicio_date'] + " " + new_data['inicio_time']
        form = ReservaForm(new_data)
        if form.is_valid():
            if form.cleaned_data['inicio'] > form.cleaned_data['fin']:
                errors['inicio_date'] = ['La fecha de inicio no puede ser mayor que la de fin']
            if form.cleaned_data['inicio'] < datetime.datetime.now():
                errors['fin_date'] = ['La fecha de inicio no puede ser anterior al día de hoy']
            colisiones = Reserva.objects.filter (
                    Q(recurso = new_data['recurso']) & (
                        (
                            Q(inicio__lt = form.cleaned_data['inicio']) & Q(fin__gt = form.cleaned_data['inicio'])
                        )
                            |
                        (
                            Q(inicio__lt = form.cleaned_data['fin']) & Q(fin__gt = form.cleaned_data['fin'])
                        )
                            |
                        (
                            Q(inicio__gt = form.cleaned_data['inicio']) & Q(fin__lt = form.cleaned_data['fin'])
                        )
                    )
                )
            if colisiones:
                errors['colision'] = "Lo sentimos, este recurso se encuentra ya reservado en este espacio de tiempo"
                errors['reservas_previas'] = colisiones
            if not errors:
                form.save()
        else:
            errors = form.errors

    else:
        errors = new_data = {}
        form = ReservaForm()

    context = {}
    fechaTemplateSimple(context, request) # sobra diaActual, mesActual, anyoActual
    context['recurso_id'] = recurso_id
    context['errors'] = errors
    context['form'] = form
    context['reservas'] = Reserva.getReservas (recurso_id)
    context['task'] = 'recursos'
    context['user'] = request.user
    context['diasMes'] = range(1,32)
    context['meses'] = OPCIONES_MESES
    context['anyos'] = range(settings.CURSO_ESCOLAR_ACTUAL, settings.CURSO_ESCOLAR_ACTUAL + 4)
    context['horas'] = RANGO_HORAS 
    if request.GET:
        try:
            context['calendario'] = Reserva.getCalendario(
                    setDictFunction = setDictRecurso,
                    diccionarioAdicional = {'recurso_id' : recurso_id},
                    semana = request.GET['semana']
                )
            context['semanaAnterior'] = int(request.GET['semana']) - 1
            context['semanaSiguiente'] = int(request.GET['semana']) + 1

        except:
            context['calendario'] = Reserva.getCalendario(
                    setDictFunction = setDictRecurso,
                    diccionarioAdicional = {'recurso_id' : recurso_id},
                )

    else:
        context['calendario'] = Reserva.getCalendario(
                    setDictFunction = setDictRecurso,
                    diccionarioAdicional = {'recurso_id' : recurso_id},
                )
        context['semanaAnterior'] = int(time.strftime("%W")) - 1
        context['semanaSiguiente'] = int(time.strftime("%W")) + 1
    return render_to_response (
            'recursos/richWebBrowser/nueva-reserva.html',
            context,
            context_instance=RequestContext(request)
        )