import phonenumbers import re import datetime from datetime import date, timedelta from bot.database import Database def validate_phone(number): number = number.replace('-', '') number = number.replace(' ', '') if len(number) == 10: number = "+7" + number elif len(number) == 11 and number[0] == '8': number = "+7" + number[1:] try: parse_phone = phonenumbers.parse(number) if phonenumbers.is_possible_number(parse_phone): return True else: return False except: return False def reject_cmd(text): if "/" in text: return True else: return False def reject_latin(text): if re.search(r'[a-zA-Z0-9]', text): return True else: return False def validate_fio(text): if len(text.split(' ')) < 3: return True else: return False def validate_time(): pass def beauty_reg_request(data): result = (f"ФИО: {data['ФИО']}\n" f"Контакт: {data['Номер телефона']}") return result def beauty_all_events(data): result = (f"******************\n" f"Инициатор:\n{data['Инициатор']}\n\n" f"Событие:\n{data['Описание']}\n\n" f"Дата:\n{data['Дата']}\n\n" ) return result def make_date(): today = datetime.datetime.now() return datetime.datetime.strftime(today, '%d.%m.%Y') def date_range(data): today = date.today() weekday = today.weekday() days_per_month = {1: 31, 2: 28, 3: 30, 4: 31, 5: 30, 6: 31, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31} if data == "today": return today if data == "week": first = today - timedelta(days=weekday) # upper bound last = today + timedelta(days=(6 - weekday)) return f"{first} and {last}" if data == "month": first = today.replace(day=1) try: last = today.replace(day=days_per_month[today.month]) except ValueError: if today.month == 2: # Not a leap year last = today.replace(day=28) else: raise return f"{first} and {last}" def to_quotes(data): data = "'" + str(data) + "'" return data def time_validator(data): re_pattern = "^(2[0-3]|[01]?[0-9])(:|\.)([0-5]?[0-9])( |-)(2[0-3]|[01]?[0-9])(:|\.)([0-5]?[0-9])$" if re.match(re_pattern, data): if len(data.split(" ")) == 2: return True elif len(data.split("-")) == 2: return True else: return False else: return False def split_time(data): if len(data.split(" ")) == 2: return data.replace(".", ":").split(" ") elif len(data.split("-")) == 2: return data.replace(".", ":").split("-") else: return False def get_time_range(start,finish): db = Database() sql1 = f"SELECT Id,e_end,e_start from events_table where e_date = '2022-10-10'" results = db.sql_fetchall(sql1) # print(results) for res in results: if res['e_start'] < start and res['e_end'] > finish: print(f"Внутри {res['Id']}") break elif res['e_start'] > start and res['e_end'] < finish: print(f"Перекрывает {res['Id']}") break elif start < res['e_end']: print(f"С конца {res['Id']}") print(finish) print(res['e_start']) elif finish > res['e_start']: print(f"С начала {res['Id']}") print(finish) print(res['e_start']) # print(split_time("1.00-15.30")) get_time_range('12:00','13:30') # # # 14:00 16:30