def has_any_page_change_permissions(request): from cms.admin.utils import current_site permissions = PagePermission.objects.filter( page__site=current_site(request)).filter( Q(user=request.user) | Q(group__in=request.user.groups.all())) if permissions.count() > 0: return True return False
def __init__(self, request, *args, **kwargs): super(CMSChangeList, self).__init__(request, *args, **kwargs) from cms.admin.utils import current_site self._current_site = current_site(request) try: self.query_set = self.get_query_set(request) except: raise self.get_results(request) request.session['cms_admin_site'] = self._current_site.pk self.set_sites(request)
def has_page_add_permission(request): """Return true if the current user has permission to add a new page. This is just used for general add buttons - only superuser, or user with can_add in globalpagepermission can add page. Special case occur when page is going to be added from add page button in change list - then we have target and position there, so check if user can add page under target page will occur. """ opts = Page._meta if request.user.is_superuser: return True # if add under page target = request.GET.get('target', None) position = request.GET.get('position', None) if target is not None: try: page = Page.objects.get(pk=target) except: return False 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])): return True if position in ("first-child", "last-child"): return page.has_add_permission(request) elif position in ("left", "right"): if page.parent_id: return has_generic_permission(page.parent_id, request.user, "add", page.site) #return page.parent.has_add_permission(request) else: from cms.admin.utils import current_site site = current_site(request) 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=[site])): return True return False
def has_page_add_permission(request): """Return true if the current user has permission to add a new page. This is just used for general add buttons - only superuser, or user with can_add in globalpagepermission can add page. Special case occur when page is going to be added from add page button in change list - then we have target and position there, so check if user can add page under target page will occur. """ opts = Page._meta if request.user.is_superuser: return True # if add under page target = request.GET.get('target', None) position = request.GET.get('position', None) if target is not None: try: page = Page.objects.get(pk=target) except: return False 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])): return True if position in ("first-child", "last-child"): return page.has_add_permission(request) elif position in ("left", "right"): if page.parent_id: return has_generic_permission(page.parent_id, request.user, "add", page.site) #return page.parent.has_add_permission(request) else: from cms.admin.utils import current_site site = current_site(request) 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=[site])): return True return False
def has_page_change_permission(request): """Return true if the current user has permission to change any page. This is just used for building the tree - only superuser, or user with can_change in globalpagepermission can change a page. """ from cms.admin.utils import current_site opts = Page._meta if request.user.is_superuser or \ (request.user.has_perm(opts.app_label + '.' + opts.get_change_permission()) and (GlobalPagePermission.objects.with_user(request.user).filter(can_change=True, sites__in=[current_site(request)]).count()>0) or has_any_page_change_permissions(request)): return True return False
def has_any_page_change_permissions(request): from cms.admin.utils import current_site permissions = PagePermission.objects.filter(page__site=current_site(request)).filter(Q(user=request.user)|Q(group__in=request.user.groups.all())) if permissions.count()>0: return True return False