summaryrefslogtreecommitdiff
path: root/postgresqleu/confwiki/admin.py
diff options
context:
space:
mode:
authorMagnus Hagander2016-07-15 13:48:15 +0000
committerMagnus Hagander2016-07-15 13:48:15 +0000
commitc393b7a9563f797316f3e105e9fdb7e34f746574 (patch)
tree6ec2c394c4b6c916627466d111a2536e32f4480c /postgresqleu/confwiki/admin.py
parent58afbc2013cdb4276712f3a82518659c10df3a7a (diff)
Replace references to User and Registration with dynamic lookups
This goes through most cases and replaces massive dropdowns or pairs-of-selects with ajax based lookups using django-selectable. Some pages go from over 500Kb down to about 30Kb, so it should render th interface much faster. Note: only forms in /admin/ are handled by this. Most user facing forms are already taken care of.
Diffstat (limited to 'postgresqleu/confwiki/admin.py')
-rw-r--r--postgresqleu/confwiki/admin.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/postgresqleu/confwiki/admin.py b/postgresqleu/confwiki/admin.py
index 17524326..ffffcb70 100644
--- a/postgresqleu/confwiki/admin.py
+++ b/postgresqleu/confwiki/admin.py
@@ -1,22 +1,32 @@
from django.contrib import admin
from django import forms
+from selectable.forms.widgets import AutoCompleteSelectWidget, AutoCompleteSelectMultipleWidget
+from postgresqleu.confreg.lookups import RegistrationLookup
+from postgresqleu.util.admin import SelectableWidgetAdminFormMixin
+
from postgresqleu.confreg.models import Conference, ConferenceRegistration, RegistrationType
from models import Wikipage, WikipageHistory, WikipageSubscriber
from models import AttendeeSignup
-class WikipageAdminForm(forms.ModelForm):
+class WikipageAdminForm(SelectableWidgetAdminFormMixin, forms.ModelForm):
class Meta:
model = Wikipage
exclude = []
+ widgets = {
+ 'viewer_attendee': AutoCompleteSelectMultipleWidget(lookup_class=RegistrationLookup),
+ 'editor_attendee': AutoCompleteSelectMultipleWidget(lookup_class=RegistrationLookup),
+ }
def __init__(self, *args, **kwargs):
super(WikipageAdminForm, self).__init__(*args, **kwargs)
try:
self.fields['author'].queryset = ConferenceRegistration.objects.filter(conference=self.instance.conference)
self.fields['viewer_attendee'].queryset = ConferenceRegistration.objects.filter(conference=self.instance.conference)
+ self.fields['viewer_attendee'].widget.widget.update_query_parameters({'conference': self.instance.conference.id})
self.fields['editor_attendee'].queryset = ConferenceRegistration.objects.filter(conference=self.instance.conference)
+ self.fields['editor_attendee'].widget.widget.update_query_parameters({'conference': self.instance.conference.id})
self.fields['viewer_regtype'].queryset = RegistrationType.objects.filter(conference=self.instance.conference)
self.fields['editor_regtype'].queryset = RegistrationType.objects.filter(conference=self.instance.conference)
@@ -41,7 +51,6 @@ class WikipageSubscriberInline(admin.TabularInline):
class WikipageAdmin(admin.ModelAdmin):
form = WikipageAdminForm
inlines = [WikipageHistoryInline, WikipageSubscriberInline]
- filter_horizontal = ['viewer_attendee', 'editor_attendee', ]
class AttendeeSignupAdminForm(forms.ModelForm):
class Meta: