diff --git a/apps/school/views.py b/apps/school/views.py index bdc1ed89..669836f5 100644 --- a/apps/school/views.py +++ b/apps/school/views.py @@ -2,7 +2,8 @@ from datetime import datetime, timedelta from django.contrib.auth import get_user_model from django.contrib.auth.decorators import login_required, user_passes_test -from django.db.models import Min, F, Func +from django.db.utils import IntegrityError +from django.db.models import Min, F, Func, Q from django.http import Http404 from django.shortcuts import get_object_or_404 from django.utils.decorators import method_decorator @@ -31,6 +32,26 @@ class LiveLessonsView(ListView): model = LiveLesson template_name = 'school/livelessons_list.html' + def get_queryset(self): + date_range = Q( + date__range=[ + (now() - timedelta(days=7)).date(), + (now() + timedelta(days=10)).date(), + ] + ) + queryset = LiveLesson.objects.filter(date_range) + if queryset.count() < 17: + start_date = now() - timedelta(days=7) + for i in range(18): + try: + LiveLesson.objects.create( + date=(start_date + timedelta(days=i)).date(), + ) + except IntegrityError: + pass + queryset = LiveLesson.objects.filter(date_range) + return queryset + @method_decorator(login_required, name='dispatch') class LiveLessonsDetailView(DetailView):