Add new fields to event theme model for asset handling
All checks were successful
Build and Push Docker Images / changes (push) Successful in 4s
Build and Push Docker Images / build-backend (push) Successful in 50s
Build and Push Docker Images / build-frontend (push) Has been skipped

Added `background_image_url`, `foreground_image_url`, and `asset_image_urls` fields to enhance theme customization. Updated `asset_image_urls` to use `MutableDict` with a default empty dictionary and ensured consistency in the model and migration script.
This commit is contained in:
2025-03-12 16:14:07 +01:00
parent b94d88bcf6
commit efb1dfd2a4
2 changed files with 12 additions and 1 deletions

View File

@@ -24,7 +24,10 @@ def upgrade() -> None:
sa.Column('name', sa.String(), nullable=False), sa.Column('name', sa.String(), nullable=False),
sa.Column('description', sa.String(), nullable=True), sa.Column('description', sa.String(), nullable=True),
sa.Column('preview_image_url', sa.String(), nullable=True), sa.Column('preview_image_url', sa.String(), nullable=True),
sa.Column('color_palette', sa.JSON(), nullable=False), sa.Column('background_image_url', sa.String(), nullable=True),
sa.Column('foreground_image_url', sa.String(), nullable=True),
sa.Column('color_palette', sa.JSON(), nullable=False, default=dict),
sa.Column('asset_image_urls', sa.JSON(), nullable=False, default=dict),
sa.Column('fonts', sa.JSON(), nullable=False), sa.Column('fonts', sa.JSON(), nullable=False),
sa.Column('id', sa.UUID(), nullable=False), sa.Column('id', sa.UUID(), nullable=False),
sa.Column('is_active', sa.Boolean(), nullable=False), sa.Column('is_active', sa.Boolean(), nullable=False),

View File

@@ -1,4 +1,7 @@
from typing import Dict
from sqlalchemy import Column, String, JSON, Boolean from sqlalchemy import Column, String, JSON, Boolean
from sqlalchemy.ext.mutable import MutableDict
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from .base import Base, TimestampMixin, UUIDMixin from .base import Base, TimestampMixin, UUIDMixin
@@ -9,10 +12,15 @@ class EventTheme(Base, UUIDMixin, TimestampMixin):
name = Column(String, nullable=False) name = Column(String, nullable=False)
description = Column(String) description = Column(String)
preview_image_url = Column(String) preview_image_url = Column(String)
background_image_url = Column(String, nullable=True)
foreground_image_url = Column(String, nullable=True)
asset_image_urls: Dict[str, str] = Column(MutableDict.as_mutable(JSON), default=dict)
color_palette = Column(JSON, nullable=False) color_palette = Column(JSON, nullable=False)
fonts = Column(JSON, nullable=False) fonts = Column(JSON, nullable=False)
is_active = Column(Boolean, default=True, nullable=False) is_active = Column(Boolean, default=True, nullable=False)
# Relationship with Event # Relationship with Event
events = relationship("Event", back_populates="theme") events = relationship("Event", back_populates="theme")