Coverage for src/couchers/moderation/utils.py: 100%
13 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-12-20 11:53 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-12-20 11:53 +0000
1"""
2Utility functions for the Unified Moderation System (UMS)
3"""
5from sqlalchemy.orm import Session
7from couchers.metrics import observe_moderation_action, observe_moderation_queue_item_created
8from couchers.models import (
9 ModerationAction,
10 ModerationLog,
11 ModerationObjectType,
12 ModerationQueueItem,
13 ModerationState,
14 ModerationTrigger,
15 ModerationVisibility,
16)
19def create_moderation(
20 session: Session,
21 object_type: ModerationObjectType,
22 object_id: int,
23 creator_user_id: int,
24) -> ModerationState:
25 moderation_state = ModerationState(
26 object_type=object_type,
27 object_id=object_id,
28 visibility=ModerationVisibility.SHADOWED,
29 )
30 session.add(moderation_state)
31 session.flush()
33 session.add(
34 ModerationLog(
35 moderation_state_id=moderation_state.id,
36 action=ModerationAction.CREATE,
37 moderator_user_id=creator_user_id,
38 new_visibility=ModerationVisibility.SHADOWED,
39 reason="Object created.",
40 )
41 )
43 session.add(
44 ModerationQueueItem(
45 moderation_state_id=moderation_state.id,
46 trigger=ModerationTrigger.INITIAL_REVIEW,
47 reason="Object created.",
48 )
49 )
50 session.flush()
52 observe_moderation_action(ModerationAction.CREATE, object_type)
53 observe_moderation_queue_item_created(ModerationTrigger.INITIAL_REVIEW, object_type)
55 return moderation_state