Add ability to clear current schedule when editing

This commit is contained in:
Lance Edgar 2016-10-14 14:45:04 -05:00
parent 9e7cb532c8
commit c2503977ea
2 changed files with 41 additions and 5 deletions

View file

@ -48,7 +48,13 @@ class ScheduleView(TimeSheetView):
"""
View for editing (full) schedule.
"""
# first process filters; will redirect if any were received
# first check if we should clear the schedule
if self.request.method == 'POST' and self.request.POST.get('clear-schedule') == 'clear':
count = self.clear_schedule()
self.request.session.flash("Removed {} shifts from current schedule.".format(count))
return self.redirect(self.request.route_url('schedule.edit'))
# okay then, process filters; redirect if any were received
form = Form(self.request, schema=ShiftFilter)
self.process_filter_form(form)
@ -107,6 +113,22 @@ class ScheduleView(TimeSheetView):
context['page_title'] = "Edit Schedule"
return self.render_full(**context)
def clear_schedule(self):
deleted = 0
context = self.get_timesheet_context()
if context['employees']:
sunday = datetime.datetime.combine(context['date'], datetime.time(0))
start_time = localtime(self.rattail_config, sunday)
end_time = localtime(self.rattail_config, sunday + datetime.timedelta(days=7))
shifts = Session.query(model.ScheduledShift)\
.filter(model.ScheduledShift.employee_uuid.in_([e.uuid for e in context['employees']]))\
.filter(model.ScheduledShift.start_time >= make_utc(start_time))\
.filter(model.ScheduledShift.end_time < make_utc(end_time))
for shift in shifts:
Session.delete(shift)
deleted += 1
return deleted
@classmethod
def defaults(cls, config):
cls._defaults(config)