Fix bug when POST'ing filter form data to edit schedule page
This commit is contained in:
parent
048951153d
commit
e57757d44b
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue