diff --git a/stages/admin.py b/stages/admin.py index e7b6ebb..dc06d43 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -360,7 +360,7 @@ class PeriodAdmin(admin.ModelAdmin): class AvailabilityAdmin(admin.ModelAdmin): - list_display = ('corporation', 'period', 'domain') + list_display = ('corporation', 'period', 'domain', 'contact') list_filter = ('period',) fields = (('corporation', 'period'), 'domain', 'contact', 'priority', 'comment') form = AvailabilityAdminForm @@ -370,7 +370,7 @@ class AvailabilityAdmin(admin.ModelAdmin): kwargs["queryset"] = Corporation.objects.filter(archived=False).order_by('name') if db_field.name == "contact": kwargs["queryset"] = CorpContact.objects.filter(archived=False) - return super(AvailabilityAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) + return super().formfield_for_foreignkey(db_field, request, **kwargs) class TrainingAdmin(admin.ModelAdmin): diff --git a/stages/static/js/avail_form.js b/stages/static/js/avail_form.js index 42e6f81..31c9e00 100644 --- a/stages/static/js/avail_form.js +++ b/stages/static/js/avail_form.js @@ -2,11 +2,13 @@ django.jQuery(document).ready(function() { django.jQuery('#id_corporation, .field-corporation select').change(function(ev) { // Fill contact select // Either in availability admin, or in stages admin with availability inlines + if (this.id == 'id_period') return; if (this.id == 'id_corporation') var sel = django.jQuery('#id_contact'); else var sel = django.jQuery(this).closest('fieldset').find('.field-contact select'); - sel.html(''); var id_corp = django.jQuery("option:selected", this).val(); django.jQuery.getJSON('/corporation/' + id_corp + '/contacts/', function(data) { + if (data.length && data[0].corporation_id == id_corp) return + sel.html(''); django.jQuery.each(data, function(key, contact) { var item = contact.first_name + ' ' + contact.last_name; if (contact.role.length) item += ' (' + contact.role + ')'; diff --git a/stages/views/__init__.py b/stages/views/__init__.py index 88ef08d..64280f5 100644 --- a/stages/views/__init__.py +++ b/stages/views/__init__.py @@ -243,7 +243,7 @@ class TrainingsByPeriodView(ListView): class CorpContactJSONView(ListView): """ Return all contacts from a given corporation """ - return_fields = ['id', 'first_name', 'last_name', 'role', 'is_main'] + return_fields = ['id', 'first_name', 'last_name', 'role', 'is_main', 'corporation_id'] def get_queryset(self): return CorpContact.objects.filter(corporation__pk=self.kwargs['pk'], archived=False)