From 03a7b5dc53e54a759fc9f98198395518e979254d Mon Sep 17 00:00:00 2001 From: idle sign Date: Mon, 27 Jul 2015 19:57:33 +0600 Subject: [PATCH 1/2] Fixed permissions check for dynamic tree items (see #165). --- CHANGELOG | 5 +++++ sitetree/sitetreeapp.py | 9 +++++++-- sitetree/utils.py | 4 +++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 39261ee2..2cd45dd6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,11 @@ Unreleased * Fixed disappearing tree items for guests in Admin contrib (Django 1.8) (see #164). +Unreleased +---------- +* Fixed permissions check for dynamic tree items (see #165). + + v1.4.0 ------ + Introduced Django 1.8 support (see #152). diff --git a/sitetree/sitetreeapp.py b/sitetree/sitetreeapp.py index 615b8abc..a8c86c6d 100644 --- a/sitetree/sitetreeapp.py +++ b/sitetree/sitetreeapp.py @@ -457,8 +457,13 @@ def get_sitetree(self, alias): # Resolve item permissions. if item.access_restricted: - item.perms = set([u'%s.%s' % (perm.content_type.app_label, perm.codename) for perm in - item.access_permissions.select_related()]) + permissions_src = ( + item.permissions if getattr(item, 'is_dynamic', False) + else item.access_permissions.select_related()) + + item.perms = set( + ['%s.%s' % (perm.content_type.app_label, perm.codename) for perm in permissions_src]) + # Contextual properties. item.url_resolved = self.url(item) if VARIABLE_TAG_START in item.title: diff --git a/sitetree/utils.py b/sitetree/utils.py index a9c5a776..9ce52e7c 100644 --- a/sitetree/utils.py +++ b/sitetree/utils.py @@ -87,7 +87,9 @@ def item(title, url, children=None, url_as_pattern=True, hint='', alias='', desc try: app, codename = perm.split('.') except ValueError: - raise ValueError('Wrong permission string format: supplied - `%s`; expected - `.`.' % perm) + raise ValueError( + 'Wrong permission string format: supplied - `%s`; ' + 'expected - `.`.' % perm) try: perm = Permission.objects.get(codename=codename, content_type__app_label=app) From 0786816a4d99b0a5e1fe5283165e3b68416ceb4b Mon Sep 17 00:00:00 2001 From: Patrick Altman Date: Sat, 3 Oct 2015 07:40:08 -0500 Subject: [PATCH 2/2] Fix deprecation warning --- sitetree/utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sitetree/utils.py b/sitetree/utils.py index 9ce52e7c..f11dbc14 100644 --- a/sitetree/utils.py +++ b/sitetree/utils.py @@ -1,9 +1,13 @@ from django.contrib.auth.models import Permission from django.core.exceptions import ImproperlyConfigured from django.utils import six -from django.utils.importlib import import_module from django.utils.module_loading import module_has_submodule +try: + from importlib import import_module +except ImportError: # Python < 2.7 + from django.utils.importlib import import_module + try: from django.apps import apps apps_get_model = apps.get_model