gitscope
← marzneshin / v0.7.4 / app/models/notification.py
https://dev.kronoz.win/r/marzneshin.git
app/models/notification.py · Python
Blame Raw
 1from datetime import datetime as dt
 2from enum import Enum
 3from typing import Optional
 4
 5from pydantic import BaseModel
 6
 7from app.models.admin import Admin
 8from app.models.user import UserResponse
 9
10
11class Notification(BaseModel):
12    created_at: float = dt.utcnow().timestamp()
13
14
15class AdminNotif(Notification):
16    pass
17
18
19class UserNotification(Notification):
20    user: UserResponse
21
22    class Action(str, Enum):
23        user_created = "user_created"
24        user_updated = "user_updated"
25        user_activated = "user_activated"
26        user_deactivated = "user_deactivated"
27        user_deleted = "user_deleted"
28        user_enabled = "user_enabled"
29        user_disabled = "user_disabled"
30        data_usage_reset = "data_usage_reset"
31        subscription_revoked = "subscription_revoked"
32        reached_usage_percent = "reached_usage_percent"
33        reached_days_left = "reached_days_left"
34
35
36class UserCreated(UserNotification):
37    action: UserNotification.Action = UserNotification.Action.user_created
38    by: Admin
39
40
41class UserUpdated(UserNotification):
42    action: UserNotification.Action = UserNotification.Action.user_updated
43    by: Admin
44
45
46class UserActivated(UserNotification):
47    action: UserNotification.Action = UserNotification.Action.user_activated
48    by: Optional[Admin] = None
49
50
51class UserDeactivated(UserNotification):
52    action: UserNotification.Action = UserNotification.Action.user_deactivated
53    by: Optional[Admin] = None
54
55
56class UserDeleted(UserNotification):
57    action: UserNotification.Action = UserNotification.Action.user_deleted
58    by: Admin
59
60
61class UserEnabled(UserNotification):
62    action: UserNotification.Action = UserNotification.Action.user_enabled
63    by: Optional[Admin] = None
64
65
66class UserDisabled(UserNotification):
67    action: UserNotification.Action = UserNotification.Action.user_disabled
68    by: Optional[Admin] = None
69
70
71class UserDataUsageReset(UserNotification):
72    action: UserNotification.Action = UserNotification.Action.data_usage_reset
73    by: Optional[Admin] = None
74
75
76class UserSubscriptionRevoked(UserNotification):
77    action: UserNotification.Action = (
78        UserNotification.Action.subscription_revoked
79    )
80    by: Admin
81
82
83class ReachedUsagePercent(UserNotification):
84    action: UserNotification.Action = (
85        UserNotification.Action.reached_usage_percent
86    )
87
88
89class ReachedDaysLeft(UserNotification):
90    action: UserNotification.Action = UserNotification.Action.reached_days_left