Managers

Manager base class

manager.Manager is used by ModelResource to implement a backend integration.

class flask_potion.manager.Manager(resource, model)
Parameters:
  • resource (flask_potion.resource.Resource) – resource class
  • model – model read from Meta.model or None
relation_instances(item, attribute, target_resource, page=None, per_page=None)
Parameters:
  • item
  • attribute
  • target_resource
  • page
  • per_page
Returns:

relation_add(item, attribute, target_resource, target_item)
Parameters:
  • item
  • attribute
  • target_resource
  • target_item
Returns:

relation_remove(item, attribute, target_resource, target_item)
Parameters:
  • item
  • attribute
  • target_resource
  • target_item
Returns:

paginated_instances(page, per_page, where=None, sort=None)
Parameters:
  • page
  • per_page
  • where
  • sort
Returns:

a Pagination object or similar

instances(where=None, sort=None)
Parameters:
  • where
  • sort
Returns:

first(where=None, sort=None)
Parameters:
  • where
  • sort
Returns:

Raises:

exceptions.ItemNotFound

create(properties, commit=True)
Parameters:
  • properties
  • commit
Returns:

read(id)
Parameters:id
Returns:
update(item, changes, commit=True)
Parameters:
  • item
  • changes
  • commit
Returns:

delete(item)
Parameters:item
Returns:
delete_by_id(id)
Parameters:id
Returns:
class flask_potion.manager.RelationalManager(resource, model)

RelationalManager is a base class for managers that do relational lookups on the basis of a query builder.

Manager implementations

The following backend managers ship with Flask-Potion:

class contrib.memory.MemoryManager(resource, model)

An in-memory, pure-python Manager implementation.

Warning

This manager is intended for debugging & testing only and should not be used in production.

class contrib.alchemy.SQLAlchemyManager(resource, model)

A manager for SQLAlchemy models.

Expects that Meta.model contains a SQLALchemy declarative model.

class contrib.peewee.PeeweeManager(resource, model)

A manager for Peewee models.

Additionally, contrib.alchemy.SQLAlchemyManager can be extended with contrib.principals.PrincipalsMixin to form a new manager that implements a permissions system based on Flask-Principals.