39 lines
1.0 KiB
Python
39 lines
1.0 KiB
Python
import enum
|
|
from typing import TYPE_CHECKING
|
|
from uuid import UUID
|
|
|
|
from tortoise import fields
|
|
|
|
from .base import TimestampedModel
|
|
|
|
if TYPE_CHECKING:
|
|
from .target_channel import TargetChannel
|
|
from .user import User
|
|
|
|
|
|
class CreativeStatus(str, enum.Enum):
|
|
ACTIVE = 'active'
|
|
ARCHIVED = 'archived'
|
|
|
|
|
|
class Creative(TimestampedModel):
|
|
id = fields.UUIDField(pk=True)
|
|
name = fields.CharField(max_length=255)
|
|
text = fields.TextField()
|
|
status = fields.CharEnumField(CreativeStatus, default=CreativeStatus.ACTIVE)
|
|
placements_count = fields.IntField(default=0)
|
|
|
|
user: fields.ForeignKeyRelation['User'] = fields.ForeignKeyField(
|
|
'models.User', related_name='creatives', on_delete=fields.CASCADE, index=True
|
|
)
|
|
target_channel: fields.ForeignKeyRelation['TargetChannel'] = fields.ForeignKeyField(
|
|
'models.TargetChannel', related_name='creatives', on_delete=fields.CASCADE, index=True
|
|
)
|
|
|
|
if TYPE_CHECKING:
|
|
user_id: UUID
|
|
target_channel_id: UUID
|
|
|
|
class Meta:
|
|
table = 'creative'
|