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:
2025-02-28 08:34:49 +01:00
parent 9d71fc7fcd
commit c1caea44e8
5 changed files with 61 additions and 20 deletions

View File

@@ -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',
]

View File

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

View File

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

View File

@@ -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)),

View File

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