From 1fd631faf0e72d6724134a9800c23e5a24e735a2 Mon Sep 17 00:00:00 2001 From: Matthew Somerville Date: Thu, 16 Oct 2014 21:01:16 +0100 Subject: [PATCH] Exclude active speaker from reassignment list. Fix typo with two selfs, and remove unneeded JS. --- speeches/static/speeches/js/select2-override.js | 11 +++++++++++ speeches/templates/speeches/base.html | 1 + speeches/templates/speeches/speaker_delete.html | 3 --- speeches/views.py | 12 ++++++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 speeches/static/speeches/js/select2-override.js diff --git a/speeches/static/speeches/js/select2-override.js b/speeches/static/speeches/js/select2-override.js new file mode 100644 index 00000000..f81c75a8 --- /dev/null +++ b/speeches/static/speeches/js/select2-override.js @@ -0,0 +1,11 @@ +$(function() { + // Override this small function to include the object ID if we have it. + var orig_get_url_params = django_select2.get_url_params; + django_select2.get_url_params = function (term, page, context) { + var res = orig_get_url_params(term, page, context); + if (matches = window.location.pathname.match(/\/([0-9]+)\/delete$/)) { + res['object_id'] = matches[1]; + } + return res; + }; +}); diff --git a/speeches/templates/speeches/base.html b/speeches/templates/speeches/base.html index 089b18df..04342b48 100644 --- a/speeches/templates/speeches/base.html +++ b/speeches/templates/speeches/base.html @@ -11,6 +11,7 @@ {% endblock extra_css %} + {% block extra_js_head %}{% endblock %} diff --git a/speeches/templates/speeches/speaker_delete.html b/speeches/templates/speeches/speaker_delete.html index 794a1c27..5076d3ea 100644 --- a/speeches/templates/speeches/speaker_delete.html +++ b/speeches/templates/speeches/speaker_delete.html @@ -15,9 +15,6 @@ {% if LANGUAGE_CODE == 'es' %} {% endif %} - - - {% endblock %} {% block title %} diff --git a/speeches/views.py b/speeches/views.py index 48a764e6..89bc0915 100644 --- a/speeches/views.py +++ b/speeches/views.py @@ -303,7 +303,7 @@ def delete(self): def post(self, request, *args, **kwargs): if self.object.speech_set.exists(): - return super(SpeakerDeleteNoSpeechesMixin, self).post(self, request, *args, **kwargs) + return super(SpeakerDeleteNoSpeechesMixin, self).post(request, *args, **kwargs) else: return self.delete() @@ -604,5 +604,13 @@ class Select2AutoResponseView(AutoResponseView): def check_all_permissions(self, request, *args, **kwargs): super(Select2AutoResponseView, self).check_all_permissions(request, *args, **kwargs) + try: + id = int(request.GET['object_id']) + except: + id = None + model = request._AutoResponseView__django_select2_local.model - request._AutoResponseView__django_select2_local.queryset = model.objects.for_instance(request.instance) + qs = model.objects.for_instance(request.instance) + if id: + qs = qs.exclude(id=id) + request._AutoResponseView__django_select2_local.queryset = qs