pluserable.data.sqlalchemy.models module¶
Base models for apps that use SQLAlchemy and pluserable.
- class pluserable.data.sqlalchemy.models.ActivationMixin(code='', valid_until=None, created_by='web')[source]¶
Bases:
pluserable.data.models.ActivationBase
,bag.sqlalchemy.tricks.MinimalBase
,bag.sqlalchemy.tricks.ID
Handles email confirmation codes and password reset codes for users.
The code should be a random hash that is valid only once. After the code is used to access the site, it gets removed.
The “created by” value refers to a system: new user registration, password reset, forgot password etc.
- code = Column(None, Unicode(length=30), table=None, nullable=False, default=ColumnDefault(<function random_hash>))¶
- created_by = Column(None, Unicode(length=30), table=None, nullable=False, default=ColumnDefault('web'))¶
- valid_until = Column(None, DateTime(), table=None, nullable=False, default=ColumnDefault(<function thirty_days_from_now>))¶
- class pluserable.data.sqlalchemy.models.GroupMixin[source]¶
Bases:
pluserable.data.models.GroupBase
,bag.sqlalchemy.tricks.MinimalBase
,bag.sqlalchemy.tricks.ID
Mixin class for groups.
- description = Column(None, UnicodeText(), table=None)¶
- name = Column(None, Unicode(length=50), table=None)¶
- users = <RelationshipProperty at 0x7f014706e9c0; no key>¶
- class pluserable.data.sqlalchemy.models.MinimalBase[source]¶
Bases:
object
Declarative base class that auto-generates __tablename__.
- clone(values=None, pk='id', sas=None)[source]¶
Return a clone of this model.
Optionally update some of its
values
. Optionally add the clone to thesas
session. The name of the primary key column should be given aspk
.Although in general model methods should not use the session, the recursive nature of this one seems to require it.
- class pluserable.data.sqlalchemy.models.NoUsernameMixin(email, password, salt='', activation=None, **kw)[source]¶
Bases:
pluserable.data.models.UserBase
,bag.sqlalchemy.tricks.MinimalBase
,bag.sqlalchemy.tricks.ID
- activation = <RelationshipProperty at 0x7f014705d840; no key>¶
- activation_id = Column(None, Integer(), ForeignKey('activation.id'), table=None)¶
- email = Column(None, Unicode(length=100), table=None, nullable=False)¶
- last_login_date = Column(None, TIMESTAMP(), table=None, nullable=False, default=ColumnDefault(<sqlalchemy.sql.functions.now at 0x7f0147056b90; now>), server_default=DefaultClause(<sqlalchemy.sql.functions.now at 0x7f0147055660; now>, for_update=False))¶
- registered_date = Column(None, TIMESTAMP(), table=None, nullable=False, default=ColumnDefault(<sqlalchemy.sql.functions.now at 0x7f01470bfc70; now>), server_default=DefaultClause(<sqlalchemy.sql.functions.now at 0x7f01470bf640; now>, for_update=False))¶
- salt = Column(None, Unicode(length=256), table=None, nullable=False)¶
- class pluserable.data.sqlalchemy.models.UserGroupMixin[source]¶
Bases:
bag.sqlalchemy.tricks.MinimalBase
,bag.sqlalchemy.tricks.ID
- group_id = Column(None, Integer(), ForeignKey('group.id'), table=None)¶
- user_id = Column(None, Integer(), ForeignKey('user.id'), table=None)¶
- class pluserable.data.sqlalchemy.models.UsernameMixin(email, password, salt='', activation=None, **kw)[source]¶
Bases:
pluserable.data.sqlalchemy.models.NoUsernameMixin
Additional username column for sites that need it.
- username = Column(None, Unicode(length=30), table=None, nullable=False)¶