id-py/app/user/model.py
Andrey Chervyakov a4b572dcc7 Dump changes
2021-10-09 21:33:03 +06:00

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")