From 1289636058e779663bc40bd3de424f997afda4aa Mon Sep 17 00:00:00 2001 From: Damir Arbula Date: Thu, 30 Oct 2014 14:35:24 +0100 Subject: [PATCH 1/4] django 1.6 support --- treeadmin/admin.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/treeadmin/admin.py b/treeadmin/admin.py index 1b31089..166098a 100644 --- a/treeadmin/admin.py +++ b/treeadmin/admin.py @@ -6,6 +6,7 @@ from django.utils import simplejson from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _, ugettext +from django import VERSION as django_version from mptt.exceptions import InvalidMove @@ -127,9 +128,22 @@ def __init__(self, request, *args, **kwargs): self.user = request.user super(ChangeList, self).__init__(request, *args, **kwargs) - def get_query_set(self, *args, **kwargs): + def get_queryset(self, *args, **kwargs): mptt_opts = self.model._mptt_meta - return super(ChangeList, self).get_query_set(*args, **kwargs).order_by(mptt_opts.tree_id_attr, mptt_opts.left_attr) + get_qs = getattr(super(ChangeList, self), 'get_queryset', super(ChangeList, self).get_query_set) + return get_qs(*args, **kwargs).order_by(mptt_opts.tree_id_attr, mptt_opts.left_attr) + + if django_version < (1, 6): + get_query_set = get_queryset + + @property + def query_set(self): + return self.queryset + + @query_set.setter + def query_set(self, qs): + self.queryset = qs + def get_results(self, request): mptt_opts = self.model._mptt_meta @@ -139,9 +153,9 @@ def get_results(self, request): mptt_opts.left_attr + '__lte': lft, mptt_opts.right_attr + '__gte': rght, }) for lft, rght, tree_id in \ - self.query_set.values_list(mptt_opts.left_attr, mptt_opts.right_attr, mptt_opts.tree_id_attr)] + self.queryset.values_list(mptt_opts.left_attr, mptt_opts.right_attr, mptt_opts.tree_id_attr)] if clauses: - self.query_set = self.model._default_manager.filter(reduce(lambda p, q: p|q, clauses)) + self.queryset = self.model._default_manager.filter(reduce(lambda p, q: p|q, clauses)) super(ChangeList, self).get_results(request) From a0d8f66325b9acb101f94ee535a6165f2151d528 Mon Sep 17 00:00:00 2001 From: Marco Federighi Date: Wed, 23 Sep 2015 12:00:39 +0200 Subject: [PATCH 2/4] Add gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e167ff3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.py[co] +*.egg-info/ \ No newline at end of file From 3612f514d5edda16951ab53cf9127a2254be5b5f Mon Sep 17 00:00:00 2001 From: Marco Federighi Date: Wed, 23 Sep 2015 12:01:04 +0200 Subject: [PATCH 3/4] Fix values_list too many values to unpack error --- treeadmin/admin.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/treeadmin/admin.py b/treeadmin/admin.py index 1b31089..d888e2a 100644 --- a/treeadmin/admin.py +++ b/treeadmin/admin.py @@ -48,7 +48,9 @@ def _build_tree_structure(cls): else: mptt_opts = cls._meta - for p_id, parent_id in cls.objects.order_by(mptt_opts.tree_id_attr, mptt_opts.left_attr).values_list("pk", "%s_id" % mptt_opts.parent_attr): + values_list = [tuple(dct.values()) for dct in cls.objects.order_by(mptt_opts.tree_id_attr, mptt_opts.left_attr).values("pk", "%s_id" % mptt_opts.parent_attr)] + + for p_id, parent_id in values_list: all_nodes[p_id] = [] if parent_id: From bbd4b209530eec26c23279d080f89e6b2efc61b8 Mon Sep 17 00:00:00 2001 From: Marco Federighi Date: Fri, 9 Oct 2015 12:56:21 +0200 Subject: [PATCH 4/4] Fix import for 1.8 --- treeadmin/admin.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/treeadmin/admin.py b/treeadmin/admin.py index 446c8f9..0782745 100644 --- a/treeadmin/admin.py +++ b/treeadmin/admin.py @@ -3,7 +3,10 @@ from django.contrib.admin.views import main from django.db.models import Q from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseForbidden, HttpResponseNotFound, HttpResponseServerError -from django.utils import simplejson +try: + import django.utils.simplejson +except: + import json as simplejson from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _, ugettext from django import VERSION as django_version @@ -134,18 +137,18 @@ def get_queryset(self, *args, **kwargs): mptt_opts = self.model._mptt_meta get_qs = getattr(super(ChangeList, self), 'get_queryset', super(ChangeList, self).get_query_set) return get_qs(*args, **kwargs).order_by(mptt_opts.tree_id_attr, mptt_opts.left_attr) - + if django_version < (1, 6): get_query_set = get_queryset - + @property def query_set(self): return self.queryset - + @query_set.setter def query_set(self, qs): self.queryset = qs - + def get_results(self, request): mptt_opts = self.model._mptt_meta