From 821012b1121317e22a43c26d6205a11627496cae Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Tue, 3 Apr 2018 16:15:08 +0200 Subject: [PATCH] Add backend forms for ScheduleSlots and VolunteerSlots --- postgresqleu/confreg/backendforms.py | 22 ++++++++++++++++++++ postgresqleu/confreg/backendviews.py | 17 +++++++++++++++ postgresqleu/confreg/models.py | 3 +++ postgresqleu/urls.py | 2 ++ template/confreg/admin_dashboard_single.html | 2 ++ 5 files changed, 46 insertions(+) diff --git a/postgresqleu/confreg/backendforms.py b/postgresqleu/confreg/backendforms.py index d798323..4f6f784 100644 --- a/postgresqleu/confreg/backendforms.py +++ b/postgresqleu/confreg/backendforms.py @@ -18,6 +18,7 @@ from postgresqleu.confreg.lookups import RegistrationLookup from postgresqleu.confreg.models import Conference, ConferenceRegistration, ConferenceAdditionalOption from postgresqleu.confreg.models import RegistrationClass, RegistrationType, RegistrationDay from postgresqleu.confreg.models import ConferenceSession, Track, Room +from postgresqleu.confreg.models import ConferenceSessionScheduleSlot, VolunteerSlot from postgresqleu.confreg.models import valid_status_transitions, get_status_string @@ -206,3 +207,24 @@ class BackendConferenceSessionForm(BackendForm): )) return newstatus + +class BackendConferenceSessionSlotForm(BackendForm): + list_fields = [ 'starttime', 'endtime', ] + + class Meta: + model = ConferenceSessionScheduleSlot + fields = ['starttime', 'endtime' ] + +class BackendVolunteerSlotForm(BackendForm): + list_fields = [ 'timerange', 'title', 'min_staff', 'max_staff' ] + + class Meta: + model = VolunteerSlot + fields = [ 'timerange', 'title', 'min_staff', 'max_staff' ] + + def clean(self): + cleaned_data = super(BackendVolunteerSlotForm, self).clean() + if cleaned_data.get('min_staff') > cleaned_data.get('max_staff'): + self.add_error('max_staff', 'Max staff must be at least as high as min_staff!') + + return cleaned_data diff --git a/postgresqleu/confreg/backendviews.py b/postgresqleu/confreg/backendviews.py index fb945c4..3df3107 100644 --- a/postgresqleu/confreg/backendviews.py +++ b/postgresqleu/confreg/backendviews.py @@ -19,6 +19,7 @@ from backendforms import BackendConferenceForm, BackendRegistrationForm from backendforms import BackendRegistrationTypeForm, BackendRegistrationClassForm from backendforms import BackendRegistrationDayForm from backendforms import BackendTrackForm, BackendRoomForm, BackendConferenceSessionForm +from backendforms import BackendConferenceSessionSlotForm, BackendVolunteerSlotForm def get_authenticated_conference(request, urlname): if not request.user.is_authenticated: @@ -208,3 +209,19 @@ def edit_sessions(request, urlname, rest): rest, allow_new=True, allow_delete=True) + +def edit_scheduleslots(request, urlname, rest): + return backend_list_editor(request, + urlname, + BackendConferenceSessionSlotForm, + rest, + allow_new=True, + allow_delete=True) + +def edit_volunteerslots(request, urlname, rest): + return backend_list_editor(request, + urlname, + BackendVolunteerSlotForm, + rest, + allow_new=True, + allow_delete=True) diff --git a/postgresqleu/confreg/models.py b/postgresqleu/confreg/models.py index a0a90c6..cda6b3f 100644 --- a/postgresqleu/confreg/models.py +++ b/postgresqleu/confreg/models.py @@ -760,6 +760,9 @@ class VolunteerSlot(models.Model): ordering = [ 'timerange', ] def __unicode__(self): + return self._display_timerange() + + def _display_timerange(self): return "{0} - {1}".format(self.timerange.lower, self.timerange.upper) @property diff --git a/postgresqleu/urls.py b/postgresqleu/urls.py index c08a0af..005f71e 100644 --- a/postgresqleu/urls.py +++ b/postgresqleu/urls.py @@ -144,6 +144,8 @@ urlpatterns = [ url(r'^events/admin/(\w+)/tracks/(.*/)?$', postgresqleu.confreg.backendviews.edit_tracks), url(r'^events/admin/(\w+)/rooms/(.*/)?$', postgresqleu.confreg.backendviews.edit_rooms), url(r'^events/admin/(\w+)/sessions/(.*/)?$', postgresqleu.confreg.backendviews.edit_sessions), + url(r'^events/admin/(\w+)/scheduleslots/(.*/)?$', postgresqleu.confreg.backendviews.edit_scheduleslots), + url(r'^events/admin/(\w+)/volunteerslots/(.*/)?$', postgresqleu.confreg.backendviews.edit_volunteerslots), url(r'^events/sponsor/', include('postgresqleu.confsponsor.urls')), diff --git a/template/confreg/admin_dashboard_single.html b/template/confreg/admin_dashboard_single.html index 207cf67..93f2401 100644 --- a/template/confreg/admin_dashboard_single.html +++ b/template/confreg/admin_dashboard_single.html @@ -67,6 +67,8 @@
+ +
-- 2.39.5