Add ability to clear current schedule when editing
This commit is contained in:
parent
9e7cb532c8
commit
c2503977ea
|
@ -190,6 +190,15 @@
|
|||
location.href = '${url('schedule.edit')}';
|
||||
});
|
||||
|
||||
$('.clear-schedule').click(function() {
|
||||
if (confirm("This will remove all shifts from the schedule you're " +
|
||||
"currently viewing.\n\nAre you sure you wish to do this?")) {
|
||||
$(this).button('disable').button('option', 'label', "Clearing...");
|
||||
okay_to_leave = true;
|
||||
$('#clear-schedule-form').submit();
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
<style type="text/css">
|
||||
|
@ -236,21 +245,26 @@
|
|||
% endfor
|
||||
</%def>
|
||||
|
||||
<%def name="edit_form()">
|
||||
${h.form(url('schedule.edit'), id='schedule-form')}
|
||||
</%def>
|
||||
|
||||
<%def name="edit_tools()">
|
||||
<div class="buttons">
|
||||
<button type="button" class="save-changes" disabled="disabled">Save Changes</button>
|
||||
<button type="button" class="undo-changes" disabled="disabled">Undo Changes</button>
|
||||
<button type="button" class="clear-schedule">Clear Schedule</button>
|
||||
</div>
|
||||
</%def>
|
||||
|
||||
<%def name="edit_form()">
|
||||
${h.form(url('schedule.edit'), id='schedule-form')}
|
||||
</%def>
|
||||
|
||||
${self.timesheet(edit_form=edit_form, edit_tools=edit_tools)}
|
||||
|
||||
${edit_tools()}
|
||||
|
||||
${h.form(url('schedule.edit'), id="clear-schedule-form")}
|
||||
${h.hidden('clear-schedule', value='clear')}
|
||||
${h.end_form()}
|
||||
|
||||
<div id="day-editor" style="display: none;">
|
||||
<div class="shifts"></div>
|
||||
<button type="button" id="add-shift">Add Shift</button>
|
||||
|
|
|
@ -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…
Reference in a new issue