This repository has been archived on 2024-05-31. You can view files and clone it, but cannot push or open issues or pull requests.
devicehub-teal/ereuse_devicehub/resources/user/models.py

34 lines
1.2 KiB
Python
Raw Normal View History

2018-04-27 17:16:43 +00:00
from uuid import uuid4
from flask import current_app as app
from sqlalchemy import Column
2018-04-27 17:16:43 +00:00
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy_utils import EmailType, PasswordType
2018-04-27 17:16:43 +00:00
from ereuse_devicehub.resources.models import STR_SIZE, Thing
2018-04-27 17:16:43 +00:00
class User(Thing):
__table_args__ = {'schema': 'common'}
id = Column(UUID(as_uuid=True), default=uuid4, primary_key=True)
email = Column(EmailType, nullable=False, unique=True)
password = Column(PasswordType(max_length=STR_SIZE,
onload=lambda **kwargs: dict(
schemes=app.config['PASSWORD_SCHEMES'],
2018-04-27 17:16:43 +00:00
**kwargs
)))
"""
Password field.
From `here <https://sqlalchemy-utils.readthedocs.io/en/latest/
data_types.html#module-sqlalchemy_utils.types.password>`_
"""
token = Column(UUID(as_uuid=True), default=uuid4, unique=True)
def __repr__(self) -> str:
return '<User {0.email}>'.format(self)
@property
def individual(self):
"""The individual associated for this database, or None."""
return next(iter(self.individuals), None)