diff --git a/apps/content/views.py b/apps/content/views.py index 4bb8e9fa..78a3f819 100644 --- a/apps/content/views.py +++ b/apps/content/views.py @@ -1,5 +1,8 @@ +import os + +from django.conf import settings from django.contrib.auth.decorators import login_required -from django.http import JsonResponse +from django.http import JsonResponse, HttpResponse from django.shortcuts import get_object_or_404 from django.template import loader from django.utils.decorators import method_decorator @@ -9,6 +12,7 @@ from django.views.generic import TemplateView, DetailView from apps.content.models import Contest, ContestWork, FAQ from apps.course.models import ContestWorkComment +from apps.user.models import Child @method_decorator(login_required, name='dispatch') @@ -124,3 +128,21 @@ class FAQView(TemplateView): } for f in FAQ.objects.all()] return self.render_to_response(context) +from apps.notification.tasks import draw_cert + +@csrf_exempt +def get_certificate(request, cert): + signed_path_pattern = 'signed-user-certificates/%d.jpg' + fn = signed_path_pattern % cert + path = os.path.join(settings.RESOURCES_ROOT, fn) + child_id = request.GET.get('child_id') + if child_id: + child = get_object_or_404(Child, pk=child_id) + path = draw_cert(path, child.user.email, child.first_name, child.last_name) + f = open(path, 'rb') + response = HttpResponse(f, content_type='image/jpeg') + response['Content-Disposition'] = 'attachment; filename=%s' % fn + f.close() + if child_id: + os.remove(path) + return response diff --git a/apps/school/views.py b/apps/school/views.py index a5621682..f2b407ed 100644 --- a/apps/school/views.py +++ b/apps/school/views.py @@ -114,7 +114,7 @@ class LiveLessonsDetailView(DetailView): user=request.user, date_start__lte=now(), date_end__gte=now() - timedelta(days=30), - package__duration__lte=9, + package__duration=12, ).exists() if not is_purchased and request.user.role not in [User.ADMIN_ROLE, User.TEACHER_ROLE]: raise Http404 diff --git a/project/urls.py b/project/urls.py index e2bee7b0..1f8ff1dc 100644 --- a/project/urls.py +++ b/project/urls.py @@ -19,7 +19,8 @@ from django.views.generic import TemplateView from django.urls import path, include from apps.auth.views import LandingRegistrationView -from apps.content.views import ContestEditView, ContestView, ContestWorkView, contest_work_comment, FAQView +from apps.content.views import ContestEditView, ContestView, ContestWorkView, contest_work_comment, FAQView, \ + get_certificate from apps.course.views import ( CoursesView, likes, coursecomment, CourseView, LessonView, SearchView, @@ -106,6 +107,7 @@ urlpatterns = [ path('links', LinksView.as_view(), name='links'), path('prices', PackagesView.as_view(), name='packages'), path('landing-registration', LandingRegistrationView.as_view(), name='landing-registration'), + path('certificate//get', get_certificate, name='get-certificate'), ]