From 039ba1f72eb100a31d6fe3d1ee74f477169ee1a8 Mon Sep 17 00:00:00 2001 From: Corey Oordt Date: Thu, 16 Dec 2010 11:48:29 -0500 Subject: [PATCH] Now that Django has a getchangelist function, we don't need to hack anymore --- editor/tree_editor.py | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/editor/tree_editor.py b/editor/tree_editor.py index a6e6399..7db39e6 100644 --- a/editor/tree_editor.py +++ b/editor/tree_editor.py @@ -1,6 +1,7 @@ from django.conf import settings as django_settings from django.contrib import admin from django.contrib.admin.util import unquote +from django.contrib.admin.views.main import ChangeList from django.http import Http404, HttpResponse, HttpResponseRedirect, HttpResponseBadRequest from django.utils import simplejson from django.utils.safestring import mark_safe @@ -8,6 +9,13 @@ from django.utils.translation import ugettext_lazy as _ import settings +class TreeChangeList(ChangeList): + def get_ordering(self): + if isinstance(self.model_admin, TreeEditor): + return '', '' + return super(ChangeList, self).get_ordering() + + def django_boolean_icon(field_val, alt_text=None, title=None): """ Return HTML code for a nice representation of true/false. @@ -237,7 +245,13 @@ class TreeEditor(admin.ModelAdmin): d.append(b) return HttpResponse(simplejson.dumps(d), mimetype="application/json") - + # + def get_changelist(self, request, **kwargs): + """ + Returns the ChangeList class for use on the changelist page. + """ + return TreeChangeList + def changelist_view(self, request, extra_context=None, *args, **kwargs): """ Handle the changelist view, the django view for the model instances @@ -308,19 +322,3 @@ class TreeEditor(admin.ModelAdmin): return u' '.join(self._actions_column(page)) actions_column.allow_tags = True actions_column.short_description = _('actions') - - -# !!!: Hack alert! Patching ChangeList, check whether this still applies post Django 1.1 -# Note: Patch lifted from http://code.djangoproject.com/ticket/4926 (ticket_4926_changelist_multifield_ordering.diff) - -# By default, django only orders by first ordering field in admin. We patch -# up the ChangeList here so it returns "use default ordering" for any Page -# lookups. That way, we can order by tree_id + lft and get the site's natural -# page structure. -from django.contrib.admin.views import main -class ChangeList(main.ChangeList): - def get_ordering(self): - if isinstance(self.model_admin, TreeEditor): - return '', '' - return super(ChangeList, self).get_ordering() -main.ChangeList = ChangeList