diff --git a/timer/forms.py b/timer/forms.py index 25a9ab9..bdf4591 100644 --- a/timer/forms.py +++ b/timer/forms.py @@ -8,4 +8,23 @@ class OfficeHoursForm(forms.ModelForm): model = timer.models.OfficeHours fields = ['user', 'begins_at', 'ends_at'] + def __init__(self, *args, **kwargs): + self.user = kwargs.pop('user') + return super().__init__(*args, **kwargs) + + + def full_clean(self): + if not self.user.is_authenticated: + raise ValidationError('Invalid User.') + return + + def save(self): + begins_at = timer.models.OfficeHours.parse_time_str(self.data.get('begins_at')) + user = self.user + obj = timer.models.OfficeHours.objects.create( + user=user, + begins_at=begins_at, + ends_at=timer.models.OfficeHours.get_ends_at(begins_at)) + return obj + diff --git a/timer/templates/index.html b/timer/templates/index.html index 0fcdec9..0a0253e 100644 --- a/timer/templates/index.html +++ b/timer/templates/index.html @@ -10,11 +10,14 @@ {% csrf_token %} {% for f in form %}
+ {% if f.name == 'begins_at' %} + {% endif %}
{% endfor %} + {% endblock content %} diff --git a/timer/urls.py b/timer/urls.py index 164da41..4f658e4 100644 --- a/timer/urls.py +++ b/timer/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import include, url +# from django.core.urlresolvers import reverse from django.urls import path from rest_framework import routers from timer import views diff --git a/timer/views.py b/timer/views.py index fdad16f..f164e2e 100644 --- a/timer/views.py +++ b/timer/views.py @@ -12,6 +12,7 @@ import timer.forms import datetime from django.utils.timezone import localtime +from django.urls import reverse class OfficeHoursAPI(CreateAPIView): @@ -49,6 +50,21 @@ class OfficeHoursFormView(django.views.generic.FormView): template_name = 'index.html' form_class = timer.forms.OfficeHoursForm + def get_form_kwargs(self): + kwargs = super().get_form_kwargs() + kwargs['user'] = self.request.user + return kwargs + + def post(self, request, *args, **kwargs): + form = self.form_class(**self.get_form_kwargs()) + if form.is_valid(): + form.save() + + return super().post(request, *args, **kwargs) + + def get_success_url(self): + return reverse('office-hours-page') + 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()