- Fixed AttributeError in User model (added region_code, preferred_language) - Fixed InvalidRequestError in AssetAssignment (added organization relationship) - Configured STATIC_DIR for translation sync - Applied Alembic migrations for user schema updates
44 lines
1.8 KiB
Python
44 lines
1.8 KiB
Python
import enum
|
|
import uuid
|
|
from datetime import datetime, timedelta
|
|
from sqlalchemy import Column, Integer, String, DateTime, ForeignKey, JSON, Enum, text
|
|
from sqlalchemy.orm import relationship
|
|
from sqlalchemy.sql import func
|
|
from app.db.base_class import Base
|
|
|
|
class ActionStatus(str, enum.Enum):
|
|
pending = "pending" # Jóváhagyásra vár
|
|
approved = "approved" # Végrehajtva
|
|
rejected = "rejected" # Elutasítva
|
|
expired = "expired" # Lejárt (biztonsági okokból)
|
|
|
|
class PendingAction(Base):
|
|
"""Négy szem elv: Műveletek, amik jóváhagyásra várnak."""
|
|
__tablename__ = "pending_actions"
|
|
__table_args__ = {"schema": "data"}
|
|
|
|
id = Column(Integer, primary_key=True, index=True)
|
|
|
|
# Ki akarja csinálni?
|
|
requester_id = Column(Integer, ForeignKey("data.users.id"), nullable=False)
|
|
|
|
# Ki hagyta jóvá/utasította el?
|
|
approver_id = Column(Integer, ForeignKey("data.users.id"), nullable=True)
|
|
|
|
status = Column(Enum(ActionStatus), default=ActionStatus.pending, nullable=False)
|
|
|
|
# Milyen típusú művelet? (pl. "CHANGE_ROLE", "WALLET_ADJUST", "DELETE_LOGS")
|
|
action_type = Column(String(50), nullable=False)
|
|
|
|
# A művelet adatai JSON-ben (pl. {"user_id": 5, "new_role": "admin"})
|
|
payload = Column(JSON, nullable=False)
|
|
|
|
# Miért kell ez a művelet? (Indoklás kötelező az audit miatt)
|
|
reason = Column(String(255), nullable=False)
|
|
|
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
|
expires_at = Column(DateTime(timezone=True), default=lambda: datetime.now() + timedelta(hours=24))
|
|
processed_at = Column(DateTime(timezone=True), nullable=True)
|
|
|
|
requester = relationship("User", foreign_keys=[requester_id])
|
|
approver = relationship("User", foreign_keys=[approver_id]) |