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($("").val(contact.id).text(item));
+ if (id_corp) {
+ $.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($("").val(contact.id).text(item));
+ });
+ if (data.length == 1) sel.val(data[0].id);
});
- if (data.length == 1) sel.val(data[0].id);
- });
+ }
});
$('#valid_training').click(function() {
diff --git a/stages/static/js/avail_form.js b/stages/static/js/avail_form.js
index 31c9e00..e1e01b5 100644
--- a/stages/static/js/avail_form.js
+++ b/stages/static/js/avail_form.js
@@ -6,15 +6,17 @@ django.jQuery(document).ready(function() {
if (this.id == 'id_corporation') var sel = django.jQuery('#id_contact');
else var sel = django.jQuery(this).closest('fieldset').find('.field-contact select');
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 + ')';
- sel.append(django.jQuery("").val(contact.id).text(item));
+ if (id_corp) {
+ 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 + ')';
+ sel.append(django.jQuery("").val(contact.id).text(item));
+ });
+ if (data.length == 1) sel.val(data[0].id);
});
- if (data.length == 1) sel.val(data[0].id);
- });
+ }
});
});