From 74b86354135e58ea662de554ef8af18becb243cb Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 25 Aug 2021 14:35:14 +0200 Subject: [PATCH] Minimal input for autocomplete fields --- stages/admin.py | 12 ++++++++++++ stages/static/js/attribution.js | 16 +++++++++------- stages/static/js/avail_form.js | 20 +++++++++++--------- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/stages/admin.py b/stages/admin.py index aebef3d..0af5f96 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -223,6 +223,12 @@ class StudentAdmin(admin.ModelAdmin): return fieldsets return super().get_fieldsets(request, obj) + def formfield_for_foreignkey(self, db_field, request, **kwargs): + ffield = super().formfield_for_foreignkey(db_field, request, **kwargs) + if db_field.name in self.autocomplete_fields: + ffield.widget.attrs.update({'data-minimum-input-length': 3}) + return ffield + def archive(self, request, queryset): for student in queryset: # Save each item individually to allow for custom save() logic. @@ -367,6 +373,12 @@ class AvailabilityInline(admin.StackedInline): } autocomplete_fields = ['corporation'] + def formfield_for_foreignkey(self, db_field, request, **kwargs): + ffield = super().formfield_for_foreignkey(db_field, request, **kwargs) + if db_field.name in self.autocomplete_fields: + ffield.widget.attrs.update({'data-minimum-input-length': 3}) + return ffield + class PeriodAdmin(admin.ModelAdmin): list_display = ('title', 'dates', 'section', 'level') diff --git a/stages/static/js/attribution.js b/stages/static/js/attribution.js index 1172a09..4aa1121 100644 --- a/stages/static/js/attribution.js +++ b/stages/static/js/attribution.js @@ -188,14 +188,16 @@ $(document).ready(function() { var sel = $('#contact_select'); sel.html(''); var id_corp = $(this).find("option:selected").data('idCorp'); - $.getJSON('/corporation/' + id_corp + '/contacts/', function(data) { - $.each(data, function(key, contact) { - var item = contact.first_name + ' ' + contact.last_name; - if (contact.role.length) item += ' (' + contact.role + ')'; - sel.append($("'); - django.jQuery.each(data, function(key, contact) { - var item = contact.first_name + ' ' + contact.last_name; - if (contact.role.length) item += ' (' + contact.role + ')'; - sel.append(django.jQuery("'); + django.jQuery.each(data, function(key, contact) { + var item = contact.first_name + ' ' + contact.last_name; + if (contact.role.length) item += ' (' + contact.role + ')'; + sel.append(django.jQuery("