/
event.py
115 lines (86 loc) · 2.44 KB
/
event.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
__all__ = [
'AssignmentEvent',
'BaseEvent',
'MessageThreadEvent',
'TaskEvent',
'UserBonusEvent',
'UserRestrictionEvent',
'UserSkillEvent',
]
from enum import Enum, unique
from datetime import datetime
from ..client import Assignment, MessageThread, Task, UserBonus, UserSkill, UserRestriction
from ..client.primitives.base import BaseTolokaObject
from ..util._codegen import attribute
class BaseEventTypeEnum(Enum):
@property
def time_key(self):
return self.value.lower()
class BaseEvent(BaseTolokaObject):
event_time: datetime
class AssignmentEvent(BaseEvent):
"""Assignment-related event.
Attributes:
event_time: Event datetime.
event_type: One of the folllowing event types:
* CREATED
* SUBMITTED
* ACCEPTED
* REJECTED
* SKIPPED
* EXPIRED
assignment: Assignment object itself.
"""
@unique
class Type(BaseEventTypeEnum):
CREATED = 'CREATED'
SUBMITTED = 'SUBMITTED'
ACCEPTED = 'ACCEPTED'
REJECTED = 'REJECTED'
SKIPPED = 'SKIPPED'
EXPIRED = 'EXPIRED'
event_type: Type = attribute(autocast=True)
assignment: Assignment
class TaskEvent(BaseEvent):
"""Task-related event.
Attributes:
event_time: Event datetime.
task: Task object itself.
"""
task: Task
class UserBonusEvent(BaseEvent):
"""UserBonus-related event.
Attributes:
event_time: Event datetime.
user_bonus: UserBonus object itself.
"""
user_bonus: UserBonus
class UserSkillEvent(BaseEvent):
"""UserSkill-related event.
Attributes:
event_time: Event datetime.
event_type: One of the folllowing event types:
* CREATED
* MODIFIED
user_skill: UserSkill object itself.
"""
@unique
class Type(BaseEventTypeEnum):
CREATED = 'CREATED'
MODIFIED = 'MODIFIED'
event_type: Type = attribute(autocast=True)
user_skill: UserSkill
class UserRestrictionEvent(BaseEvent):
"""UserSkill-related event.
Attributes:
event_time: Event datetime.
user_skill: UserSkill object itself.
"""
user_restriction: UserRestriction
class MessageThreadEvent(BaseEvent):
"""MessageThread-related event.
Args:
event_time: Event datetime.
user_skill: UserSkill object itself.
"""
message_thread: MessageThread