Files
modbison/backend/app/models/appeal.py
T

35 lines
1.1 KiB
Python

"""Appeal model for moderation actions."""
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Enum
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from app.database import Base
class Appeal(Base):
__tablename__ = "appeals"
id = Column(Integer, primary_key=True)
moderation_action_id = Column(
Integer, ForeignKey("moderation_actions.id"), nullable=False
)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
reason = Column(Text, nullable=False)
status = Column(
Enum(
"pending", "approved", "rejected",
name="appeal_status_enum",
),
default="pending",
nullable=False,
)
reviewed_by = Column(Integer, ForeignKey("users.id"), nullable=True)
reviewed_at = Column(DateTime(timezone=True), nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Relationships
moderation_action = relationship("ModerationAction", back_populates="appeals")
user = relationship("User", back_populates="appeals")
reviewer = relationship("User", foreign_keys=[reviewed_by])