Files
postgres-web/pgweb/core/admin.py
Magnus Hagander 27e1c73368 Implement auto-complete for /admin/ forms that reference User
We have so many users now that loading these forms take forever.
Instead, implement a textbox with autocomplete using django-selectable,
which will not load the whole list of users at once.
2016-06-23 17:59:45 +02:00

43 lines
1.4 KiB
Python

from django import forms
from django.contrib import admin
from selectable.forms.widgets import AutoCompleteSelectMultipleWidget
from pgweb.core.models import Version, OrganisationType, Organisation
from pgweb.core.models import ImportedRSSFeed, ImportedRSSItem
from pgweb.core.models import ModerationNotification
from pgweb.core.lookups import UserLookup
class OrganisationAdminForm(forms.ModelForm):
class Meta:
model = Organisation
exclude = ()
widgets = {
'managers': AutoCompleteSelectMultipleWidget(lookup_class=UserLookup),
}
def __init__(self, *args, **kwargs):
super(OrganisationAdminForm, self).__init__(*args, **kwargs)
self.fields['managers'].widget.can_add_related = False
self.fields['managers'].widget.can_change_related = False
self.fields['managers'].widget.can_delete_related = False
class OrganisationAdmin(admin.ModelAdmin):
form = OrganisationAdminForm
list_display = ('name', 'approved', 'lastconfirmed',)
list_filter = ('approved',)
ordering = ('name', )
search_fields = ('name', )
class VersionAdmin(admin.ModelAdmin):
list_display = ('versionstring', 'reldate', 'supported', 'current', )
admin.site.register(Version, VersionAdmin)
admin.site.register(OrganisationType)
admin.site.register(Organisation, OrganisationAdmin)
admin.site.register(ImportedRSSFeed)
admin.site.register(ImportedRSSItem)
admin.site.register(ModerationNotification)