37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
import enum
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import Column, String, Integer, DateTime, Enum, Date, ForeignKey
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from app.db import EntityBase
|
|
from app.role.model import Role
|
|
|
|
|
|
class Sex(enum.Enum):
|
|
"""Human sex according to ISO/IEC 5218."""
|
|
|
|
NOT_KNOWN = 0,
|
|
MALE = 1,
|
|
FEMALE = 2,
|
|
NOT_APPLICABLE = 9
|
|
|
|
|
|
class User(EntityBase):
|
|
__tablename__ = "users"
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
username = Column(String(length=32), unique=True, nullable=False)
|
|
email = Column(String, unique=True, nullable=False)
|
|
password = Column(String, nullable=False)
|
|
role_id = Column(Integer, ForeignKey("roles.id"))
|
|
given_name = Column(String(length=32), nullable=False)
|
|
family_name = Column(String(length=32))
|
|
sex = Column(Enum(Sex), nullable=False, default=Sex.NOT_KNOWN)
|
|
birthdate = Column(Date)
|
|
creation_date = Column(DateTime, nullable=False, default=datetime.utcnow())
|
|
|
|
role = relationship("Role", back_populates="users")
|
|
|
|
|
|
Role.users = relationship("User", back_populates="role")
|