TGBotReffBook

Форк
0
/
scheduleparsercashmanager.py 
114 строк · 4.6 Кб
1
import datetime
2

3
from app.core.parsers.scheduleparser import ScheduleParser
4
from app.core.datetimehelper import daysBetweenNow
5

6

7
class ScheduleParserCashManager:
8
    INSTITUTE_LAST_DT_CASH = datetime.datetime.now().date()
9
    INSTITUTE_CASH_PERIOD = 30
10
    COURSE_LAST_DT_CASH = datetime.datetime.now().date()
11
    COURSE_CASH_PERIOD = 30
12
    GROUPS_LAST_DT_CASH = datetime.datetime.now().date()
13
    GROUPS_CASH_PERIOD = 30
14

15
    LESSONS_LAST_DT_CASH = datetime.datetime.now().date()
16
    LESSONS_CASH_PERIOD = 1
17

18
    LESSONS_TEACHER_LAST_DT_CASH = datetime.datetime.now().date()
19
    LESSONS_TEACHER_CASH_PERIOD = 1
20

21
    LESSONS_PLACE_LAST_DT_CASH = datetime.datetime.now().date()
22
    LESSONS_PLACE_CASH_PERIOD = 1
23

24
    TEACHER_BY_ID_LAST_DT_CASH = datetime.datetime.now().date()
25
    TEACHER_BY_ID_CASH_PERIOD = 1
26

27
    @classmethod
28
    async def getInstitutes(cls):
29
        """С кэшем"""
30
        if daysBetweenNow(cls.INSTITUTE_LAST_DT_CASH) > cls.INSTITUTE_CASH_PERIOD:
31
            ScheduleParser.getInstitutes.cache_clear()
32
            cls.INSTITUTE_LAST_DT_CASH = datetime.datetime.now().date()
33
        return await ScheduleParser.getInstitutes()
34

35
    @classmethod
36
    async def getCourses(cls, faculty: int, ed_form: str, degree: int):
37
        """С кэшем"""
38
        if daysBetweenNow(cls.COURSE_LAST_DT_CASH) > cls.COURSE_CASH_PERIOD:
39
            ScheduleParser.getGroups.cache_clear()
40
            ScheduleParser.getCourses.cache_clear()
41
            cls.COURSE_LAST_DT_CASH = datetime.datetime.now().date()
42
        return await ScheduleParser.getCourses(faculty, ed_form, degree)
43

44
    @classmethod
45
    async def getGroupsByParameters(cls, faculty: int, ed_form: str, degree: int, level: int):
46
        """С кэшем"""
47
        if daysBetweenNow(cls.GROUPS_LAST_DT_CASH) > cls.GROUPS_CASH_PERIOD:
48
            ScheduleParser.getGroups.cache_clear()
49
            ScheduleParser.getGroupsByParameters.cache_clear()
50
            cls.GROUPS_LAST_DT_CASH = datetime.datetime.now().date()
51
        return await ScheduleParser.getGroupsByParameters(faculty, ed_form, degree, level)
52

53
    @classmethod
54
    async def getGroupsByText(cls, group: str):
55
        """Без кэша"""
56
        return await ScheduleParser.getGroupsByText(group)
57

58
    @classmethod
59
    async def getTeacherByText(cls, group: str):
60
        """Без кэша"""
61
        return await ScheduleParser.getTeacherByText(group)
62

63
    @classmethod
64
    async def getPlacesByText(cls, place: str):
65
        """Без кэша"""
66
        return await ScheduleParser.getPlacesByText(place)
67

68
    @classmethod
69
    async def getLessons(cls, group: int, date: datetime.date):
70
        """С кэшем"""
71
        if daysBetweenNow(cls.LESSONS_LAST_DT_CASH) > cls.LESSONS_CASH_PERIOD:
72
            ScheduleParser.getLessons.cache_clear()
73
            cls.LESSONS_LAST_DT_CASH = datetime.datetime.now().date()
74
        return await ScheduleParser.getLessons(group, date)
75

76
    @classmethod
77
    async def getTeacherLessons(cls, teacher: int, date: datetime.date):
78
        """С кэшем"""
79
        if daysBetweenNow(cls.LESSONS_TEACHER_LAST_DT_CASH) > cls.LESSONS_TEACHER_CASH_PERIOD:
80
            ScheduleParser.getTeacherLessons.cache_clear()
81
            cls.LESSONS_TEACHER_LAST_DT_CASH = datetime.datetime.now().date()
82
        return await ScheduleParser.getTeacherLessons(teacher, date)
83

84
    @classmethod
85
    async def getPlaceLessons(cls, building: int, place: int, date: datetime.date):
86
        """С кэшем"""
87
        if daysBetweenNow(cls.LESSONS_PLACE_LAST_DT_CASH) > cls.LESSONS_PLACE_CASH_PERIOD:
88
            ScheduleParser.getPlaceLessons.cache_clear()
89
            cls.LESSONS_PLACE_LAST_DT_CASH = datetime.datetime.now().date()
90
        return await ScheduleParser.getPlaceLessons(building, place, date)
91

92
    @classmethod
93
    async def getInstituteNameByID(cls, id: int):
94
        inst = await cls.getInstitutes()
95
        return inst.get(id)
96

97
    @classmethod
98
    async def getTeacherNameByID(cls, id: int):
99
        """С кэшем"""
100
        if daysBetweenNow(cls.TEACHER_BY_ID_LAST_DT_CASH) > cls.TEACHER_BY_ID_CASH_PERIOD:
101
            ScheduleParser.getTeacherNameByID.cache_clear()
102
            cls.TEACHER_BY_ID_LAST_DT_CASH = datetime.datetime.now().date()
103
        return await ScheduleParser.getTeacherNameByID(id)
104

105
    @classmethod
106
    async def clearCache(cls):
107
        ScheduleParser.getInstitutes.cache_clear()
108
        ScheduleParser.getGroups.cache_clear()
109
        ScheduleParser.getCourses.cache_clear()
110
        ScheduleParser.getGroupsByParameters.cache_clear()
111
        ScheduleParser.getLessons.cache_clear()
112
        ScheduleParser.getTeacherLessons.cache_clear()
113
        ScheduleParser.getPlaceLessons.cache_clear()
114
        ScheduleParser.getTeacherNameByID.cache_clear()
115

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.