-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbase_classes.py
59 lines (48 loc) · 1.96 KB
/
base_classes.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
from typing import List
from datetime import datetime
class Event:
def __init__(self, id: int, description: str, handle: str, dt: datetime, pax: int, food_place: str) -> None:
self.id = id # id of event
self.description = description # name of the user
self.handle = handle # handle of organizer
self.dt = dt
# self.day = day # day of event (mon/tues/wed etc)
# self.time_slot = time_slot # start time
self.pax = pax
self.food_place = food_place # place of event
def __str__(self) -> str:
txt = f"[Session {self.id}]\n"\
f"\t\t\tDescription: {self.description}\n"\
f"\t\t\tContact: @{self.handle}\n" \
f"\t\t\tTime: {self.dt.strftime('%H%M')}\n"\
f"\t\t\tPax: {self.pax}\n"\
f"\t\t\tLocation: {self.food_place}"
return txt
class ChannelEntry:
def __init__(self, date: datetime, events: List[Event]) -> None:
self.date = date
self.events = events
def __str__(self) -> str:
txt = f"<b>{self.date.strftime('%A')}, {self.date.strftime('%d/%m/%y')}</b>\n"
for event in self.events:
txt += (str(event) + "\n\n")
return txt
def sort_events(self) -> None:
self.events.sort(key=lambda event: event.dt)
def add_event(self, event) -> None:
self.events.append(event)
self.sort_events()
def get_user_events(self, user) -> list:
return [event for event in self.events if event.handle == user]
def check_event_id(self, id) -> bool:
return id in [event.id for event in self.events]
def del_event(self, id) -> bool:
if not self.check_event_id(id):
return False
idx = 0
for i in range(len(self.events)):
if self.events[i].id == id:
idx = i
break
del self.events[idx]
return True