```
Rename metadata fields for clarity and fix imports. Updated metadata-related field names across models to improve clarity and consistency (e.g., `metadata` to `media_metadata` and `notification_metadata`). Fixed an error in `guest_gifts` metadata reference and added a proper imports initialization in `__init__.py` for all models. ```
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
"""
|
||||
Models package initialization.
|
||||
Imports all models to ensure they're registered with SQLAlchemy.
|
||||
"""
|
||||
from .base import Base, TimestampMixin, UUIDMixin
|
||||
|
||||
# Import user model
|
||||
from .user import User
|
||||
|
||||
# Import event-related models
|
||||
from .event import Event
|
||||
from .event_manager import EventManager, EventManagerRole, init_event_owner
|
||||
from .event_theme import EventTheme
|
||||
from .event_media import EventMedia, MediaType, MediaPurpose
|
||||
|
||||
# Import guest and RSVP models
|
||||
from .guest import Guest, GuestStatus, guest_gifts
|
||||
from .rsvp import RSVP, RSVPStatus
|
||||
|
||||
# Import gift-related models
|
||||
from .gift import (
|
||||
GiftItem, GiftStatus, GiftPriority, GiftCategory,
|
||||
GiftPurchase
|
||||
)
|
||||
|
||||
# Import new models
|
||||
from .email_template import EmailTemplate, TemplateType
|
||||
from .notification_log import NotificationLog, NotificationType, NotificationStatus
|
||||
from .activity_log import ActivityLog, ActivityType
|
||||
|
||||
# Make sure all models are imported above this line
|
||||
__all__ = [
|
||||
'Base', 'TimestampMixin', 'UUIDMixin',
|
||||
'User',
|
||||
'Event', 'EventManager', 'EventManagerRole', 'EventTheme', 'EventMedia',
|
||||
'Guest', 'GuestStatus', 'RSVP', 'RSVPStatus',
|
||||
'GiftItem', 'GiftStatus', 'GiftPriority', 'GiftCategory', 'GiftPurchase',
|
||||
'EmailTemplate', 'TemplateType',
|
||||
'NotificationLog', 'NotificationType', 'NotificationStatus',
|
||||
'ActivityLog', 'ActivityType',
|
||||
]
|
||||
@@ -59,21 +59,21 @@ class ActivityLog(Base, UUIDMixin, TimestampMixin):
|
||||
# Request Information
|
||||
ip_address = Column(String)
|
||||
user_agent = Column(String)
|
||||
|
||||
|
||||
# Additional Data
|
||||
data = Column(JSONB, default=dict)
|
||||
|
||||
activity_data = Column(JSONB, default=dict)
|
||||
|
||||
# Relationships
|
||||
event = relationship("Event")
|
||||
user = relationship("User", foreign_keys=[user_id])
|
||||
guest = relationship("Guest")
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
return f"<ActivityLog {self.activity_type.value} event_id={self.event_id}>"
|
||||
|
||||
|
||||
@classmethod
|
||||
def log_event_activity(cls, activity_type, event_id, user_id=None, description=None,
|
||||
ip_address=None, user_agent=None, **data):
|
||||
def log_event_activity(cls, activity_type, event_id, user_id=None, description=None,
|
||||
ip_address=None, user_agent=None, **data):
|
||||
"""
|
||||
Helper method to create an event activity log entry
|
||||
"""
|
||||
@@ -84,12 +84,12 @@ class ActivityLog(Base, UUIDMixin, TimestampMixin):
|
||||
description=description,
|
||||
ip_address=ip_address,
|
||||
user_agent=user_agent,
|
||||
data=data
|
||||
activity_data=data
|
||||
)
|
||||
|
||||
|
||||
@classmethod
|
||||
def log_user_activity(cls, activity_type, user_id, event_id=None, description=None,
|
||||
ip_address=None, user_agent=None, **data):
|
||||
def log_user_activity(cls, activity_type, user_id, event_id=None, description=None,
|
||||
ip_address=None, user_agent=None, **data):
|
||||
"""
|
||||
Helper method to create a user activity log entry
|
||||
"""
|
||||
@@ -100,12 +100,12 @@ class ActivityLog(Base, UUIDMixin, TimestampMixin):
|
||||
description=description,
|
||||
ip_address=ip_address,
|
||||
user_agent=user_agent,
|
||||
data=data
|
||||
activity_data=data
|
||||
)
|
||||
|
||||
|
||||
@classmethod
|
||||
def log_guest_activity(cls, activity_type, guest_id, event_id, description=None,
|
||||
ip_address=None, user_agent=None, **data):
|
||||
def log_guest_activity(cls, activity_type, guest_id, event_id, description=None,
|
||||
ip_address=None, user_agent=None, **data):
|
||||
"""
|
||||
Helper method to create a guest activity log entry
|
||||
"""
|
||||
@@ -116,5 +116,5 @@ class ActivityLog(Base, UUIDMixin, TimestampMixin):
|
||||
description=description,
|
||||
ip_address=ip_address,
|
||||
user_agent=user_agent,
|
||||
data=data
|
||||
activity_data=data
|
||||
)
|
||||
|
||||
@@ -39,7 +39,7 @@ class EventMedia(Base, UUIDMixin, TimestampMixin):
|
||||
description = Column(String)
|
||||
|
||||
# Additional Metadata
|
||||
metadata = Column(JSON, default=dict)
|
||||
media_metadata = Column(JSON, default=dict)
|
||||
|
||||
# Relationships
|
||||
event = relationship("Event", back_populates="media")
|
||||
|
||||
@@ -84,7 +84,7 @@ class Guest(Base, UUIDMixin, TimestampMixin):
|
||||
# Association table for guest gifts (many-to-many relationship)
|
||||
guest_gifts = Table(
|
||||
'guest_gifts',
|
||||
Base.metadata,
|
||||
Base.notification_metadata,
|
||||
Column('guest_id', UUID(as_uuid=True), ForeignKey('guests.id'), primary_key=True),
|
||||
Column('gift_id', UUID(as_uuid=True), ForeignKey('gift_items.id'), primary_key=True),
|
||||
Column('reserved_at', DateTime(timezone=True), default=lambda: datetime.now(timezone.utc)),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from datetime import datetime, timezone
|
||||
from enum import Enum
|
||||
|
||||
from sqlalchemy import Column, String, ForeignKey, Enum as SQLEnum, Text, DateTime
|
||||
from sqlalchemy import Column, String, ForeignKey, Enum as SQLEnum, Text, DateTime, Integer
|
||||
from sqlalchemy.dialects.postgresql import UUID, JSONB
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
@@ -50,7 +50,7 @@ class NotificationLog(Base, UUIDMixin, TimestampMixin):
|
||||
external_id = Column(String) # ID from external provider (SendGrid, Twilio, etc.)
|
||||
|
||||
# Additional Data
|
||||
metadata = Column(JSONB, default=dict)
|
||||
notification_metadata = Column(JSONB, default=dict)
|
||||
|
||||
# Relationships
|
||||
event = relationship("Event")
|
||||
|
||||
Reference in New Issue
Block a user