TGBotReffBook
114 строк · 4.6 Кб
1import datetime
2
3from app.core.parsers.scheduleparser import ScheduleParser
4from app.core.datetimehelper import daysBetweenNow
5
6
7class ScheduleParserCashManager:
8INSTITUTE_LAST_DT_CASH = datetime.datetime.now().date()
9INSTITUTE_CASH_PERIOD = 30
10COURSE_LAST_DT_CASH = datetime.datetime.now().date()
11COURSE_CASH_PERIOD = 30
12GROUPS_LAST_DT_CASH = datetime.datetime.now().date()
13GROUPS_CASH_PERIOD = 30
14
15LESSONS_LAST_DT_CASH = datetime.datetime.now().date()
16LESSONS_CASH_PERIOD = 1
17
18LESSONS_TEACHER_LAST_DT_CASH = datetime.datetime.now().date()
19LESSONS_TEACHER_CASH_PERIOD = 1
20
21LESSONS_PLACE_LAST_DT_CASH = datetime.datetime.now().date()
22LESSONS_PLACE_CASH_PERIOD = 1
23
24TEACHER_BY_ID_LAST_DT_CASH = datetime.datetime.now().date()
25TEACHER_BY_ID_CASH_PERIOD = 1
26
27@classmethod
28async def getInstitutes(cls):
29"""С кэшем"""
30if daysBetweenNow(cls.INSTITUTE_LAST_DT_CASH) > cls.INSTITUTE_CASH_PERIOD:
31ScheduleParser.getInstitutes.cache_clear()
32cls.INSTITUTE_LAST_DT_CASH = datetime.datetime.now().date()
33return await ScheduleParser.getInstitutes()
34
35@classmethod
36async def getCourses(cls, faculty: int, ed_form: str, degree: int):
37"""С кэшем"""
38if daysBetweenNow(cls.COURSE_LAST_DT_CASH) > cls.COURSE_CASH_PERIOD:
39ScheduleParser.getGroups.cache_clear()
40ScheduleParser.getCourses.cache_clear()
41cls.COURSE_LAST_DT_CASH = datetime.datetime.now().date()
42return await ScheduleParser.getCourses(faculty, ed_form, degree)
43
44@classmethod
45async def getGroupsByParameters(cls, faculty: int, ed_form: str, degree: int, level: int):
46"""С кэшем"""
47if daysBetweenNow(cls.GROUPS_LAST_DT_CASH) > cls.GROUPS_CASH_PERIOD:
48ScheduleParser.getGroups.cache_clear()
49ScheduleParser.getGroupsByParameters.cache_clear()
50cls.GROUPS_LAST_DT_CASH = datetime.datetime.now().date()
51return await ScheduleParser.getGroupsByParameters(faculty, ed_form, degree, level)
52
53@classmethod
54async def getGroupsByText(cls, group: str):
55"""Без кэша"""
56return await ScheduleParser.getGroupsByText(group)
57
58@classmethod
59async def getTeacherByText(cls, group: str):
60"""Без кэша"""
61return await ScheduleParser.getTeacherByText(group)
62
63@classmethod
64async def getPlacesByText(cls, place: str):
65"""Без кэша"""
66return await ScheduleParser.getPlacesByText(place)
67
68@classmethod
69async def getLessons(cls, group: int, date: datetime.date):
70"""С кэшем"""
71if daysBetweenNow(cls.LESSONS_LAST_DT_CASH) > cls.LESSONS_CASH_PERIOD:
72ScheduleParser.getLessons.cache_clear()
73cls.LESSONS_LAST_DT_CASH = datetime.datetime.now().date()
74return await ScheduleParser.getLessons(group, date)
75
76@classmethod
77async def getTeacherLessons(cls, teacher: int, date: datetime.date):
78"""С кэшем"""
79if daysBetweenNow(cls.LESSONS_TEACHER_LAST_DT_CASH) > cls.LESSONS_TEACHER_CASH_PERIOD:
80ScheduleParser.getTeacherLessons.cache_clear()
81cls.LESSONS_TEACHER_LAST_DT_CASH = datetime.datetime.now().date()
82return await ScheduleParser.getTeacherLessons(teacher, date)
83
84@classmethod
85async def getPlaceLessons(cls, building: int, place: int, date: datetime.date):
86"""С кэшем"""
87if daysBetweenNow(cls.LESSONS_PLACE_LAST_DT_CASH) > cls.LESSONS_PLACE_CASH_PERIOD:
88ScheduleParser.getPlaceLessons.cache_clear()
89cls.LESSONS_PLACE_LAST_DT_CASH = datetime.datetime.now().date()
90return await ScheduleParser.getPlaceLessons(building, place, date)
91
92@classmethod
93async def getInstituteNameByID(cls, id: int):
94inst = await cls.getInstitutes()
95return inst.get(id)
96
97@classmethod
98async def getTeacherNameByID(cls, id: int):
99"""С кэшем"""
100if daysBetweenNow(cls.TEACHER_BY_ID_LAST_DT_CASH) > cls.TEACHER_BY_ID_CASH_PERIOD:
101ScheduleParser.getTeacherNameByID.cache_clear()
102cls.TEACHER_BY_ID_LAST_DT_CASH = datetime.datetime.now().date()
103return await ScheduleParser.getTeacherNameByID(id)
104
105@classmethod
106async def clearCache(cls):
107ScheduleParser.getInstitutes.cache_clear()
108ScheduleParser.getGroups.cache_clear()
109ScheduleParser.getCourses.cache_clear()
110ScheduleParser.getGroupsByParameters.cache_clear()
111ScheduleParser.getLessons.cache_clear()
112ScheduleParser.getTeacherLessons.cache_clear()
113ScheduleParser.getPlaceLessons.cache_clear()
114ScheduleParser.getTeacherNameByID.cache_clear()
115