def post(request, slug): quiz = get_object_or_404(Quiz, slug=slug) if quiz.is_payment_valid(request, request.POST.get('razorpay_order_id'), request.POST.get('razorpay_payment_id'), request.POST.get('razorpay_signature')): grant_access_to_quiz(request.user, quiz) mail_managers( '[eSorobrain.com] New Quiz Registered', f'{request.user.username}: {request.user.name} with email: {request.user.email} has bought quiz: {quiz.title} at {timezone.now()}.', fail_silently=True) invoice = Invoice(user=request.user, description=f"Quiz bought - {quiz.title}", amount=quiz.sub_total) invoice.save() msg = render_to_string('mails/txt/product_bought.txt', { 'user': request.user, 'content_type': 'quiz', 'product': quiz }) msg_html = render_to_string('mails/html/invoice.html', {'invoice': invoice}) invoice.invoice_html = msg_html invoice.save() send_product_bought_mail('[Sorobrain] New Quiz Registered', msg, msg_html, to=[request.user.email]) return JsonResponse({ 'status': True, 'redirect': quiz.get_absolute_url() })
def grant_quiz_access(request): if not request.user.is_staff: return HttpResponse(403) usernames_string = request.session.get('_usernames') users = [ get_object_or_404(User, username=u.strip()) for u in usernames_string.split(',')[:-1] ] if request.method == 'POST': form = BulkQuickAccessForm(request.POST) if form.is_valid(): data = form.cleaned_data quizzes = data['quizzes'] for user in users: for q in quizzes: grant_access_to_quiz(user, q) messages.add_message(request, messages.SUCCESS, "Access granted to users successfully!") return redirect('/admin/main/user') form = BulkQuickAccessForm() return render(request, 'main/actions/quiz_access.html', { 'form': form, 'users': users, 'quizzes': Quiz.objects.filter(active=True) })
def post(request, slug): quiz = get_object_or_404(Quiz, slug=slug) form = RegisterWithCodeForm(request.POST) if form.is_valid(): data = form.cleaned_data code = get_object_or_404(QuizCode, code=data['code']) if code.is_valid(quiz): grant_access_to_quiz(request.user, quiz) code.use() else: messages.add_message(request, messages.WARNING, "Error 12: That code is invalid") return redirect(reverse('competition:code', args=[slug])) messages.add_message(request, messages.SUCCESS, "Registered Successfully") return redirect(quiz.get_absolute_url()) messages.add_message(request, messages.INFO, "That code is invalid") return redirect(reverse('competition:code', args=[slug]))
def post(request, slug): q = get_object_or_404(Quiz, slug=slug) if request.user.points >= q.sub_total: request.user.points -= q.sub_total request.user.save() add_ledger_debit(request.user, q.sub_total, f"Bought Quiz {q.title}") grant_access_to_quiz(request.user, q) mail_managers( '[eSorobrain.com] New Quiz Registered with Soromoney.', f'{request.user.username}: {request.user.name} with email: {request.user.email} has bought quiz: {q.title} at {timezone.now()} with Soromoney.', fail_silently=True) else: messages.add_message( request, messages.WARNING, "You don't have enough points to register for this quiz!") return redirect(reverse('quiz:buy', args=[slug])) messages.add_message(request, messages.SUCCESS, "Success! You now have access to the quiz!") return redirect(reverse('quiz:start', args=[slug]))