コード例 #1
0
ファイル: store.py プロジェクト: IshanManchanda/sorobrain
    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()
        })
コード例 #2
0
ファイル: quiz.py プロジェクト: paramkpr/sorobrain
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)
    })
コード例 #3
0
ファイル: store.py プロジェクト: IshanManchanda/sorobrain
 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]))
コード例 #4
0
ファイル: store.py プロジェクト: IshanManchanda/sorobrain
 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]))