diff --git a/timer/forms.py b/timer/forms.py
new file mode 100644
index 0000000..25a9ab9
--- /dev/null
+++ b/timer/forms.py
@@ -0,0 +1,11 @@
+from django import forms
+
+import timer.models
+
+
+class OfficeHoursForm(forms.ModelForm):
+ class Meta:
+ model = timer.models.OfficeHours
+ fields = ['user', 'begins_at', 'ends_at']
+
+
diff --git a/timer/models.py b/timer/models.py
index 1a642b6..e65e786 100644
--- a/timer/models.py
+++ b/timer/models.py
@@ -1,9 +1,27 @@
from django.contrib.auth.models import User
import django.db
from django.db import models
+from django.utils.timezone import localtime
+import datetime
class OfficeHours(models.Model):
begins_at = models.DateTimeField()
ends_at = models.DateTimeField()
user = models.ForeignKey(User, on_delete=django.db.models.deletion.CASCADE)
+
+ @classmethod
+ def parse_time_str(cls, time_srt):
+ return datetime.datetime.strptime(time_srt, '%Y-%m-%d %H:%M')
+
+ @classmethod
+ def get_ends_at(cls, begins_at):
+ return begins_at + datetime.timedelta(hours=9.5)
+
+ @property
+ def get_begins_at_str(self):
+ return localtime(self.begins_at).strftime('%Y-%m-%d %H:%M')
+
+ @property
+ def get_ends_at_str(self):
+ return localtime(self.ends_at).strftime('%Y-%m-%d %H:%M')
diff --git a/timer/templates/index.html b/timer/templates/index.html
index e69de29..514b8f1 100644
--- a/timer/templates/index.html
+++ b/timer/templates/index.html
@@ -0,0 +1,9 @@
+
+
+
+ Office Hour
+
+
+ office hour ends at: {{ today_oh.get_ends_at_str }}
+
+
diff --git a/timer/urls.py b/timer/urls.py
index bde11d6..164da41 100644
--- a/timer/urls.py
+++ b/timer/urls.py
@@ -7,5 +7,6 @@ from timer import views
# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
- url('office-hours', views.OfficeHoursAPI.as_view())
+ url(r'^office-hours/$', views.OfficeHoursAPI.as_view()),
+ url(r'^office-hours-page/$', views.OfficeHoursFormView.as_view(), name='office-hours-page'),
]
diff --git a/timer/views.py b/timer/views.py
index 4ee7146..36491f5 100644
--- a/timer/views.py
+++ b/timer/views.py
@@ -1,5 +1,6 @@
from django.contrib.auth.models import User, Group
from django.shortcuts import render
+import django.views.generic
from rest_framework import authentication, permissions, status, viewsets
from rest_framework.generics import CreateAPIView
from rest_framework.response import Response
@@ -7,33 +8,10 @@ from rest_framework.views import APIView
import timer.serializers
import timer.models
+import timer.forms
import datetime
-
-
-# class OfficeHoursViewSet(viewsets.ModelViewSet):
-# """
-# API endpoint that allows office hours to be viewed or edited.
-# """
-
-# queryset = timer.models.OfficeHours.objects.order_by('-id')
-# serializer_class = timer.serializers.OfficeHoursSerializer
-
-
-# class UserViewSet(viewsets.ModelViewSet):
-# """
-# API endpoint that allows users to be viewed or edited.
-# """
-# queryset = User.objects.all().order_by('-date_joined')
-# serializer_class = timer.serializers.UserSerializer
-
-
-# class GroupViewSet(viewsets.ModelViewSet):
-# """
-# API endpoint that allows groups to be viewed or edited.
-# """
-# queryset = Group.objects.all()
-# serializer_class = timer.serializers.GroupSerializer
+from django.utils.timezone import localtime
class OfficeHoursAPI(CreateAPIView):
@@ -44,14 +22,15 @@ class OfficeHoursAPI(CreateAPIView):
permission_classes = (permissions.IsAuthenticated,)
queryset = timer.models.OfficeHours.objects.all()
+ # serializer_class = timer.serializers.GroupSerializer
def create(self, request, *args, **kwargs):
begins_at = request.data.get('begins_at')
if not begins_at:
raise
try:
- begins_at = datetime.datetime.strptime(begins_at, '%Y-%m-%d %H:%M')
- ends_at = begins_at + datetime.timedelta(hours=9.5)
+ begins_at = timer.models.OfficeHours.parse_time_str(begins_at)
+ ends_at = timer.models.OfficeHours.get_ends_at(begins_at)
oh, __ = timer.models.OfficeHours.objects.get_or_create(
begins_at=begins_at,
ends_at=ends_at,
@@ -60,9 +39,19 @@ class OfficeHoursAPI(CreateAPIView):
raise
resp_data = {
- 'begins_at': begins_at.strftime('%Y-%m-%d %H:%M'),
- 'ends_at': ends_at.strftime('%H:%M'),
+ 'begins_at': oh.get_begins_at_str,
+ 'ends_at': oh.get_ends_at_str,
}
return Response(resp_data, status=status.HTTP_201_CREATED)
+
+class OfficeHoursFormView(django.views.generic.FormView):
+ template_name = 'index.html'
+ form_class = timer.forms.OfficeHoursForm
+
+ def get_context_data(self, **kwargs):
+ context = super().get_context_data(**kwargs)
+ today_oh = timer.models.OfficeHours.objects.filter(begins_at__date=localtime().date()).last()
+ context['today_oh'] = today_oh
+ return context