geonature.core.gn_permissions.admin

Classes

Functions

filters_formatter(v, c, m, p)

modules_formatter(view, context, model, name)

groups_formatter(view, context, model, name)

role_formatter(view, context, model, name)

list_permissions_formatter(permissions, ...)

Render a list of permissions for module-object-action item as an HTML table.

permissions_formatter(view, context, model, name)

permissions_count_formatter(view, context, model, name)

Module Contents

class geonature.core.gn_permissions.admin.RoleFilter[source]

Bases: geonature.core.admin.utils.DynamicOptionsMixin, flask_admin.contrib.sqla.filters.FilterEqual

get_dynamic_options(view)[source]
class geonature.core.gn_permissions.admin.ModuleFilter[source]

Bases: geonature.core.admin.utils.DynamicOptionsMixin, flask_admin.contrib.sqla.filters.FilterEqual

get_dynamic_options(view)[source]
class geonature.core.gn_permissions.admin.ObjectFilter[source]

Bases: geonature.core.admin.utils.DynamicOptionsMixin, flask_admin.contrib.sqla.filters.FilterEqual

get_dynamic_options(view)[source]
class geonature.core.gn_permissions.admin.ActionFilter[source]

Bases: geonature.core.admin.utils.DynamicOptionsMixin, flask_admin.contrib.sqla.filters.FilterEqual

get_dynamic_options(view)[source]
class geonature.core.gn_permissions.admin.ScopeFilter[source]

Bases: geonature.core.admin.utils.DynamicOptionsMixin, flask_admin.contrib.sqla.filters.FilterEqual

apply(query, value, alias=None)[source]
get_dynamic_options(view)[source]
geonature.core.gn_permissions.admin.filters_formatter(v, c, m, p)[source]
geonature.core.gn_permissions.admin.modules_formatter(view, context, model, name)[source]
geonature.core.gn_permissions.admin.groups_formatter(view, context, model, name)[source]
geonature.core.gn_permissions.admin.role_formatter(view, context, model, name)[source]
geonature.core.gn_permissions.admin.list_permissions_formatter(permissions, available_permission, managable, current_user, return_url)[source]

Render a list of permissions for module-object-action item as an HTML table.

This function generates an HTML table that displays permissions associated to specific

module, object, or action. Each permission is rendered with its status, expiration

date, and associated filters. If the permissions are manageable, edit and delete options are included for each permission.

Parameters

permissionslist[Permission]

A list of permission objects to be rendered.

available_permissionPermissionAvailable

the permission template.

managablebool

A boolean indicating whether the permissions are manageable. If True, edit and delete options will be included in the rendered HTML.

modelUser

current user

return_urlstr

The URL to return to after performing an action (e.g., editing or deleting a permission).

Returns

str

An HTML string representing the permissions table.

Notes

The function uses Bootstrap classes for styling the table and its elements. If a permission has filters, they are displayed as a list within the table cell. If a permission is not active, it is marked with a “table-secondary” class and a “text-danger” class for the expiration date. If a permission is active but has an expiration date, it is marked with a “text-success” class for the expiration date.

geonature.core.gn_permissions.admin.permissions_formatter(view, context, model, name)[source]
geonature.core.gn_permissions.admin.permissions_count_formatter(view, context, model, name)[source]
class geonature.core.gn_permissions.admin.OptionSelect2Widget[source]

Bases: flask_admin.form.widgets.Select2Widget

classmethod render_option(value, label, options)[source]
class geonature.core.gn_permissions.admin.OptionQuerySelectField(*args, **kwargs)[source]

Bases: flask_admin.contrib.sqla.fields.QuerySelectField

Overrides the QuerySelectField class from flask admin to allow other attributes on a select option.

options_additional_values is added in form_args, it is a list of strings, each element is the name of the attribute in the model which will be added on the option

widget[source]
options_additional_values[source]
iter_choices()[source]
class geonature.core.gn_permissions.admin.UserAjaxModelLoader[source]

Bases: flask_admin.contrib.sqla.ajax.QueryAjaxModelLoader

format(user)[source]

Instead of returning a list of tuple (id, label), we return a list of tuple (id, label, excluded_availabilities). The third element of each tuple is the list of type of permissions the user already have, so it is useless to add this permission to the user, and they will be not available in the front select. Two remarks: - We only consider active permissions of the user - If the type of the permission allows two or more filters, we do not exclude it as it makes sens to add several

permissions of the same type with differents set of filters.

get_query()[source]
class geonature.core.gn_permissions.admin.AreaAjaxModelLoader[source]

Bases: flask_admin.contrib.sqla.ajax.QueryAjaxModelLoader

format(area)[source]
get_one(pk)[source]
get_query()[source]
class geonature.core.gn_permissions.admin.TaxrefAjaxModelLoader[source]

Bases: flask_admin.contrib.sqla.ajax.QueryAjaxModelLoader

format(taxref)[source]
get_query()[source]
get_one(pk)[source]
class geonature.core.gn_permissions.admin.ObjectAdmin[source]

Bases: geonature.core.admin.utils.CruvedProtectedMixin, flask_admin.contrib.sqla.ModelView

module_code = 'ADMIN'[source]
object_code = 'PERMISSIONS'[source]
can_create = False[source]
can_edit = False[source]
can_delete = False[source]
column_list = ('code_object', 'description_object', 'modules')[source]
column_labels[source]
column_default_sort = 'id_object'[source]
column_formatters[source]
class geonature.core.gn_permissions.admin.PermissionAdmin[source]

Bases: geonature.core.admin.utils.CruvedProtectedMixin, flask_admin.contrib.sqla.ModelView

module_code = 'ADMIN'[source]
object_code = 'PERMISSIONS'[source]
column_list = ('role', 'module', 'object', 'action', 'label', 'filters', 'expire_on')[source]
column_labels[source]
column_searchable_list = ('role.identifiant', 'role.nom_complet')[source]
column_formatters[source]
column_filters[source]
named_filter_urls = True[source]
column_sortable_list = (('role', 'role.nom_complet'), ('module', 'module.module_code'), ('object',...[source]
column_default_sort = [('role.nom_complet', False), ('module.module_code', False), ('object.code_object', False),...[source]
form_columns = ('role', 'availability', 'scope', 'sensitivity_filter', 'areas_filter', 'taxons_filter', 'expire_on')[source]
form_overrides[source]
form_args[source]
create_template = 'admin/hide_select2_options_create.html'[source]
edit_template = 'admin/hide_select2_options_edit.html'[source]
form_ajax_refs[source]
get_query()[source]
get_count_query()[source]
render(template, **kwargs)[source]
create_form()[source]
class geonature.core.gn_permissions.admin.PermissionAvailableAdmin[source]

Bases: geonature.core.admin.utils.CruvedProtectedMixin, flask_admin.contrib.sqla.ModelView

module_code = 'ADMIN'[source]
object_code = 'PERMISSIONS'[source]
can_create = False[source]
can_delete = False[source]
can_export = False[source]
column_labels[source]
column_formatters[source]
column_sortable_list = (('module', 'module.module_code'), ('object', 'object.code_object'), ('action', 'action.code_action'))[source]
column_filters[source]
column_default_sort = [('module.module_code', False), ('object.code_object', False), ('id_action', False)][source]
form_columns = ('scope_filter', 'sensitivity_filter', 'areas_filter', 'taxons_filter')[source]
class geonature.core.gn_permissions.admin.RolePermAdmin[source]

Bases: geonature.core.admin.utils.CruvedProtectedMixin, flask_admin.contrib.sqla.ModelView

module_code = 'ADMIN'[source]
object_code = 'PERMISSIONS'[source]
can_create = False[source]
can_edit = False[source]
can_delete = False[source]
can_export = False[source]
can_view_details = True[source]
details_template = 'role_or_group_detail.html'[source]
column_labels[source]
column_searchable_list = ('identifiant', 'nom_complet')[source]
column_formatters[source]
column_formatters_detail[source]
get_query()[source]
get_count_query()[source]
class geonature.core.gn_permissions.admin.GroupPermAdmin[source]

Bases: RolePermAdmin

column_list = ('nom_role', 'permissions_count')[source]
column_details_list = ('nom_role', 'permissions_count', 'permissions')[source]
get_query()[source]
get_count_query()[source]
class geonature.core.gn_permissions.admin.UserPermAdmin[source]

Bases: RolePermAdmin

column_list = ('identifiant', 'nom_role', 'prenom_role', 'groups', 'permissions_count')[source]
column_labels[source]
column_details_list = ('identifiant', 'nom_role', 'prenom_role', 'groups', 'permissions_count', 'permissions')[source]
get_query()[source]
get_count_query()[source]