From 7211cf399bc7c0a7952b0d29a9ac6160085d50c4 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Sat, 17 Mar 2018 15:10:20 +0000 Subject: [PATCH] Add check for deleted session when scheduling. Fixes #2450. Commit ready for merge - Legacy-Id: 14842 --- ietf/meeting/ajax.py | 7 +++++++ ietf/static/ietf/js/agenda/agenda_objects.js | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/ietf/meeting/ajax.py b/ietf/meeting/ajax.py index 2978f1396..18389b17e 100644 --- a/ietf/meeting/ajax.py +++ b/ietf/meeting/ajax.py @@ -455,6 +455,13 @@ def assignments_post(request, meeting, schedule): status = 406, content_type="application/json") + try: + Session.objects.get(pk=newvalues["session_id"]) + except Session.DoesNotExist: + return HttpResponse(json.dumps({'error':'session has been deleted'}), + status = 406, + content_type="application/json") + ss1 = SchedTimeSessAssignment(schedule = schedule, session_id = newvalues["session_id"], timeslot_id = newvalues["timeslot_id"]) diff --git a/ietf/static/ietf/js/agenda/agenda_objects.js b/ietf/static/ietf/js/agenda/agenda_objects.js index c5b57496a..a3f48bde8 100644 --- a/ietf/static/ietf/js/agenda/agenda_objects.js +++ b/ietf/static/ietf/js/agenda/agenda_objects.js @@ -482,6 +482,11 @@ ScheduledSlot.prototype.saveit = function() { session.placed(myss.timeslot); } }); + saveit.fail(function(jqXHR, textStatus) { + var xhr = JSON.parse(jqXHR.responseText); + alert("ERROR: " + xhr.error + "\nThe schedule will now reload."); + location.reload(true); + }); // return the promise, in case someone (tests!) needs to know when we are done. return saveit;