Exemplo n.º 1
0
def crear_reserva1(request):
    print('Hola jejej')
    if request.method == 'POST':
        if request.user.enabled:
            try:
                space = Space.objects.get(id=request.POST['nombreEspacio'])
                string_inicio = request.POST['fecha_inicio'] + " " + request.POST['hora_inicio']
                print(string_inicio)
                start_date_time = datetime.datetime.strptime(string_inicio, '%Y-%m-%d %H:%M')
                string_fin = request.POST['fecha_fin'] + " " + request.POST['hora_fin']
                print(string_fin)
                end_date_time = datetime.datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

                if start_date_time > end_date_time:
                    messages.warning(request, 'La reserva debe terminar después de iniciar.')
                elif start_date_time < datetime.datetime.now() + datetime.timedelta(hours=1):
                    messages.warning(request, 'Los pedidos deben ser hechos al menos con una hora de anticipación.')
                elif start_date_time.date() != end_date_time.date():
                    messages.warning(request, 'Los pedidos deben ser devueltos el mismo día que se entregan.')
                elif not verificar_horario_habil(start_date_time) and not verificar_horario_habil(end_date_time):
                    messages.warning(request, 'Los pedidos deben ser hechos en horario hábil.')
                else:
                    res = Reservation(space=space, starting_date_time=start_date_time,
                                      ending_date_time=end_date_time,
                                      user=request.user)
                    res.save()
                    print(space)
                    messages.success(request, 'Pedido realizado con éxito')
            except Exception as e:
                messages.warning(request, 'Ingrese una fecha y hora válida.')
        else:
            messages.warning(request, 'Usuario no habilitado para pedir préstamos')

        return redirect('landing_spaces')
 def setUp(self):
     self.user = User.objects.create(email='*****@*****.**')
     self.user.set_password('12345')
     self.user.save()
     self.article1 = Article.objects.create(name='parlante', state='D')
     self.article2 = Article.objects.create(name='alargador', state='P')
     self.article3 = Article.objects.create(name='ak-47', state='P')
     self.space1 = Space(name='quincho', state='P')
     self.space2 = Space(name='multiuso', state='P')
     today = datetime.date.today()
     last_monday = today - datetime.timedelta(days=today.weekday())
     start_time = datetime.time(hour=12, minute=00)
     end_time = datetime.time(hour=15, minute=00)
     start_datetime1 = datetime.datetime.combine(last_monday, start_time)
     end_datetime1 = datetime.datetime.combine(last_monday, end_time)
     self.reservation1 = Reservation(space=self.space1,
                                     user=self.user,
                                     state='A',
                                     starting_date_time=start_datetime1,
                                     ending_date_time=end_datetime1)
     last_tuesday = today - datetime.timedelta(days=(today.weekday() - 1))
     start_datetime2 = datetime.datetime.combine(last_tuesday, start_time)
     end_datetime2 = datetime.datetime.combine(last_tuesday, end_time)
     self.reservation2 = Reservation(space=self.space2,
                                     user=self.user,
                                     state='A',
                                     starting_date_time=start_datetime2,
                                     ending_date_time=end_datetime2)
     print(start_datetime1)
     print(start_datetime2)
Exemplo n.º 3
0
def space_request(request, space_id):
    if request.method == 'POST' and 'picked-date' in request.POST:
        space = Space.objects.get(id=space_id)

        if request.user.enabled:
            try:
                if space.state == 'R':
                    messages.warning(
                        request, 'Sala en reparación, no se puede reservar')
                    return

                string_inicio = request.POST['picked-date'] + " " + \
                                request.POST['picked-start-time']
                start_date_time = datetime.datetime.strptime(
                    string_inicio, '%d/%m/%Y %H:%M')
                string_fin = request.POST['picked-date'] + " " + request.POST[
                    'picked-end-time']
                end_date_time = datetime.datetime.strptime(
                    string_fin, '%d/%m/%Y %H:%M')

                if start_date_time > end_date_time:
                    messages.warning(
                        request,
                        'La reserva debe terminar después de iniciar.')
                elif (start_date_time - datetime.datetime.now() <
                      timedelta(hours=1)) and (not re.search(
                          'quincho', space.name, re.IGNORECASE)):
                    messages.warning(
                        request,
                        'Los pedidos (menos el Quincho) deben ser hechos al menos con una hora de anticipación.'
                    )
                elif start_date_time.date() != end_date_time.date():
                    messages.warning(
                        request,
                        'Los pedidos deben ser devueltos el mismo día que se entregan.'
                    )
                elif not verificar_horario_habil(start_date_time,
                                                 end_date_time, space_id):
                    messages.warning(
                        request,
                        'Los pedidos deben ser hechos en horario hábil.')
                elif not verificar_espacio_quincho(start_date_time,
                                                   end_date_time, space.name):
                    messages.warning(request,
                                     'El quincho debe reservarse 24 antes.')
                else:
                    reservation = Reservation(
                        space=space,
                        starting_date_time=start_date_time,
                        ending_date_time=end_date_time,
                        user=request.user)
                    reservation.save()
                    messages.success(request, 'Pedido realizado con éxito')
            except Exception as e:
                print(e)
                messages.warning(request, 'Ingrese una fecha y hora válida.')
        else:
            messages.warning(request,
                             'Usuario no habilitado para pedir préstamos')
Exemplo n.º 4
0
def article_request(request):
    if request.method == 'POST':
        article = Article.objects.get(id=request.POST['article_id'])

        if request.user.enabled:
            try:
                string_inicio = request.POST[
                    'fecha_inicio'] + " " + request.POST['hora_inicio']
                start_date_time = datetime.strptime(string_inicio,
                                                    '%Y-%m-%d %H:%M')
                string_fin = request.POST['fecha_fin'] + " " + request.POST[
                    'hora_fin']
                end_date_time = datetime.strptime(string_fin, '%Y-%m-%d %H:%M')

                if start_date_time > end_date_time:
                    messages.warning(
                        request,
                        'La reserva debe terminar después de iniciar.')
                elif start_date_time < datetime.now() + timedelta(hours=1):
                    messages.warning(
                        request,
                        'Los pedidos deben ser hechos al menos con una hora de anticipación.'
                    )
                elif start_date_time.date() != end_date_time.date():
                    messages.warning(
                        request,
                        'Los pedidos deben ser devueltos el mismo día que se entregan.'
                    )
                elif not verificar_horario_habil(
                        start_date_time) and not verificar_horario_habil(
                            end_date_time):
                    messages.warning(
                        request,
                        'Los pedidos deben ser hechos en horario hábil.')
                else:
                    reservation = Reservation(
                        article=article,
                        starting_date_time=start_date_time,
                        ending_date_time=end_date_time,
                        user=request.user,
                        type='A')
                    reservation.save()
                    messages.success(request, 'Pedido realizado con éxito')
            except Exception as e:
                messages.warning(request, 'Ingrese una fecha y hora válida.')
        else:
            messages.warning(request,
                             'Usuario no habilitado para pedir préstamos')

        return redirect('/article/' + str(article.id))
def crearReserva(request):
    if request.method == "POST":
        espacio = request.POST['espacio']
        id_espacio = int(espacio)
        espacioSel = Space.objects.get(id=id_espacio)

        initial_datetime = request.POST['ini_time']
        datetime_object2 = datetime.datetime.strptime(initial_datetime, '%Y-%m-%dT%H:%M')

        final_datetime = request.POST['fin_time']
        datetime_object3 = datetime.datetime.strptime(final_datetime, '%Y-%m-%dT%H:%M')

        #b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
        r = Reservation(space=espacioSel, starting_date_time=datetime_object2, ending_date_time=datetime_object3, state='P', user=request.user)
        r.save()
        return landing_spaces(request)
    else:
        return redirect("/")
def make_reservation(request):
    if request.method == 'POST':
        r_date = request.POST['fechaReserva']
        hora_ini = request.POST['horaInicio']
        hora_fin = request.POST['horaTermino']
        space = Space.objects.get(id=request.POST['espacio'])

        if request.user.enabled:
            string_inicio = r_date + " " + hora_ini
            start_datetime = datetime.datetime.strptime(
                string_inicio, '%Y-%m-%d %H:%M')
            string_fin = r_date + " " + hora_fin
            end_datetime = datetime.datetime.strptime(string_fin,
                                                      '%Y-%m-%d %H:%M')

            if not 9 <= int(start_datetime.hour) <= 18:
                messages.warning(
                    request,
                    "Error: No se pueden realizar reservas de salas en ese horario"
                )
            elif not 9 <= int(end_datetime.hour) <= 18:
                messages.warning(
                    request,
                    "Error: No se pueden realizar reservas de salas en ese horario"
                )
            elif ((start_datetime - datetime.datetime.now()).seconds /
                  3600) < 1 and (start_datetime -
                                 datetime.datetime.now()).days == 1:
                messages.warning(
                    request,
                    "Error: El quincho debe pedirse con por lo menos un hora de anticipacion"
                )
            else:
                reservation = Reservation(space=space,
                                          starting_date_time=start_datetime,
                                          ending_date_time=end_datetime,
                                          user=request.user)
                reservation.save()
                messages.success(request, 'Pedido realizado con éxito')
        else:
            messages.warning(
                request, 'Error: Usuario no habilitado para pedir prestamos')
        return HttpResponse("Reserva realizada con exito!")
def space_data(request, space_id):
    try:
        space = Space.objects.get(id=space_id)
        reservations = Reservation.objects.filter(space=space_id).exclude(state='R')
        reservations_list = []

        for r in reservations:
            title = str(r.space.name) + " - " + str(r.user.get_full_name())
            color = 'rgba(102,153,102,0.9)'
            if r.state == 'P':
                title = title + " (pendiente)"
                color = 'rgba(102,153,102,0.7)'
                reserva_dic = {
                    "title": title,
                    "start": r.starting_date_time.strftime("%Y-%m-%dT%H:%M:%S"),
                    "end": r.ending_date_time.strftime("%Y-%m-%dT%H:%M:%S"),
                    "color": color,
                    "estado": r.state,
                    "id": r.id
                }
                reservations_list.append(reserva_dic)
        if request.method == 'POST':
            if "ReservaForm" in request.POST:
                if request.user.enabled:
                    try:
                        string_startDate = request.POST["startDate"]
                        string_endDate = request.POST["endDate"]
                        start_date_time = datetime.datetime.strptime(string_startDate, '%Y-%m-%d %H:%M')
                        end_date_time = datetime.datetime.strptime(string_endDate, '%Y-%m-%d %H:%M')
                        if start_date_time > end_date_time:
                            messages.warning(request, 'La reserva debe terminar después de iniciar.')
                        elif start_date_time < datetime.datetime.now() + timedelta(hours=1):
                            messages.warning(request,
                                             'Los pedidos deben ser hechos al menos con una hora de anticipación.')
                        elif start_date_time.date() != end_date_time.date():
                            messages.warning(request, 'Los pedidos deben ser devueltos el mismo día que se entregan.')
                        elif not verificar_horario_habil(start_date_time) and not verificar_horario_habil(
                                end_date_time):
                            messages.warning(request, 'Los pedidos deben ser hechos en horario hábil.')
                        else:
                            newReserv = Reservation()
                            newReserv.space = space
                            newReserv.starting_date_time = start_date_time
                            newReserv.ending_date_time = end_date_time
                            newReserv.user = request.user
                            newReserv.save()
                            messages.success(request, 'Reserva realizada con éxito')
                    except Exception as e:
                        messages.warning(request, 'Ingrese una fecha y hora válida. ')
                else:
                    messages.warning(request, 'Usuario no habilitado para pedir préstamos')

        last_reservations = Reservation.objects.filter(space=space_id).order_by('-ending_date_time')[:10]

        reservations_last_ten = list()
        for reservation in last_reservations:
            starting_day = reservation.starting_date_time.strftime("%d-%m-%Y")
            ending_day = reservation.ending_date_time.strftime("%d-%m-%Y")
            starting_hour = reservation.starting_date_time.strftime("%H:%M")
            ending_hour = reservation.ending_date_time.strftime("%H:%M")

            content = ''

            if starting_day == ending_day:
                content = starting_day + " " + starting_hour + " a " + ending_hour
            else:
                content = starting_day + ", " + starting_hour + " a " + ending_day + ", " + ending_hour

            url = '/reservation/%d' % reservation.id
            reservation_info = {
                'content': content,
                'url': url,
                'id': reservation.id
            }

            reservations_last_ten.append(reservation_info)

        context = {
            'space': space,
            'reservations': reservations_list,
            'reservations_last_ten': reservations_last_ten,
            'request': request
        }

        return render(request, 'space_data.html', context)
    except Exception as e:
        print(e)
        return redirect('/')
Exemplo n.º 8
0
def landing_spaces(request):
    reservations = Reservation.objects.exclude(state='R').order_by('starting_date_time')
    spaces = Space.objects.all()
    coloresP = ['rgba(102,153,102,0.7)', 'rgba(153,102,102,0.7)', 'rgba(102,102,153,0.7)', 'rgba(153,127,102,0.5)',
                'rgba(153,102,153,0.7)', 'rgba(102,153,153,0.7)']
    coloresA = ['rgba(63,191,63,0.9)', 'rgba(191,63,63,0.9)', 'rgba(63,63,191,0.9)', 'rgba(191,127,63,0.9)',
               'rgba(191,63,191,0.9)', 'rgba(63,191,191,0.9)']

    spaces_list=[]
    reservations_list=[]
    space_filter = []
    i = 0
    for s in spaces:
        espacio_dic = {
            "id": s.id,
            "nombre": s.name,
            "estado": s.state,
            "colorP": coloresP[i],
            "colorA": coloresA[i]
        }
        i = i + 1
        spaces_list.append(espacio_dic)

    if request.method == 'POST':
        for sid in request.POST.getlist('optcheck[]'):
            space_filter.append(int(sid))

        if "ReservaForm" in request.POST:
            for s in spaces:
                space_filter.append(int(s.id))
            if request.user.enabled:
                space = Space.objects.get(id=request.POST["spaceid"])
                try:
                    string_startDate = request.POST["startDate"]
                    string_endDate = request.POST["endDate"]
                    start_date_time = datetime.datetime.strptime(string_startDate, '%Y-%m-%d %H:%M')
                    end_date_time = datetime.datetime.strptime(string_endDate, '%Y-%m-%d %H:%M')
                    if start_date_time > end_date_time:
                        messages.warning(request, 'La reserva debe terminar después de iniciar.')
                    elif (start_date_time < datetime.datetime.now() + timedelta(hours=1)) and space.name != 'quincho':
                        messages.warning(request, 'Los pedidos deben ser hechos al menos con una hora de anticipación.')
                    elif start_date_time.date() != end_date_time.date():
                        messages.warning(request, 'Los pedidos deben ser devueltos el mismo día que se entregan.')
                    elif not verificar_horario_habil(start_date_time) and not verificar_horario_habil(end_date_time):
                        messages.warning(request, 'Los pedidos deben ser hechos en horario hábil.')
                    else:
                        newReserv = Reservation()
                        newReserv.space = space
                        newReserv.starting_date_time = start_date_time
                        newReserv.ending_date_time = end_date_time
                        newReserv.user = request.user
                        newReserv.save()
                        messages.success(request, 'Reserva realizada con éxito')
                except Exception as e:
                    messages.warning(request, 'Ingrese una fecha y hora válida. ')
            else:
                messages.warning(request, 'Usuario no habilitado para pedir préstamos')
    else:
        for s in spaces:
            space_filter.append(int(s.id))
    if request.user.is_staff:
        return redirect('/admin/')

    for r in reservations:
        if r.space.id in space_filter:
            for s in spaces_list:
                if r.space.id == s["id"]:
                    title = str(r.space.name) + " - " + str(r.user.get_full_name())
                    color = s["colorA"]
                    if r.state == 'P':
                        title = title + " (pendiente)"
                        color = s["colorP"]
                    reserva_dic = {
                        "title": title,
                        "start": r.starting_date_time.strftime("%Y-%m-%dT%H:%M:%S"),
                        "end": r.ending_date_time.strftime("%Y-%m-%dT%H:%M:%S"),
                        "color": color,
                        "estado": r.state,
                        "id": r.id
                    }
                    reservations_list.append(reserva_dic)

    context = {'reservations': reservations_list,
               'spacesList': spaces_list,
               'spacesFilter': space_filter,
               'request': request
    }
    return render(request, 'espacios.html', context)
Exemplo n.º 9
0
t34 = datetime.combine(d3, h4)
t4 = datetime.combine(d4, h1)
t42 = datetime.combine(d4, h2)
t43 = datetime.combine(d4, h3)
t44 = datetime.combine(d4, h4)
t5 = datetime.combine(d5, h1)
t52 = datetime.combine(d5, h2)
t53 = datetime.combine(d5, h3)
t54 = datetime.combine(d5, h4)
t6 = datetime.combine(d6, h1)
t62 = datetime.combine(d6, h2)
t63 = datetime.combine(d6, h3)
t64 = datetime.combine(d6, h4)

r1 = Reservation(starting_date_time=t1,
                 ending_date_time=t2,
                 state='P',
                 user=user,
                 prestado=False,
                 admin=admin,
                 space=b01)
r1.save()
r2 = Reservation(starting_date_time=t3,
                 ending_date_time=t4,
                 state='P',
                 user=user,
                 prestado=False,
                 admin=admin,
                 space=b02)
r2.save()
Exemplo n.º 10
0
def space_request(request):
    if request.method == 'POST':
        space = Space.objects.get(
            name=request.POST['espacio']
        )  # request.POST['espacio']  ==nombre del espacio
        hora_inicial = request.POST['hora_inicial']  # hora en string
        hora_final = request.POST['hora_final']  # hora en string
        fecha = request.POST['fecha']  # fecha en string
        string_inicio = fecha + " " + hora_inicial
        start_date_time = datetime.datetime.strptime(string_inicio,
                                                     '%d/%m/%Y %H:%M')
        string_fin = fecha + " " + hora_final
        end_date_time = datetime.datetime.strptime(string_fin,
                                                   '%d/%m/%Y %H:%M')

        if start_date_time < datetime.datetime.now() + datetime.timedelta(
                hours=1):
            messages.warning(
                request,
                'Los pedidos deben ser hechos al menos con una hora de anticipación.'
            )
        elif Reservation.objects.filter(
                space=Space.objects.get(name=request.POST['espacio']),
                starting_date_time__lt=end_date_time,
                ending_date_time__gt=end_date_time).count() > 0:
            messages.warning(
                request,
                'Este espacio ya está pedido en el horario seleccionado.')
        elif Reservation.objects.filter(
                space=Space.objects.get(name=request.POST['espacio']),
                starting_date_time__lt=start_date_time,
                ending_date_time__gt=start_date_time).count() > 0:
            messages.warning(
                request,
                'Este espacio ya está pedido en el horario seleccionado.')
        elif Reservation.objects.filter(
                space=Space.objects.get(name=request.POST['espacio']),
                starting_date_time__gt=start_date_time,
                ending_date_time__lt=end_date_time).count() > 0:
            messages.warning(
                request,
                'Este espacio ya está pedido en el horario seleccionado.')
        elif Reservation.objects.filter(
                space=Space.objects.get(name=request.POST['espacio']),
                starting_date_time__lt=start_date_time,
                ending_date_time__gt=end_date_time).count() > 0:
            messages.warning(
                request,
                'Este espacio ya está pedido en el horario seleccionado.')
        else:
            if space.name == 'Quincho':
                if start_date_time < datetime.datetime.now(
                ) + datetime.timedelta(hours=24):
                    messages.warning(
                        request,
                        'Los pedidos del Quincho deben ser hechos al menos con una dia de anticipación.'
                    )
                else:
                    reservation = Reservation(
                        space=space,
                        starting_date_time=start_date_time,
                        ending_date_time=end_date_time,
                        user=request.user,
                        type='S')
                    reservation.save()
                    messages.success(request, 'Pedido realizado con éxito')
            else:
                reservation = Reservation(space=space,
                                          starting_date_time=start_date_time,
                                          ending_date_time=end_date_time,
                                          user=request.user,
                                          type='S')
                reservation.save()
                messages.success(request, 'Pedido realizado con éxito')

    return redirect('landing_spaces')