Updated the schemas and models to make `last_name` optional and set a default value of "user" for `first_name`. This change enhances flexibility for user data handling and ensures proper defaults when values are not provided.
30 lines
1.1 KiB
Python
30 lines
1.1 KiB
Python
from sqlalchemy import Column, String, JSON, Boolean
|
|
from sqlalchemy.orm import relationship
|
|
from .base import Base, TimestampMixin, UUIDMixin
|
|
|
|
|
|
class User(Base, UUIDMixin, TimestampMixin):
|
|
__tablename__ = 'users'
|
|
|
|
email = Column(String, unique=True, nullable=False, index=True)
|
|
password_hash = Column(String, nullable=False)
|
|
first_name = Column(String, nullable=False, default="user")
|
|
last_name = Column(String, nullable=True)
|
|
phone_number = Column(String)
|
|
is_active = Column(Boolean, default=True, nullable=False)
|
|
is_superuser = Column(Boolean, default=False, nullable=False)
|
|
preferences = Column(JSON)
|
|
|
|
# Fix relationships with explicit foreign_keys
|
|
created_events = relationship("Event", back_populates="creator", foreign_keys="Event.created_by")
|
|
|
|
# Specify which foreign key to use in EventManager (this is the key fix)
|
|
managed_events = relationship(
|
|
"EventManager",
|
|
back_populates="user",
|
|
foreign_keys="EventManager.user_id"
|
|
)
|
|
guest_profiles = relationship("Guest", back_populates="user", foreign_keys="Guest.user_id")
|
|
|
|
def __repr__(self):
|
|
return f"<User {self.email}>" |