Skip to content

Commit 9d07ab9

Browse files
committed
Change room availble query and start confirmation
1 parent b8188f6 commit 9d07ab9

File tree

5 files changed

+28
-14
lines changed

5 files changed

+28
-14
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{% extends 'members/u_base.html' %}
2+
3+
{% block sub-title %}Confirm Booking | {% endblock %}
4+
5+
{% block content %}
6+
7+
8+
{% endblock %}

members/templates/members/user_create_booking.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,16 @@ <h5>{{ room.name }}</h5>
6969
</thead>
7070
<tr>
7171
{% for hour in hours %}
72-
<td class='cal-box' id='hour-{{ hour }}'>
72+
<td class='cal-box available' id='hour-{{ hour }}'>
7373
</td>
7474
{% endfor %}
7575
</tr>
7676
</table>
7777
</div>
78-
<div class='col s1 book-room'>
79-
<button class='book-btn btn'>Book</button>
80-
</div>
78+
<form class='col s1 book-room' action='.' method='POST'>
79+
<button type='submit' name='room' value='{{ room.name }}' class='book-btn btn'>Book</button>
80+
{% csrf_token %}
81+
</form>
8182
</div>
8283
<div class='row dropdown-room slider closed' id='dropdown-{{ room.id }}'>
8384
<img class='col s3' src='{{ room.image.url }}'/>

members/views.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,8 @@ def create_booking(request):
555555
end_dt = datetime.datetime.strptime(date + " " + end, "%Y-%m-%d %H:%M")
556556
end_ts = timezone.make_aware(end_dt, timezone.get_current_timezone())
557557

558+
#Make auto date for start and end if not otherwise given
559+
558560
room_dict = {}
559561
rooms = Room.objects.available(start=start_ts, end=end_ts, has_av=has_av, has_phone=has_phone, floor=floor, seats=seats)
560562

@@ -567,6 +569,11 @@ def create_booking(request):
567569
room_events = room.event_set.filter(room=room, start_ts__gte=target_date, end_ts__lte=end_date)
568570
room_dict[room] = room_events
569571

572+
if request.method == 'POST':
573+
room = request.POST.get('room')
574+
print room
575+
# return HttpRespondeRedirect(reverse('member_confirm_booking'), {})
576+
570577
return render_to_response('members/user_create_booking.html', {'rooms': rooms, 'hours':hours, 'room_dict': room_dict}, context_instance=RequestContext(request))
571578

572579
@login_required

nadine/models/resource.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.db import models
44
from django.conf import settings
55
from django.utils import timezone
6+
from django.db.models import Q
67
from django.contrib.auth.models import User
78

89
from PIL import Image
@@ -23,7 +24,7 @@ def room_img_upload_to(instance, filename):
2324

2425
class RoomManager(models.Manager):
2526

26-
def available(self, start=None, end=None, has_av=None, has_phone=None, floor=None, seats=None):
27+
def available(self, start, end, has_av=None, has_phone=None, floor=None, seats=None):
2728
rooms = self.all()
2829
if has_av != None:
2930
rooms = rooms.filter(has_av=has_av)
@@ -33,14 +34,10 @@ def available(self, start=None, end=None, has_av=None, has_phone=None, floor=Non
3334
rooms = rooms.filter(floor=floor)
3435
if seats != None:
3536
rooms = rooms.filter(seats__gte=seats)
36-
if start != None:
37-
rooms = rooms.exclude(event__start_ts__lt=start)
38-
# The three ways to filter out overlapping times
39-
# event__start_ts__lte=start and event__end_ts__gt=start
40-
# event__start_ts__gte=start and event__start_ts__lte=end
41-
# event__start_ts__lte=start and event__end_ts__gte=end)
42-
if end != None:
43-
rooms = rooms.exclude(event__end_ts__gt=end)
37+
straddling = Q(event__start_ts__lte=start, event__end_ts__gt=start)
38+
sandwich = Q(event__start_ts__gte=start, event__start_ts__lte=end)
39+
overlap = Q(event__start_ts__lte=start, event__end_ts__gte=end)
40+
rooms = rooms.exclude(straddling | sandwich | overlap)
4441
return rooms
4542

4643

nadine/tests/test_room.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ def setUp(self):
2222

2323
def test_available_start(self):
2424
start = timezone.now() - timedelta(hours=3)
25-
rooms = Room.objects.available(start=start)
25+
end = timezone.now() - timedelta(hours=2)
26+
rooms = Room.objects.available(start=start, end=end)
2627
self.assertTrue(len(rooms) > 0)
2728
self.assertFalse(rooms[0] == self.room1)
2829
self.assertTrue(rooms[0] == self.room2)

0 commit comments

Comments
 (0)