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
))
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
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:
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)
ordering = [ 'timerange', ]
def __unicode__(self):
+ return self._display_timerange()
+
+ def _display_timerange(self):
return "{0} - {1}".format(self.timerange.lower, self.timerange.upper)
@property
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')),
<div class="row">
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/admin/{{c.urlname}}/tracks/">Tracks</a></div>
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/admin/{{c.urlname}}/rooms/">Rooms</a></div>
+ <div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/admin/{{c.urlname}}/scheduleslots/">Schedule slots</a></div>
+ <div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/admin/{{c.urlname}}/volunteerslots/">Volunteer slots</a></div>
</div>
<div class="row">
<div class="col-md-3 col-sm-6 col-xs-12 buttonrow"><a class="btn btn-default btn-block" href="/events/admin/{{c.urlname}}/regdays/">Registration days</a></div>