Мне нужно внедрить фильтр «открыт сейчас» для моего сайта, который перечисляет места, но я не знаю, с чего начать.Мой веб-сайт реализован с использованием Python, webpy, базы данных MySQL.
Я должен хранить часы работы для каждого места и выбирать места, которые открыты сейчас.
Пример часов работы: "Работаетс 9:30 до 23:00 по будням, с 11:00 до 23:00 по выходным »или« Работает круглосуточно, кроме 6:00 до 7:00 ».
Часы работы могут быть разными для каждого дня недели, день может быть большеодин интервал времени, и мне нужно взломать исключения для определенных праздников.
Любые советы / предложения по интерфейсу, схеме данных и запросу приветствуются.
UPD: мне удалось прийтис этим решением, все в порядке?
from dateutil.relativedelta import *
from dateutil.rrule import *
from datetime import *
from date import *
# venue can have many rules
hours_start = 23
minutes_start = 30
hours_end = 13 # if time_end is less than time_start then it ends next day
minutes_end = 30
days_of_week = (TH)
hours_diff = hours_end - hours_start
minutes_diff = minutes_end - minutes_start
if hours_diff < 0 or hours_diff == 0 and minutes_diff < 0:
hours_diff += 24
datetime_start = date.today() + relativedelta(hours=+hours_start, minutes=+minutes_start, days=-1) # Yesterday time_start
now = datetime.now()
occurrence = rrule(WEEKLY, wkst=MO, byweekday=days_of_week, dtstart=datetime_start).before(now, True)
if now <= occurrence + relativedelta(hours=hours_diff, minutes=minutes_diff):
print "IS OPEN NOW"