Files
eventspace/backend/app/models/event.py
Felipe Cardoso 4ef202cc5a
All checks were successful
Build and Push Docker Images / changes (push) Successful in 5s
Build and Push Docker Images / build-backend (push) Successful in 52s
Build and Push Docker Images / build-frontend (push) Has been skipped
Big refactor of gift categories model
2025-03-16 14:51:04 +01:00

64 lines
2.5 KiB
Python

from sqlalchemy import (
Column, String, DateTime, Time, Boolean, Integer, ForeignKey, JSON,
UniqueConstraint
)
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from .base import Base, TimestampMixin, UUIDMixin
class Event(Base, UUIDMixin, TimestampMixin):
__tablename__ = 'events'
# Basic Information
title = Column(String, nullable=False)
slug = Column(String, nullable=False)
description = Column(String)
# Location Details
location_name = Column(String)
location_address = Column(String)
location_url = Column(String)
# Timing - now timezone-aware
event_date = Column(DateTime(timezone=True), nullable=False)
event_start_time = Column(Time)
event_end_time = Column(Time)
timezone = Column(String, nullable=False)
rsvp_deadline = Column(DateTime(timezone=True))
# Rest of the fields remain the same...
is_public = Column(Boolean, default=False, nullable=False)
access_code = Column(String)
created_by = Column(UUID(as_uuid=True), ForeignKey('users.id'), nullable=False)
theme_id = Column(UUID(as_uuid=True), ForeignKey('event_themes.id'))
custom_theme_settings = Column(JSON)
additional_info = Column(JSON)
is_active = Column(Boolean, default=True, nullable=False)
rsvp_enabled = Column(Boolean, default=True, nullable=False)
gift_registry_enabled = Column(Boolean, default=True, nullable=False)
updates_enabled = Column(Boolean, default=True, nullable=False)
max_guests_per_invitation = Column(Integer)
contact_email = Column(String)
contact_phone = Column(String)
# Relationships
creator = relationship("User", back_populates="created_events", foreign_keys=[created_by])
theme = relationship("EventTheme", back_populates="events")
managers = relationship("EventManager", back_populates="event")
guests = relationship("Guest", back_populates="event")
gifts = relationship("GiftItem", back_populates="event")
category_associations = relationship("EventGiftCategory", back_populates="event")
media = relationship("EventMedia", back_populates="event")
# updates = relationship("EventUpdate", back_populates="event") # Keep commented out
rsvps = relationship("RSVP", back_populates="event")
email_templates = relationship("EmailTemplate", back_populates="event") # Add this line
__table_args__ = (
UniqueConstraint('slug', name='uq_event_slug'),
)
def __repr__(self):
return f"<Event {self.title} ({self.event_date})>"