[M] updated oh veiw and form. now we can post time using website

This commit is contained in:
Ching 2019-07-29 18:37:38 +08:00
parent e1d1c85dea
commit d2744493e2
4 changed files with 39 additions and 0 deletions

View File

@ -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

View File

@ -10,11 +10,14 @@
{% csrf_token %}
{% for f in form %}
<div class="form-group " >
{% if f.name == 'begins_at' %}
<label>
{{ f.name }}
</label>
<input type="" name={{ f.name }} class="form-control">
{% endif %}
</div>
{% endfor %}
<button type="submit" class="btn btn-primary">Submit</button>
</form>
{% endblock content %}

View File

@ -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

View File

@ -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()