Add ability to clear current schedule when editing
This commit is contained in:
parent
9e7cb532c8
commit
c2503977ea
2 changed files with 41 additions and 5 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue