From d8b70270953dfca83e574f1032a04cb09da054ea Mon Sep 17 00:00:00 2001 From: Stephan Jaekel Date: Fri, 19 Aug 2011 10:24:07 +0200 Subject: [PATCH 1/2] Fetch the last position for the placeholder to add a correct position to the new created plugin. --- cms/api.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cms/api.py b/cms/api.py index 8000e732523..af74cfe228a 100644 --- a/cms/api.py +++ b/cms/api.py @@ -11,6 +11,7 @@ from django.conf import settings from django.contrib.auth.models import User from django.contrib.sites.models import Site +from django.db.models import Max from django.template.defaultfilters import slugify from menus.menu_pool import menu_pool @@ -266,10 +267,14 @@ def add_plugin(placeholder, plugin_type, language, position='last-child', # validate and normalize plugin type plugin_model, plugin_type = _verify_plugin_type(plugin_type) + + max_pos = CMSPlugin.objects.filter(language=language, + placeholder=placeholder).aggregate(Max('position')).values()[0] or 0 + plugin_base = CMSPlugin( plugin_type=plugin_type, placeholder=placeholder, - position=1, + position=max_pos + 1, language=language ) plugin_base.insert_at(target, position=position, save=False) From c8312f7ba42c9766e45d9d67618ab434d0f36370 Mon Sep 17 00:00:00 2001 From: Stephan Jaekel Date: Fri, 19 Aug 2011 10:24:57 +0200 Subject: [PATCH 2/2] Only check permissions if permissions are enabled. --- cms/templatetags/cms_admin.py | 22 +++++++++++++++------- cms/utils/admin.py | 7 ++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/cms/templatetags/cms_admin.py b/cms/templatetags/cms_admin.py index 0b8ccedbfcb..725dcae6a03 100644 --- a/cms/templatetags/cms_admin.py +++ b/cms/templatetags/cms_admin.py @@ -80,13 +80,21 @@ def boolean_icon(value): @register.filter def is_restricted(page, request): - all_perms = get_any_page_view_permissions(request, page) - icon = boolean_icon(all_perms.exists()) - return mark_safe( - ugettext('%(icon)s') % { - 'title': u', '.join((perm.get_grant_on_display() for perm in all_perms)) or None, - 'icon': icon, - }) + if settings.CMS_PERMISSION: + all_perms = get_any_page_view_permissions(request, page) + icon = boolean_icon(all_perms.exists()) + return mark_safe( + ugettext('%(icon)s') % { + 'title': u', '.join((perm.get_grant_on_display() for perm in all_perms)) or None, + 'icon': icon, + }) + else: + icon = boolean_icon(None) + return mark_safe( + ugettext('%(icon)s') % { + 'title': None, + 'icon': icon, + }) @register.filter def moderator_choices(page, user): diff --git a/cms/utils/admin.py b/cms/utils/admin.py index 0a13c6370cc..1d941706a57 100644 --- a/cms/utils/admin.py +++ b/cms/utils/admin.py @@ -41,9 +41,10 @@ def get_admin_menu_item_context(request, page, filtered=False): moderator_state = moderator.page_moderator_state(request, page) has_add_on_same_level_permission = False opts = Page._meta - if (request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) and - GlobalPagePermission.objects.with_user(request.user).filter(can_add=True, sites__in=[page.site_id])): - has_add_on_same_level_permission = True + if settings.CMS_PERMISSION: + if (request.user.has_perm(opts.app_label + '.' + opts.get_add_permission()) and + GlobalPagePermission.objects.with_user(request.user).filter(can_add=True, sites__in=[page.site_id])): + has_add_on_same_level_permission = True if not has_add_on_same_level_permission and page.parent_id: has_add_on_same_level_permission = permissions.has_generic_permission(page.parent_id, request.user, "add", page.site)