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)
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')
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('/')
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)
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()
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')