From 7fc5e25cbad75311dc5f3a3e9630470f81e3f5ef Mon Sep 17 00:00:00 2001 From: Tobias Haegele Date: Sat, 9 Jun 2018 04:55:22 +0200 Subject: [PATCH 1/5] pull --- roofis2/roomservice/views.py | 38 +++++- roofis2/templates/booking.jinja | 211 +++++++++++++++----------------- 2 files changed, 137 insertions(+), 112 deletions(-) diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 0a7d683..4967da9 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -1,12 +1,13 @@ from django.shortcuts import render -from roomservice.models import Room +from roomservice.models import Room, Booking import logging +import datetime logger = logging.getLogger(__name__) # Create your views here. def home(request): rooms = Room.objects.all() - return render(request, 'search.jinja', {"title":"rooF(i)S is love rooF(i)S is live!!", "rooms":rooms}) + return render(request, 'search.jinja', {"title":"rooF(i)S is love rooF(i)S is live!!", "rooms": rooms}) def booking(request): @@ -14,7 +15,38 @@ def booking(request): room = Room.objects.get(id=room_id) logger.info(room_id) logger.info(room) - return render(request, 'booking.jinja', {"title": "rooF(i)S is love rooF(i)S is live!!","room":room}) + startdate = datetime.date.today() + weekday = startdate.weekday() + enddate = startdate + datetime.timedelta(7) + multd = [[]] + bookings = Booking.objects.filter(room_id=room.id, start_date__gte=startdate, end_date__lte=enddate) + for booking in bookings: + sdate = booking.start_date + edate = booking.end_date + stime = booking.start_time.hour() + etime = booking.end_time.hour()+1 + if edate != sdate: + break + else: + if weekday == 0: + day = "Monday" + elif weekday == 1: + day = "Tuesday" + elif weekday == 2: + day = "Wednesday" + elif weekday == 3: + day = "Thursday" + elif weekday == 4: + day = "Friday" + elif weekday == 5: + day = "Saturday" + elif weekday == 6: + day = "Sunday" + timediff = etime - stime + if timediff > 1: + while timediff > 1: + multd.append([day, stime + timediff]) + return render(request, 'booking.jinja', {"title": "rooF(i)S is love rooF(i)S is live!!", "multd":multd}) def admin(request): diff --git a/roofis2/templates/booking.jinja b/roofis2/templates/booking.jinja index f68d9ea..cb9da74 100644 --- a/roofis2/templates/booking.jinja +++ b/roofis2/templates/booking.jinja @@ -1,5 +1,8 @@ {% extends 'base.jinja' %} {% block content %} +{% for day in multd%} + $("#"+day[0]+"-"+day[1]).css("background-color", "red"); +{% endfor %} @@ -12,157 +15,147 @@ - + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + +
Saturday Sunday
6:00 - 7:00
7:00 - 8:00
8:00 - 9:00
9:00 - 10:00
10:00 - 11:00
11:00 - 12:00
12:00 - 13:00
13:00 - 14:00
14:00 - 15:00
15:00 - 16:00
16:00 - 17:00
17:00 - 18:00
18:00 - 19:00
19:00 - 20:00
20:00 - 6:00
From 70df3fbea7dc606364c530b304f9e84d963bbe02 Mon Sep 17 00:00:00 2001 From: Tobias Haegele Date: Sat, 9 Jun 2018 05:14:49 +0200 Subject: [PATCH 2/5] push --- roofis2/roomservice/views.py | 4 ++-- roofis2/static/css/style.css | 3 +++ roofis2/templates/booking.jinja | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 041770e..24ce7ba 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -24,8 +24,8 @@ def booking(request): for booking in bookings: sdate = booking.start_date edate = booking.end_date - stime = booking.start_time.hour() - etime = booking.end_time.hour()+1 + stime = booking.start_time.hour + etime = booking.end_time.hour+1 if edate != sdate: break else: diff --git a/roofis2/static/css/style.css b/roofis2/static/css/style.css index ca41812..f9a528f 100644 --- a/roofis2/static/css/style.css +++ b/roofis2/static/css/style.css @@ -5,4 +5,7 @@ line-height: 3.5em; vertical-align: middle; padding-left: -1em; +} +td{ + background-color: lawngreen; } \ No newline at end of file diff --git a/roofis2/templates/booking.jinja b/roofis2/templates/booking.jinja index cb9da74..01aee26 100644 --- a/roofis2/templates/booking.jinja +++ b/roofis2/templates/booking.jinja @@ -1,7 +1,7 @@ {% extends 'base.jinja' %} {% block content %} {% for day in multd%} - $("#"+day[0]+"-"+day[1]).css("background-color", "red"); + $("#"+day[0] + day[1]-1 + "-" + day[1]).css("background-color", "red"); {% endfor %} From 0cd0a3dcd9b4af89764f9769b33f0b0fcd534650 Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 9 Jun 2018 06:32:06 +0200 Subject: [PATCH 3/5] Shit --- roofis2/roomservice/forms.py | 9 +++++++++ roofis2/roomservice/urls.py | 2 ++ roofis2/roomservice/views.py | 7 +++++++ roofis2/templates/add_fav.jinja | 15 +++++++++++++++ roofis2/templates/favorites.jinja | 2 +- 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 roofis2/roomservice/forms.py create mode 100644 roofis2/templates/add_fav.jinja diff --git a/roofis2/roomservice/forms.py b/roofis2/roomservice/forms.py new file mode 100644 index 0000000..03f29d6 --- /dev/null +++ b/roofis2/roomservice/forms.py @@ -0,0 +1,9 @@ +from django.db import models +from .models import Favorite +from django.forms import ModelForm + + +class AuthorForm(ModelForm): + class Meta: + model = Favorite + fields = ['room', 'staff'] diff --git a/roofis2/roomservice/urls.py b/roofis2/roomservice/urls.py index 4623121..f0878f4 100644 --- a/roofis2/roomservice/urls.py +++ b/roofis2/roomservice/urls.py @@ -4,6 +4,8 @@ from . import views app_name = 'roomservice' urlpatterns = [ path('', views.favorites, name='home'), + path('favorite', views.add_favorites, name='add-fav'), + path('adminpage', views.admin, name='admin'), path('booking', views.booking, name='booking'), path('search', views.search, name='search'), diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 5ccdc8b..32485ba 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -32,5 +32,12 @@ def favorites(request): {"title": "rooF(i)S is love rooF(i)S is live!!"}) +def add_favorites(request): + if request.method == 'POST': + pass + else: + return render(request, 'add_fav.jinja', {"title": "Add a new Favorite"}) + + def location_based_search(request): return render(request, 'favorites.jinja', {"title": "rooF(i)S is love rooF(i)S is live!!"}) diff --git a/roofis2/templates/add_fav.jinja b/roofis2/templates/add_fav.jinja new file mode 100644 index 0000000..9ca4584 --- /dev/null +++ b/roofis2/templates/add_fav.jinja @@ -0,0 +1,15 @@ +{% extends 'base.jinja' %} +{% block content %} +
+

Add Favorite

+
+
+
+ + {{ form.as_p() }} + + +
+
+
+{% endblock %} \ No newline at end of file diff --git a/roofis2/templates/favorites.jinja b/roofis2/templates/favorites.jinja index c573120..cfc1d67 100644 --- a/roofis2/templates/favorites.jinja +++ b/roofis2/templates/favorites.jinja @@ -18,7 +18,7 @@ {% endfor %}
- {{ macros.home_item_with_icon(icon='fa-plus', icon_size='fa-4x', url_id='', link='', title='Add Fav', attr='') }} + {{ macros.home_item_with_icon(icon='fa-plus', icon_size='fa-4x', url_id='roomservice:add-fav', link='', title='Add Fav', attr='') }}
{% if request.user.is_superuser %}
From be5fa242c6d3a740637679c3625a917c4ccdd0aa Mon Sep 17 00:00:00 2001 From: Tobias Haegele Date: Sat, 9 Jun 2018 06:32:07 +0200 Subject: [PATCH 4/5] 1 --- .../sample_data_creation/data_creator.py | 2 +- roofis2/roomservice/views.py | 15 +- roofis2/static/css/style.css | 3 + roofis2/templates/booking.jinja | 203 +++++++++--------- 4 files changed, 118 insertions(+), 105 deletions(-) diff --git a/roofis2/roomservice/management/sample_data_creation/data_creator.py b/roofis2/roomservice/management/sample_data_creation/data_creator.py index 75f750f..4bb32b7 100644 --- a/roofis2/roomservice/management/sample_data_creation/data_creator.py +++ b/roofis2/roomservice/management/sample_data_creation/data_creator.py @@ -142,7 +142,7 @@ def create_num_equipment(): def create_access_point(): for i in range(1, 25): access_point, _ = AccessPoint.objects.get_or_create(mac_address=''.join( - random.choices(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'], k=12)), ) + random.choices(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'], k=12))) for i in range(1, random.randint(1, 4)): access_point.rooms.add(random.choice(Room.objects.all())) access_point.save() diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 24ce7ba..d50cd57 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -14,18 +14,23 @@ def search(request): def booking(request): room_id = request.POST["room"] room = Room.objects.get(id=room_id) - logger.info(room_id) - logger.info(room) startdate = datetime.date.today() weekday = startdate.weekday() + logger.info(weekday) enddate = startdate + datetime.timedelta(7) - multd = [[]] + multd = [] bookings = Booking.objects.filter(room_id=room.id, start_date__gte=startdate, end_date__lte=enddate) + logger.info(bookings) for booking in bookings: + logger.info(booking) sdate = booking.start_date + logger.info(sdate) edate = booking.end_date + logger.info(edate) stime = booking.start_time.hour + logger.info(stime) etime = booking.end_time.hour+1 + logger.info(etime) if edate != sdate: break else: @@ -46,7 +51,9 @@ def booking(request): timediff = etime - stime if timediff > 1: while timediff > 1: - multd.append([day, stime + timediff]) + multd.append(day+(stime+timediff-1).__str__()+"-"+(stime + timediff).__str__()) + timediff = timediff-1 + logger.info(multd) return render(request, 'booking.jinja', {"title": "rooF(i)S is love rooF(i)S is live!!", "multd":multd}) diff --git a/roofis2/static/css/style.css b/roofis2/static/css/style.css index f9a528f..76e5523 100644 --- a/roofis2/static/css/style.css +++ b/roofis2/static/css/style.css @@ -8,4 +8,7 @@ } td{ background-color: lawngreen; +} +.booked{ + background-color: red; } \ No newline at end of file diff --git a/roofis2/templates/booking.jinja b/roofis2/templates/booking.jinja index 01aee26..c1e5c18 100644 --- a/roofis2/templates/booking.jinja +++ b/roofis2/templates/booking.jinja @@ -1,9 +1,12 @@ {% extends 'base.jinja' %} {% block content %} {% for day in multd%} - $("#"+day[0] + day[1]-1 + "-" + day[1]).css("background-color", "red"); + {% endfor %} -
+
@@ -19,143 +22,143 @@ - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + +
Time
6:00 - 7:00
7:00 - 8:00
8:00 - 9:00
9:00 - 10:00
10:00 - 11:00
11:00 - 12:00
12:00 - 13:00
13:00 - 14:00
14:00 - 15:00
15:00 - 16:00
16:00 - 17:00
17:00 - 18:00
18:00 - 19:00
19:00 - 20:00
From d9023f37d581dc502f34e6da0f453d830bb753d3 Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 9 Jun 2018 06:59:24 +0200 Subject: [PATCH 5/5] Add booking api endpoint --- roofis2/core/urls.py | 4 +--- roofis2/roomservice/api/__init__.py | 0 roofis2/roomservice/api/serializers.py | 20 ++++++++++++++++++++ roofis2/roomservice/api/urls.py | 7 +++++++ roofis2/roomservice/api/views.py | 21 +++++++++++++++++++++ roofis2/roomservice/urls.py | 4 +++- roofis2/roomservice/views.py | 2 +- 7 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 roofis2/roomservice/api/__init__.py create mode 100644 roofis2/roomservice/api/serializers.py create mode 100644 roofis2/roomservice/api/urls.py create mode 100644 roofis2/roomservice/api/views.py diff --git a/roofis2/core/urls.py b/roofis2/core/urls.py index 04b87fe..67217f3 100644 --- a/roofis2/core/urls.py +++ b/roofis2/core/urls.py @@ -20,7 +20,6 @@ from rest_framework.documentation import include_docs_urls from rest_framework.permissions import AllowAny from django.contrib.auth import views as auth_views - urlpatterns = [ path('admin/', admin.site.urls), path('', include('roomservice.urls')), @@ -28,9 +27,8 @@ urlpatterns = [ path('login/', auth_views.login, {'template_name': 'login.jinja'}, name='login'), path('logout/', auth_views.logout, name='logout'), - # APIs - # path('api/', include('respool.api.urls')), + path('api/', include('roomservice.api.urls')), # API Docs # path('api/docs/', include_docs_urls(title='Respool API Docs', public=True, diff --git a/roofis2/roomservice/api/__init__.py b/roofis2/roomservice/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/roofis2/roomservice/api/serializers.py b/roofis2/roomservice/api/serializers.py new file mode 100644 index 0000000..ca40138 --- /dev/null +++ b/roofis2/roomservice/api/serializers.py @@ -0,0 +1,20 @@ +from roomservice.models import Booking, Room +from rest_framework import serializers + + +class RoomSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Room + fields = ('id',) + + +class BookingSerializer(serializers.HyperlinkedModelSerializer): + room = RoomSerializer(many=False, read_only=True) + start_date = serializers.DateField(format='iso-8601') + end_date = serializers.DateField(format='iso-8601') + start_time = serializers.TimeField(format='iso-8601') + end_time = serializers.TimeField(format='iso-8601') + + class Meta: + model = Booking + fields = ('id', 'room', 'start_date', 'end_date', 'start_time', 'end_time') diff --git a/roofis2/roomservice/api/urls.py b/roofis2/roomservice/api/urls.py new file mode 100644 index 0000000..2a68b8a --- /dev/null +++ b/roofis2/roomservice/api/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from . import views + +app_name = 'roomservice.api' +urlpatterns = [ + path('booking', views.ApiBooking.as_view(), name='api-booking'), +] \ No newline at end of file diff --git a/roofis2/roomservice/api/views.py b/roofis2/roomservice/api/views.py new file mode 100644 index 0000000..630bbe5 --- /dev/null +++ b/roofis2/roomservice/api/views.py @@ -0,0 +1,21 @@ +from __future__ import unicode_literals + +from roomservice.models import Booking +from roomservice.api.serializers import BookingSerializer + +from rest_framework import generics +from rest_framework.decorators import permission_classes +from rest_framework.permissions import IsAuthenticated, AllowAny + + +@permission_classes((AllowAny,)) +class ApiBooking(generics.ListAPIView): + serializer_class = BookingSerializer + + def get_queryset(self): + queryset = Booking.objects.all() + roomId = self.request.query_params.get('room_id') + + if roomId: + queryset = queryset.filter(room=roomId) + return queryset diff --git a/roofis2/roomservice/urls.py b/roofis2/roomservice/urls.py index f0878f4..271fece 100644 --- a/roofis2/roomservice/urls.py +++ b/roofis2/roomservice/urls.py @@ -1,4 +1,4 @@ -from django.urls import path +from django.urls import path, include from . import views app_name = 'roomservice' @@ -10,4 +10,6 @@ urlpatterns = [ path('booking', views.booking, name='booking'), path('search', views.search, name='search'), path('search', views.location_based_search, name='location-based-search'), + + path('roomservice', include('roomservice.api.urls')) ] diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 32485ba..55d2b88 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -1,4 +1,4 @@ -from roomservice.models import Room, Favorite +from roomservice.models import Room, Favorite, Booking from django.shortcuts import render, redirect import logging