|
|
|
@ -153,13 +153,27 @@ class LiveLesson(BaseModel, DeactivatedMixin): |
|
|
|
def stream_index(self): |
|
|
|
def stream_index(self): |
|
|
|
return self.stream.split('/')[-1] |
|
|
|
return self.stream.split('/')[-1] |
|
|
|
|
|
|
|
|
|
|
|
def is_online(self): |
|
|
|
@cached_property |
|
|
|
|
|
|
|
def school_schedule(self): |
|
|
|
weekday = self.date.isoweekday() if self.date else None |
|
|
|
weekday = self.date.isoweekday() if self.date else None |
|
|
|
try: |
|
|
|
try: |
|
|
|
school_schedule = SchoolSchedule.objects.get(weekday=weekday) |
|
|
|
return SchoolSchedule.objects.get(weekday=weekday) |
|
|
|
except SchoolSchedule.DoesNotExist: |
|
|
|
except SchoolSchedule.DoesNotExist: |
|
|
|
return False |
|
|
|
return None |
|
|
|
else: |
|
|
|
|
|
|
|
start_at = school_schedule.start_at |
|
|
|
@property |
|
|
|
end_at = datetime.combine(now().today(), start_at) + timedelta(hours=1) |
|
|
|
def is_online(self): |
|
|
|
return start_at <= now().time() and end_at.time() >= now().time() |
|
|
|
# если урок открыт, он сегодняшний и прошло не больше часа с момента старта - значит онлайн |
|
|
|
|
|
|
|
if self.is_opened and self.school_schedule: |
|
|
|
|
|
|
|
today = now().date() |
|
|
|
|
|
|
|
end_at = datetime.combine(today, self.school_schedule.start_at) + timedelta(hours=1) |
|
|
|
|
|
|
|
return self.date == today and end_at.time() >= now().time() |
|
|
|
|
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
|
|
def is_opened(self): |
|
|
|
|
|
|
|
# если есть заголовок и дата меньше сегодняшней (прошлый урок) или сегодняшняя и время показа урока уже пришло |
|
|
|
|
|
|
|
# тогда урок считается открытым к просмотру |
|
|
|
|
|
|
|
today = now().date() |
|
|
|
|
|
|
|
return self.title and (self.date < today or (self.date == today and self.school_schedule |
|
|
|
|
|
|
|
and self.school_schedule.start_at <= now().time())) |
|
|
|
|