예제 #1
0
def is_restricted(page, request):
    all_perms = get_any_page_view_permissions(request, page)
    icon = boolean_icon(all_perms.exists())
    return mark_safe(
        ugettext('<span title="Restrictions: %(title)s">%(icon)s</span>') % {
            'title': u', '.join((perm.get_grant_on_display() for perm in all_perms)) or None,
            'icon': icon,
        })
예제 #2
0
def is_restricted(page, request):
    if get_cms_setting('PERMISSION'):
        if hasattr(page, 'permission_restricted'):
            text = bool(page.permission_restricted)
        else:
            all_perms = list(get_any_page_view_permissions(request, page))
            text = bool(all_perms)
        return text
    else:
        return boolean_icon(None)
예제 #3
0
def is_restricted(page, request):
    if get_cms_setting("PERMISSION"):
        if hasattr(page, "permission_restricted"):
            icon = boolean_icon(bool(page.permission_restricted))
        else:
            all_perms = list(get_any_page_view_permissions(request, page))
            icon = boolean_icon(bool(all_perms))
        return mark_safe(ugettext("<span>%(icon)s</span>") % {"icon": icon})
    else:
        icon = boolean_icon(None)
        return mark_safe(ugettext("<span>%(icon)s</span>") % {"icon": icon})
예제 #4
0
def is_restricted(page, request):
    if get_cms_setting('PERMISSION'):
        if hasattr(page, 'permission_restricted'):
            icon = boolean_icon(bool(page.permission_restricted))
        else:
            all_perms = list(get_any_page_view_permissions(request, page))
            icon = boolean_icon(bool(all_perms))
        return mark_safe(ugettext('<span>%(icon)s</span>') % {
            'icon': icon,
        })
    else:
        icon = boolean_icon(None)
        return mark_safe(ugettext('<span>%(icon)s</span>') % {
            'icon': icon,
        })
예제 #5
0
def is_restricted(page, request):
    if get_cms_setting('PERMISSION'):
        all_perms = list(get_any_page_view_permissions(request, page))
        icon = boolean_icon(bool(all_perms))
        return mark_safe(
            ugettext('<span title="Restrictions: %(title)s">%(icon)s</span>') % {
                '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('<span title="Restrictions: %(title)s">%(icon)s</span>') % {
                'title': None,
                'icon': icon,
            })
예제 #6
0
def is_restricted(page, request):
    if settings.CMS_PERMISSION:
        all_perms = list(get_any_page_view_permissions(request, page))
        icon = boolean_icon(bool(all_perms))
        return mark_safe(
            ugettext('<span title="Restrictions: %(title)s">%(icon)s</span>') % {
                '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('<span title="Restrictions: %(title)s">%(icon)s</span>') % {
                'title': None,
                'icon': icon,
            })
예제 #7
0
def user_has_view_permission(user, page=None):
    """
    This code largely duplicates Page.has_view_permission(). We do this because
    the source method requires a request object, which isn't appropriate in
    this case. Fortunately, the source method (and its dependencies) use the
    request object only to get the user object, when it isn't explicitly
    provided and for caching permissions. We don't require caching here and we
    can explicitly provide the user object.
    """
    if not user:
        return False

    class FakeRequest(object):
        pass

    fake_request = FakeRequest()

    can_see_unrestricted = get_cms_setting('PUBLIC_FOR') == 'all' or (
        get_cms_setting('PUBLIC_FOR') == 'staff' and user.is_staff)

    # Inherited and direct view permissions
    is_restricted = bool(
        permissions.get_any_page_view_permissions(fake_request, page))

    if not is_restricted and can_see_unrestricted:
        return True
    elif not user.is_authenticated():
        return False

    if not is_restricted:
        # a global permission was given to the request's user
        if permissions.has_global_page_permission(fake_request,
                                                  page.site_id,
                                                  user=user,
                                                  can_view=True):
            return True
    else:
        # a specific permission was granted to the request's user
        if page.get_draft_object().has_generic_permission(fake_request,
                                                          "view",
                                                          user=user):
            return True

    # The user has a normal django permission to view pages globally
    opts = page._meta
    codename = '%s.view_%s' % (opts.app_label, opts.object_name.lower())
    return user.has_perm(codename)
예제 #8
0
def is_restricted(page, request):
    if get_cms_setting('PERMISSION'):
        if hasattr(page, 'permission_restricted'):
            icon = boolean_icon(bool(page.permission_restricted))
        else:
            all_perms = list(get_any_page_view_permissions(request, page))
            icon = boolean_icon(bool(all_perms))
        return mark_safe(
            ugettext('<span>%(icon)s</span>') % {
                'icon': icon,
            })
    else:
        icon = boolean_icon(None)
        return mark_safe(
            ugettext('<span>%(icon)s</span>') % {
                'icon': icon,
            })
예제 #9
0
def user_has_view_permission(user, page=None):
    """
    This code largely duplicates Page.has_view_permission(). We do this because
    the source method requires a request object, which isn't appropriate in
    this case. Fortunately, the source method (and its dependencies) use the
    request object only to get the user object, when it isn't explicitly
    provided and for caching permissions. We don't require caching here and we
    can explicitly provide the user object.
    """
    if not user:
        return False

    class FakeRequest(object):
        pass
    fake_request = FakeRequest()

    can_see_unrestricted = get_cms_setting('PUBLIC_FOR') == 'all' or (
        get_cms_setting('PUBLIC_FOR') == 'staff' and user.is_staff)

    # Inherited and direct view permissions
    is_restricted = bool(
        permissions.get_any_page_view_permissions(fake_request, page))

    if not is_restricted and can_see_unrestricted:
        return True
    elif not user.is_authenticated():
        return False

    if not is_restricted:
        # a global permission was given to the request's user
        if permissions.has_global_page_permission(
                fake_request, page.site_id, user=user, can_view=True):
            return True
    else:
        # a specific permission was granted to the request's user
        if page.get_draft_object().has_generic_permission(
                fake_request, "view", user=user):
            return True

    # The user has a normal django permission to view pages globally
    opts = page._meta
    codename = '%s.view_%s' % (opts.app_label, opts.object_name.lower())
    return user.has_perm(codename)