deseasion.backend.models.permission module

class deseasion.backend.models.permission.HasPermissions

Bases: object

Mixin to create a permission table for the object

Inspired from SQLAlchemy’s example: http://docs.sqlalchemy.org/en/rel_1_1/_modules/examples/generic_associations/table_per_related.html

is_public = Column(None, Boolean(), table=None, nullable=False, default=ScalarElementColumnDefault(False))
is_user_authorized(user)

Check if the user has a permission on this object

Returns a boolean indicating if the user has a permission on the object

permissions

Create new a permissions table linking a user with an object

The table created will be called ‘<name>_permission’, with <name> being the name of the table where this mixin is used

class deseasion.backend.models.permission.PermissionAbility(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

create_geo_data = 2
create_project = 1
class deseasion.backend.models.permission.UserPermission(**kwargs)

Bases: ModelMixin, Model

ability
id
query: t.ClassVar[Query]

A SQLAlchemy query for a model. Equivalent to db.session.query(Model). Can be customized per-model by overriding query_class.

Warning

The query interface is considered legacy in SQLAlchemy. Prefer using session.execute(select()) instead.

user
user_id
deseasion.backend.models.permission.find_tablename(cls)

Find __tablename__ attribute in class tree.

Raises:

AttributeError – if attribute __tablename__ is never set in tree

Returns:

closest set __tablename__ attribute found