geonode.security.models

Attributes

logger

Exceptions

PermissionLevelError

Common base class for all non-exit exceptions.

Classes

PermissionLevelMixin

Mixin for adding "Permission Level" methods to a model class -- eg role systems where a user has exactly one assigned role with respect to an object representing an "access level"

Module Contents

geonode.security.models.logger[source]
exception geonode.security.models.PermissionLevelError[source]

Bases: Exception

Common base class for all non-exit exceptions.

class geonode.security.models.PermissionLevelMixin[source]

Mixin for adding “Permission Level” methods to a model class – eg role systems where a user has exactly one assigned role with respect to an object representing an “access level”

get_all_level_info()[source]

Translates the current object guardian permissions into a JSON-like “perm_spec” object in the form:

{
    "users": {
        "<Profile AnonymousUser>": ["view"],
        "<Profile username>": ["perm1", "perm2", "perm3"],
        "<Profile username2>": ["perm1", "perm2", "perm3"]
    },
    "groups": {
        "<Group groupname>": ["perm1", "perm2", "perm3"],
        "<Group groupname2>": ["perm1", "perm2", "perm3"]
    }
}
get_self_resource()[source]

Returns the “ResourceBase” associated to this “object”.

get_group_managers(group=None)[source]

Given the groups belonging to a “user”, this method returns a tuple containing:

  • The “groups” perms spec with resource access permissions (at least VIEW ones)

  • The list of “group managers” of the groups above

set_default_permissions(owner=None, created=False)[source]

Removes all the permissions except for the owner and assign the view permission to the anonymous group.

set_permissions(perm_spec=None, created=False, approval_status_changed=False, group_status_changed=False)[source]

Sets an object’s the permission levels based on the perm_spec JSON.

the mapping looks like:

{
    'users': {
        'AnonymousUser': ['view'],
        'username': ['perm1','perm2','perm3'],
        'username2': ['perm1','perm2','perm3']
        ...
    },
    'groups': [
        'groupname': ['perm1','perm2','perm3'],
        'groupname2': ['perm1','perm2','perm3'],
        ...
    ]
}
handle_moderated_uploads()[source]
compare_perms(prev_perm_spec, perm_spec)[source]

Compare two perm_specs in the form

{
    'users': {
        <Profile AnonymousUser>: ['view'],
        <Profile username>: ['perm1','perm2','perm3'],
        <Profile username2>: ['perm1','perm2','perm3']
        ...
    },
    'groups': [
        <Group groupname>: ['perm1','perm2','perm3'],
        <Group groupname2>: ['perm1','perm2','perm3'],
        ...
    ]
}
fixup_perms(perm_spec)[source]

Transform a perm_spec in the form

{
    'users': {
        'AnonymousUser': ['view'],
        'username': ['perm1','perm2','perm3'],
        'username2': ['perm1','perm2','perm3']
        ...
    },
    'groups': [
        'groupname': ['perm1','perm2','perm3'],
        'groupname2': ['perm1','perm2','perm3'],
        ...
    ]
}

to the one in the form:
{
    'users': {
        <Profile AnonymousUser>: ['view'],
        <Profile username>: ['perm1','perm2','perm3'],
        <Profile username2>: ['perm1','perm2','perm3']
        ...
    },
    'groups': [
        <Group groupname>: ['perm1','perm2','perm3'],
        <Group groupname2>: ['perm1','perm2','perm3'],
        ...
    ]
}

It also removes items with empty permissions, e.g.:

‘AnonymousUser’: [] # the item will completely removed

get_user_perms(user)[source]

Returns a list of permissions a user has on a given resource.

user_can(user, permission)[source]

Checks if a has a given permission to the resource.