diff options
| -rw-r--r-- | blog/forms.py | 9 | ||||
| -rw-r--r-- | blog/urls.py | 1 | ||||
| -rw-r--r-- | blog/views.py | 70 | ||||
| -rw-r--r-- | requirements.txt | 1 | ||||
| -rw-r--r-- | templates/blog/post.html | 2 |
5 files changed, 1 insertions, 82 deletions
diff --git a/blog/forms.py b/blog/forms.py deleted file mode 100644 index a76e354b..00000000 --- a/blog/forms.py +++ /dev/null @@ -1,9 +0,0 @@ -from django import forms -import datetime - -class PaymentForm(forms.Form): - amount = forms.CharField(required=True, widget=forms.NumberInput, label='Amount') - card_number = forms.CharField(max_length=16, min_length=16, required=True, widget=forms.NumberInput, label='Card Number') - card_expiry_mm = forms.ChoiceField(choices=[(i, i) for i in range(1, 13)], required=True, label='Expiry Month') - card_expiry_yyyy = forms.ChoiceField(choices=[(i, i) for i in range(datetime.datetime.now().year, datetime.datetime.now().year + 21)], required=True, label='Expiry Year') - card_cvv = forms.CharField(max_length=3, min_length=3, required=True, widget=forms.NumberInput, label='CVV') diff --git a/blog/urls.py b/blog/urls.py index b056b74e..0d0e3d52 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -14,5 +14,4 @@ urlpatterns = [ path('articles/<str:slug>/edit_comment', views.edit_comment, name='edit_comment'), path('articles/<str:slug>/delete_comment/<int:comment_id>', views.delete_comment, name='delete_comment'), path('~<str:username>', views.user_activity, name='user_activity'), - path('donate', views.donate, name='donate'), ] diff --git a/blog/views.py b/blog/views.py index 690eea66..52447cb2 100644 --- a/blog/views.py +++ b/blog/views.py @@ -13,17 +13,10 @@ from users.forms import RegisterForm, UpdateUserDetailsForm from users.tokens import CaptchaTokenGenerator from django.contrib import messages from bs4 import BeautifulSoup -from .forms import PaymentForm import re from dotenv import load_dotenv -import os -import stripe -import requests -import math load_dotenv() -stripe.api_key = os.getenv('STRIPE_SECRET_KEY') - def atoi(text): return int(text) if text.isdigit() else text @@ -264,66 +257,3 @@ def user_activity(request, username): comment.body = comment_processor(comment.body) return render(request, 'blog/activity.html', {'title': 'User Activity', 'activity_user': user, 'activity_user_profile': user_profile, 'activity_recent_comments': recent_comments, 'activity_user_email': user_email}) - -def donate(request): - amount = request.GET.get('amount') - - if request.GET.get('payment_intent') and request.GET.get('tab') == 'success': - payment_intent = stripe.PaymentIntent.retrieve(request.GET.get('payment_intent')) - if payment_intent.status != 'succeeded': - return redirect(reverse('blog:donate') + '?tab=error&payment_intent=' + payment_intent.id + '&payment_amount=' + str(int(request.GET.get('payment_amount')) / 100) + '&amount=' + str(request.GET.get('amount')) + '&error=' + payment_intent.last_payment_error.message) - - try: - amount = int(amount) - except: - amount = 3 - amount = amount if amount > 0 else 3 - amount = amount if amount < 1000 else 1000 - payment_form = PaymentForm(initial={'amount': amount}) - - if request.method == 'POST': - try: - # create a payment using stripe - payment_method = stripe.PaymentMethod.create( - type='card', - card={ - 'number': request.POST['card_number'], - 'exp_month': request.POST['card_expiry_mm'], - 'exp_year': request.POST['card_expiry_yyyy'], - 'cvc': request.POST['card_cvv'], - }, - ) - - # get the current usd to inr conversion rate - rate = requests.get('https://api.exchangerate-api.com/v4/latest/USD').json()['rates']['INR'] - - # convert the amount to inr - init_amt = int(request.POST['amount']) - amount = init_amt * math.ceil(rate) * 100 - - # create a payment intent - payment_intent = stripe.PaymentIntent.create( - amount=amount, - currency='inr', - payment_method_types=['card'], - payment_method=payment_method.id, - confirm=True, - return_url=request.build_absolute_uri(reverse('blog:donate') + '?tab=success' + '&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt)), - ) - - if payment_intent.status == 'succeeded': - return redirect(reverse('blog:donate') + '?tab=success&payment_intent=' + payment_intent.id + '&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt)) - - elif payment_intent.status == 'requires_action': - url = payment_intent['next_action']['redirect_to_url']['url'] - return redirect(url) - - - else: - return redirect(reverse('blog:donate') + '?tab=error&payment_intent=' + payment_intent.id + '&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt)) - - except Exception as e: - error = e.json_body['error']['message'] - return redirect(reverse('blog:donate') + '?tab=error&payment_amount=' + str(int(amount / 100)) + '&amount=' + str(init_amt) + '&error=' + str(error)) - - return render(request, 'blog/donate.html', {'title': 'Donate', 'amount': amount, 'payment_form': payment_form}) diff --git a/requirements.txt b/requirements.txt index 093d9b23..922c0f63 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,3 @@ pillow pycryptodome pygments bs4 -stripe diff --git a/templates/blog/post.html b/templates/blog/post.html index 17b8a19d..786d7883 100644 --- a/templates/blog/post.html +++ b/templates/blog/post.html @@ -4,7 +4,7 @@ <img src="{% url 'ignis:post_image' '730' post.id %}.gif" alt="Cover Image" style="width: 730px; margin: 0 auto; display: block;"> <h1>{{ post.title }}</h1> <p style="line-height: 1.6em;"> - Posted on <em><u>{{ post.date | date:"M d, Y" }}</u></em> by <em><a href="#">{{ post.author }}</a> in <a href="#">{{ post.category }}</a></em> + Posted on <em><u>{{ post.date | date:"M d, Y" }}</u></em> by <em><a href="{% url 'blog:user_activity' post.author %}">{{ post.author }}</a> in <a href="#">{{ post.category }}</a></em> </p> <p>Tags: {% for tag in tags %} |
