/
Esgalnor
/
TG_Bot
Обзор
Документация
Войти
/
Esgalnor
/
TG_Bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
patch
database/calendar_pw.py
136 строк
4 KB
Esgalnor
upload files
18 авг 2025, 17:24
18 авг 2025, 17:24
82ee7ff
Код
Авторство
О чём код?
import datetime import json import re from time import strftime from database.models_pw import Calendar from config.config import MASTER_ID, WORK_TIME_STOP, WORK_TIME_START from utils.json_funcs import to_obj, to_str from database.user_pw import users class CalendarPW: def __init__(self): self.model = Calendar self.year = datetime.datetime.now().year self.work_start = WORK_TIME_START self.work_stop = WORK_TIME_STOP def new_day(self, day: str) -> None: self.model.create(day=day) today = self.model.get(self.model.day == day) today.save() def set_work_day(self, day: str): today = self.model.get(self.model.day == day) today.work_day = "{} {}".format(WORK_TIME_START, WORK_TIME_STOP) today.save() def set_unwork_day(self, day: str): today = self.model.get(self.model.day == day) today.work_day = "" today.save() def get_work(self, day: str): today = self.model.get(self.model.day == day) return today.work_day def get_recs(self, day: str, in_dict=False): today = self.model.get(self.model.day == day) if in_dict: return to_obj(today.recs) return today.recs def set_recs(self, day: str, new_rec: dict): today = self.model.get(self.model.day == day) recs = self.get_recs(day, in_dict=True) if new_rec.keys()[0] in recs.keys(): raise ValueError("Запись на это время уже есть.") recs = recs | new_rec today.recs = recs today.save() def new_month(self, month: int, new_year: bool = False): now_date = datetime.datetime(self.year, month, 1) day = 1 year = now_date.year + new_year delta = datetime.timedelta(1) while True: today = "{}.{}.{}".format(str(day).zfill(2), str(month).zfill(2), str(year)) self.new_day(today) now_date += delta if now_date.month != month: break day += 1 def get_work_hours(self, day, in_dict=False): today = self.model.get(self.model.day == day) if in_dict: return to_obj(today.busy_time) return today.busy_time def set_work_hours(self, day, time: str): """ day - "DDMMYYYY" time - "HH HH" """ today = self.model.get(self.model.day == day) today.work_day = time today.save() def add_busy_time(self, day: str, time: str, dur: int): """ day - "DD.MM.YYYY" time - json "HH:MM" start_time dur - minutes duration """ today = self.model.get(self.model.day == day) dict_work = self.get_work_hours(day, in_dict=True) dict_work = dict_work | {time: dur} today.busy_time = to_str(dict_work) today.save() def free_time_in_day(self, day): today = self.model.get(self.model.day == day) today.busy_time = '' today.users_on_rec = '' today.save() def del_busy_time(self, day: str, time: str): today = self.model.get(self.model.day == day) busy_dict = to_obj(today.busy_time) if time in busy_dict: busy_dict.pop(time) today.busy_time = to_str(busy_dict) today.save() else: print("Time not found") def get_users_on_rec(self, day): today = self.model.get(self.model.day == day) return today.users_on_rec def add_user_on_rec(self, day, id_user): today = self.model.get(self.model.day == day) if isinstance(id_user, int) and id_user in users.get_list_user(): today.users_on_rec += str(id_user) + ' ' today.save() def del_user_on_rec(self, day, id_user): today = self.model.get(self.model.day == day) today.users_on_rec = today.users_on_rec.replace(str(id_user) + ' ', '') today.save() my_calendar = CalendarPW() if __name__ == "__main__": my_calendar.free_time_in_day("14.10.2024") # my_calendar.del_user_on_rec('20.08.2024', 1966003259) # my_calendar.set_recs("11.10.2024", {0: {08.00: "Yjub"}}) ...