functions.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import phonenumbers
  2. import re
  3. import datetime
  4. from datetime import date, timedelta
  5. from bot.database import Database
  6. def validate_phone(number):
  7. number = number.replace('-', '')
  8. number = number.replace(' ', '')
  9. if len(number) == 10:
  10. number = "+7" + number
  11. elif len(number) == 11 and number[0] == '8':
  12. number = "+7" + number[1:]
  13. try:
  14. parse_phone = phonenumbers.parse(number)
  15. if phonenumbers.is_possible_number(parse_phone):
  16. return True
  17. else:
  18. return False
  19. except:
  20. return False
  21. def reject_cmd(text):
  22. if "/" in text:
  23. return True
  24. else:
  25. return False
  26. def reject_latin(text):
  27. if re.search(r'[a-zA-Z0-9]', text):
  28. return True
  29. else:
  30. return False
  31. def validate_fio(text):
  32. if len(text.split(' ')) < 3:
  33. return True
  34. else:
  35. return False
  36. def validate_time():
  37. pass
  38. def beauty_reg_request(data):
  39. result = (f"ФИО: {data['ФИО']}\n"
  40. f"Контакт: {data['Номер телефона']}")
  41. return result
  42. def beauty_all_events(data):
  43. result = (f"******************\n"
  44. f"Инициатор:\n{data['Инициатор']}\n\n"
  45. f"Событие:\n{data['Описание']}\n\n"
  46. f"Дата:\n{data['Дата']}\n\n"
  47. )
  48. return result
  49. def make_date():
  50. today = datetime.datetime.now()
  51. return datetime.datetime.strftime(today, '%d.%m.%Y')
  52. def date_range(data):
  53. today = date.today()
  54. weekday = today.weekday()
  55. days_per_month = {1: 31, 2: 28, 3: 30, 4: 31, 5: 30, 6: 31,
  56. 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
  57. if data == "today":
  58. return today
  59. if data == "week":
  60. first = today - timedelta(days=weekday)
  61. # upper bound
  62. last = today + timedelta(days=(6 - weekday))
  63. return f"{first} and {last}"
  64. if data == "month":
  65. first = today.replace(day=1)
  66. try:
  67. last = today.replace(day=days_per_month[today.month])
  68. except ValueError:
  69. if today.month == 2: # Not a leap year
  70. last = today.replace(day=28)
  71. else:
  72. raise
  73. return f"{first} and {last}"
  74. def to_quotes(data):
  75. data = "'" + str(data) + "'"
  76. return data
  77. def time_validator(data):
  78. re_pattern = "^(2[0-3]|[01]?[0-9])(:|\.)([0-5]?[0-9])( |-)(2[0-3]|[01]?[0-9])(:|\.)([0-5]?[0-9])$"
  79. if re.match(re_pattern, data):
  80. if len(data.split(" ")) == 2:
  81. return True
  82. elif len(data.split("-")) == 2:
  83. return True
  84. else:
  85. return False
  86. else:
  87. return False
  88. def split_time(data):
  89. if len(data.split(" ")) == 2:
  90. return data.replace(".", ":").split(" ")
  91. elif len(data.split("-")) == 2:
  92. return data.replace(".", ":").split("-")
  93. else:
  94. return False
  95. def get_time_range(start,finish):
  96. db = Database()
  97. sql1 = f"SELECT Id,e_end,e_start from events_table where e_date = '2022-10-10'"
  98. results = db.sql_fetchall(sql1)
  99. # print(results)
  100. for res in results:
  101. if res['e_start'] < start and res['e_end'] > finish:
  102. print(f"Внутри {res['Id']}")
  103. break
  104. elif res['e_start'] > start and res['e_end'] < finish:
  105. print(f"Перекрывает {res['Id']}")
  106. break
  107. elif start < res['e_end']:
  108. print(f"С конца {res['Id']}")
  109. print(finish)
  110. print(res['e_start'])
  111. elif finish > res['e_start']:
  112. print(f"С начала {res['Id']}")
  113. print(finish)
  114. print(res['e_start'])
  115. # print(split_time("1.00-15.30"))
  116. get_time_range('12:00','13:30')
  117. #
  118. #
  119. # 14:00 16:30