diff --git a/tailbone/views/shifts/schedule.py b/tailbone/views/shifts/schedule.py index 21952fbc..02aae21b 100644 --- a/tailbone/views/shifts/schedule.py +++ b/tailbone/views/shifts/schedule.py @@ -60,41 +60,44 @@ class ScheduleView(TimeSheetView): if uuid: data[field][uuid] = self.request.POST[key] - # apply delete operations - deleted = [] - for uuid, value in data['delete'].iteritems(): - assert value == 'delete' - shift = Session.query(model.ScheduledShift).get(uuid) - assert shift - Session.delete(shift) - deleted.append(uuid) + # if no fields, don't apply changes (filter form uses POST also) + if any(data.itervalues()): - # apply create / update operations - created = {} - updated = {} - time_format = '%a %d %b %Y %I:%M %p' - for uuid, employee_uuid in data['start_time'].iteritems(): - if uuid in deleted: - continue - if uuid.startswith('new-'): - shift = model.ScheduledShift() - shift.employee_uuid = data['employee_uuid'][uuid] - shift.store_uuid = data['store_uuid'][uuid] - Session.add(shift) - created[uuid] = shift - else: + # apply delete operations + deleted = [] + for uuid, value in data['delete'].iteritems(): + assert value == 'delete' shift = Session.query(model.ScheduledShift).get(uuid) assert shift - updated[uuid] = shift - start_time = datetime.datetime.strptime(data['start_time'][uuid], time_format) - shift.start_time = make_utc(localtime(self.rattail_config, start_time)) - end_time = datetime.datetime.strptime(data['end_time'][uuid], time_format) - shift.end_time = make_utc(localtime(self.rattail_config, end_time)) + Session.delete(shift) + deleted.append(uuid) - self.request.session.flash("Changes were applied: created {}, updated {}, " - "deleted {} Scheduled Shifts".format( - len(created), len(updated), len(deleted))) - return self.redirect(self.request.route_url('schedule.edit')) + # apply create / update operations + created = {} + updated = {} + time_format = '%a %d %b %Y %I:%M %p' + for uuid, employee_uuid in data['start_time'].iteritems(): + if uuid in deleted: + continue + if uuid.startswith('new-'): + shift = model.ScheduledShift() + shift.employee_uuid = data['employee_uuid'][uuid] + shift.store_uuid = data['store_uuid'][uuid] + Session.add(shift) + created[uuid] = shift + else: + shift = Session.query(model.ScheduledShift).get(uuid) + assert shift + updated[uuid] = shift + start_time = datetime.datetime.strptime(data['start_time'][uuid], time_format) + shift.start_time = make_utc(localtime(self.rattail_config, start_time)) + end_time = datetime.datetime.strptime(data['end_time'][uuid], time_format) + shift.end_time = make_utc(localtime(self.rattail_config, end_time)) + + self.request.session.flash("Changes were applied: created {}, updated {}, " + "deleted {} Scheduled Shifts".format( + len(created), len(updated), len(deleted))) + return self.redirect(self.request.route_url('schedule.edit')) form = Form(self.request, schema=ShiftFilter) self.process_filter_form(form)