2297 lines
91 KiB
Python
Executable File
2297 lines
91 KiB
Python
Executable File
# from turtle import home
|
|
from auto_email.views import sendmail
|
|
|
|
import calendar
|
|
import datetime
|
|
import email
|
|
import json
|
|
import os
|
|
import random
|
|
from datetime import date, timedelta
|
|
from urllib.request import urlopen
|
|
from users.models import Institutional_user
|
|
import razorpay
|
|
import requests
|
|
import stripe
|
|
from bson import json_util
|
|
from dateutil.relativedelta import relativedelta
|
|
from django.conf import settings
|
|
from django.contrib.auth import get_user_model
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.contrib.auth.models import User
|
|
from django.core.mail import EmailMessage, EmailMultiAlternatives, message
|
|
from django.core.paginator import Paginator
|
|
from django.http import HttpResponse, JsonResponse
|
|
from django.shortcuts import HttpResponse, redirect, render
|
|
from django.template.loader import render_to_string
|
|
from django.utils import timezone
|
|
from django.utils.html import strip_tags
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
# from forex_python.converter import CurrencyRates
|
|
from geopy.distance import geodesic
|
|
from geopy.geocoders import Nominatim
|
|
from pymongo import MongoClient
|
|
from rest_framework import status, viewsets
|
|
from rest_framework.pagination import PageNumberPagination
|
|
from rest_framework.permissions import AllowAny, IsAuthenticated
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework_simplejwt.authentication import JWTAuthentication
|
|
from twilio.rest import Client
|
|
|
|
# from blockchain.contractInteraction import upload_subscription_to_blockchain
|
|
#from ideamall.views import commissionpayment
|
|
#from ideamall.views import payment as ideamall_script_payment
|
|
from lpp.models import MNFLPPDDatabase
|
|
# from MNF.email import mnfnsendemail, poster
|
|
from MNF.settings import RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET, BasePath
|
|
from mnfapp.models import PaymentData, centralDatabase
|
|
from mnfapp.views import *
|
|
# from relationshipmanager.models import RMDatabase
|
|
from users.models import ReferUser
|
|
|
|
# from mnfapp.views import PaymentDetails
|
|
from .models import (LifeMember, PromoCode, Refund, gift, privilegedUser,
|
|
privilegedUser1, refer)
|
|
from .serializers import PaymentDataSerializer, RefundSerializer
|
|
from centralizePayment.models import CentralPayment
|
|
User = get_user_model()
|
|
|
|
|
|
# Initialize Nominatim API
|
|
geolocator = Nominatim(user_agent="http")
|
|
from_email = settings.EMAIL_HOST_USER
|
|
|
|
MongoDBUrl = "mongodb+srv://MNF:root@cluster0.gbkxi.gcp.mongodb.net/DB?retryWrites=true&w=majority"
|
|
|
|
client = MongoClient(MongoDBUrl)
|
|
# script_id = id
|
|
db = client["DB"]
|
|
title = db["college_DB"].find()
|
|
college_emaillist = []
|
|
for i in title:
|
|
college_emaillist.append(i["college_email"])
|
|
|
|
# Create your views here.
|
|
|
|
# Create your views here.
|
|
|
|
|
|
# This is your real test secret API key.
|
|
# stripe.api_key = "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"
|
|
# stripe.api_key = "sk_test_51JT8ahSF9vzGWnggJT1M69LDT0Q8tCqvHzuWd9Fih5YO2guIpMpUd58swbDrJYocpQZAn3nY8k3Ymyw8QZ8dLeEF00VxfBmMWI"
|
|
stripe.api_key = settings.STRIPE_SECRET_KEY
|
|
STRIPE_PUB_KEY = settings.STRIPE_PUBLISHABLE_KEY
|
|
# keyID= "rzp_live_ZCKOJ4oKnyYgjf"
|
|
# keySecret = "exix5pSVMUhpyOYeNAqoYuS5"
|
|
# keyID = "rzp_test_6U9A7gZuno8Qz1"
|
|
# keySecret = "SrhczTH4dmrxW8SrzeqOdBSP"
|
|
# keyID = settings.RAZORPAY_KEY_ID
|
|
# keySecret = settings.RAZORPAY_KEY_SECRET
|
|
|
|
|
|
def set_payment_token(request):
|
|
if request.user.is_superuser:
|
|
request.session["keyID"] = settings.T_RAZORPAY_KEY_ID
|
|
request.session["keySecret"] = settings.T_RAZORPAY_KEY_SECRET
|
|
else:
|
|
request.session["keyID"] = settings.RAZORPAY_KEY_ID
|
|
request.session["keySecret"] = settings.RAZORPAY_KEY_SECRET
|
|
|
|
def get_total_months(start_date, end_date):
|
|
months = (end_date.year - start_date.year) * 12 + (end_date.month - start_date.month)
|
|
return months
|
|
|
|
|
|
account_sid = settings.TWILIO_ACCOUNT_SID
|
|
auth_token = settings.TWILIO_AUTH_TOKEN
|
|
client = Client(account_sid, auth_token)
|
|
# from flask import Flask, render_template, jsonify, request
|
|
|
|
# for USD
|
|
|
|
|
|
def student(request):
|
|
return render(request, "payments/student.html")
|
|
|
|
|
|
def valid(request):
|
|
return render(request, "payments/validate.html")
|
|
|
|
|
|
def studentregis(request):
|
|
# register as previlegeduser1 and redirect to homepage
|
|
y = privilegedUser1()
|
|
|
|
cd = centralDatabase.objects.get(user_id=request.user)
|
|
cd.priviledgedMember = True
|
|
cd.save()
|
|
# lifeData = privilegedUser1.objects.filter(is_active='yes')
|
|
# # left = 25
|
|
# desc = ''
|
|
# thisMonth = datetime.datetime.now().strftime('%B')
|
|
# if lifeData:
|
|
# for i in lifeData:
|
|
# if datetime.datetime.now().month == i.dateSubscribed.month:
|
|
# left -= 1
|
|
if request.method == "POST" and student_valid(request):
|
|
plan = request.POST.get("plan")
|
|
y.user = request.user
|
|
y.is_active = "yes"
|
|
if plan == "Monthly student":
|
|
amount = "1"
|
|
y.memberType = "normal"
|
|
desc = "Privileged"
|
|
y.months = 1
|
|
y.student = True
|
|
y.save()
|
|
return redirect("/members-home")
|
|
|
|
|
|
def get_vistor_latlon(visitor_ip):
|
|
ip_address = visitor_ip
|
|
# visitor_ip_address(request)
|
|
# URL to send the request to
|
|
request_url = 'https://geolocation-db.com/jsonp/' + ip_address
|
|
# Send request and decode the result
|
|
response = requests.get(request_url)
|
|
result = response.content.decode()
|
|
# Clean the returned string so it just contains the dictionary data for the IP address
|
|
result = result.split("(")[1].strip(")")
|
|
# Convert this data into a dictionary
|
|
result = json.loads(result)
|
|
l_result = list(result.items())
|
|
l_lat2 = l_result[4]
|
|
latitude2 = l_lat2[1]
|
|
l_lon2 = l_result[5]
|
|
longitude2 = l_lon2[1]
|
|
return latitude2, longitude2
|
|
|
|
@csrf_exempt
|
|
@login_required(login_url='/')
|
|
def payment(request):
|
|
# print('In payment function')
|
|
set_payment_token(request)
|
|
keyID = request.session["keyID"]
|
|
keySecret = request.session["keySecret"]
|
|
left = 25
|
|
|
|
lifeData = privilegedUser1.objects.filter(
|
|
is_active="yes",
|
|
dateSubscribed__year=datetime.datetime.now().year,
|
|
memberType="Life Member",
|
|
)
|
|
desc = ""
|
|
if lifeData:
|
|
for i in lifeData:
|
|
if datetime.datetime.now().month == i.dateSubscribed.month:
|
|
left -= 1
|
|
if left < 0:
|
|
left = 0
|
|
context["life_disable"] = True
|
|
break
|
|
context = {}
|
|
context["monthly_member"] = settings.MONTHLY_MEMBER
|
|
context["employ_discount"] = settings.EMPLOY_DISCOUNT
|
|
context["yearly_member"] = settings.YEARLY_MEMBER
|
|
context["yearly_member_additional"] = settings.YEARLY_MEMBER_ADDITIONAL
|
|
context["life_member_additional"] = settings.LIFE_MEMBER_ADDITIONAL
|
|
context["life_member_year"] = settings.LIFE_MEMBER_YEAR
|
|
context["life_member"] = settings.LIFE_MEMBER
|
|
context["employ_yearly_member"] = int(
|
|
context["yearly_member"] * context["employ_discount"] / 100
|
|
)
|
|
context["employ_life_member"] = int(
|
|
context["life_member"] * context["employ_discount"] / 100
|
|
)
|
|
thisMonth = datetime.datetime.now().strftime("%B")
|
|
prev = 0
|
|
if privilegedUser1.objects.filter(user=request.user).exists():
|
|
|
|
delta = datetime.datetime.now(
|
|
datetime.timezone.utc) - datetime.timedelta(days=2)
|
|
privilegedUser1.objects.filter(
|
|
user=request.user, is_active="no", dateSubscribed__lt=delta
|
|
).delete()
|
|
# privilegedUser1.objects.filter(
|
|
# user=request.user, is_active='no').delete()
|
|
if privilegedUser1.objects.filter(user=request.user, is_active="yes").exists():
|
|
x = privilegedUser1.objects.get(user=request.user, is_active="yes")
|
|
# x.id = privilegedUser1.objects.all().count()
|
|
# date_now = timezone.now()
|
|
# tmp = relativedelta(date_now, x.dateSubscribed)
|
|
|
|
|
|
# tmp = relativedelta(today_date,x.dateSubscribed)
|
|
# prev = tmp.years * 12 + tmp.months
|
|
|
|
today_date = date.today()
|
|
prev = get_total_months(today_date,x.dateSubscribed)
|
|
else:
|
|
prev = 0
|
|
if privilegedUser1.objects.filter(user=request.user, is_active="yes").exists():
|
|
y = privilegedUser1.objects.get(user=request.user, is_active="yes")
|
|
if y.memberType == "Life Member":
|
|
context["monthly_disable"] = True
|
|
context["yearly_disable"] = True
|
|
context["life_disable"] = True
|
|
elif y.memberType == "yearly":
|
|
context["monthly_disable"] = True
|
|
context["yearly_disable"] = True
|
|
context["life_member"] = (context["life_member"] - context["monthly_member"] * prev)
|
|
elif y.memberType == "normal":
|
|
context["monthly_disable"] = True
|
|
context["life_member"] = context["life_member"] - \
|
|
context["monthly_member"]
|
|
context["yearly_member"] = (
|
|
context["yearly_member"] - context["monthly_member"]
|
|
)
|
|
context["employ_yearly_member"] = int(
|
|
context["yearly_member"] * context["employ_discount"] / 100
|
|
)
|
|
context["employ_life_member"] = int(
|
|
context["life_member"] * context["employ_discount"] / 100
|
|
)
|
|
if request.method == "GET":
|
|
|
|
user_obj = privilegedUser1.objects.get(user=request.user,is_active='yes') if privilegedUser1.objects.filter(user=request.user,is_active='yes').exists() else None
|
|
|
|
if user_obj:
|
|
expiry = user_obj.dateSubscribed + relativedelta(months=user_obj.months)
|
|
context['expiry'] = expiry
|
|
context['memberType'] = user_obj.memberType
|
|
|
|
|
|
|
|
context["left"] = left
|
|
context["thisMonth"] = thisMonth
|
|
context["desc"] = desc
|
|
context["prev"] = prev
|
|
|
|
|
|
return render(request, "Privilege/index.html", context)
|
|
# return render(request, "payments/payment1.html", context)
|
|
if request.method == "POST":
|
|
# we are taking plan wich user has selected to decide amount and description
|
|
|
|
plan = request.POST.get("plan")
|
|
response = {"id": "123"}
|
|
# deciding amount and desc on the basis of plan
|
|
if plan == "Monthly plan":
|
|
amount = str(context["monthly_member"])
|
|
desc = "Privileged"
|
|
if plan == "yearly":
|
|
amount = str(context["yearly_member"])
|
|
desc = "Privileged"
|
|
if plan == "Monthly special":
|
|
amount = str(context["monthly_member"])
|
|
desc = "Privileged"
|
|
|
|
if plan == "yearly special":
|
|
amount = str(context["employ_yearly_member"])
|
|
desc = "Privileged"
|
|
if plan == "Life":
|
|
if request.user.is_staff:
|
|
amount = str(context["employ_life_member"])
|
|
else:
|
|
amount = str(context["life_member"])
|
|
desc = "Life"
|
|
|
|
if Institutional_user.objects.filter(user=request.user, status="verified").exists():
|
|
# print("caseIMdonenow")
|
|
if plan != "Life":
|
|
# print("caseIMdonen")
|
|
amount = float(
|
|
amount) - (float(settings.IM_DISCOUNT) * float(amount) / 100)
|
|
# print("caseIMdone")
|
|
# request.session["PrivilegedID"] = json.loads(json_util.dumps(x.id))
|
|
# passing plan to session for further process
|
|
request.session["plan_purchased"] = plan
|
|
with open(f"{basepath}/MNF/json_keys/conversionRates.json") as c:
|
|
curr = json.load(c)
|
|
try:
|
|
rate = curr["rates"]["INR"]
|
|
# c = CurrencyRates()
|
|
# rate = c.get_rate("USD", str(currency.upper()))
|
|
except Exception as e:
|
|
# print("checkout error", e)
|
|
rate = 80
|
|
amtINR = round(float(int(amount) * rate), 2)
|
|
# print('Country Name :::::::', request.POST.get("country"))
|
|
# if User Country is INDIA payment will done through razorpay
|
|
if request.POST.get("country") == "IN":
|
|
# print('Country India::::::')
|
|
client = razorpay.Client(auth=(keyID, keySecret))
|
|
payment_intent = client.order.create(
|
|
{
|
|
"amount": int(int(amount) * 100 * rate),
|
|
"currency": "INR",
|
|
"payment": {
|
|
"capture": "automatic",
|
|
"capture_options": {"refund_speed": "normal"},
|
|
},
|
|
}
|
|
)
|
|
pid = payment_intent["id"]
|
|
context["desc"] = desc
|
|
context["amount"] = amount
|
|
context["pid"] = pid
|
|
context["pk"] = keyID
|
|
context["amtINR"] = amtINR
|
|
context["payment_intent"] = payment_intent
|
|
context["subPlan"] = plan
|
|
|
|
# passing amount in indian rupees, rate and months (on the basis of plan) through session
|
|
request.session["amtINR_card_razorpay"] = amtINR
|
|
request.session["rate"] = rate
|
|
if plan == "Monthly plan":
|
|
request.session["months_card_razorpay"] = 1
|
|
if plan == "yearly":
|
|
request.session["months_card_razorpay"] = 12
|
|
if plan == "Monthly special":
|
|
request.session["months_card_razorpay"] = 1
|
|
if plan == "yearly special":
|
|
request.session["months_card_razorpay"] = 12
|
|
if plan == "Life":
|
|
request.session["months_card_razorpay"] = settings.LIFE_MEMBER_YEAR * 12
|
|
|
|
# shehzeen
|
|
request.session['stage'] = "1"
|
|
payobj = PaymentData()
|
|
payobj.user_id = request.user
|
|
payobj.stage = request.session['stage']
|
|
payobj.save()
|
|
request.session['payment_uuid'] = str(payobj.uuid)
|
|
# shehzeen
|
|
|
|
# Sending Mail
|
|
# print('Helloooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo')
|
|
|
|
return render(request, "payments/checkout_razorpay.html", context)
|
|
# if User Country is other than INDIA payment will done through stripe
|
|
else:
|
|
customer = stripe.Customer.create(
|
|
email=request.user.email,
|
|
)
|
|
payment_intent = stripe.PaymentIntent.create(
|
|
amount=int(int(amount) * 100 * rate),
|
|
currency="INR",
|
|
# payment_method_types=["card"],
|
|
automatic_payment_methods={'enabled': True},
|
|
customer=customer.id,
|
|
# payment_method_types=['card', 'Apple Pay', 'Google Pay']
|
|
# automatic_payment_methods= {"enabled": True}
|
|
)
|
|
pid = payment_intent.id
|
|
context["pk"] = STRIPE_PUB_KEY
|
|
context["amtINR"] = amtINR
|
|
context["pid"] = pid
|
|
# This is commented for temprary usage
|
|
context['secret_key'] = payment_intent.client_secret
|
|
context["STRIPE_PUBLISHABLE_KEY"] = (stripe.api_key,)
|
|
context["response"] = response
|
|
context["left"] = left
|
|
context["desc"] = desc
|
|
context["thisMonth"] = thisMonth
|
|
context["amount"] = amount
|
|
context["subPlan"] = plan
|
|
# passing payment id , payment type, rate and months (on the basis of plan) through session
|
|
request.session["pid"] = pid
|
|
request.session["ptype"] = 'subscription'
|
|
|
|
request.session["rate"] = rate
|
|
if plan == "Monthly plan":
|
|
request.session["months_stripe_paymentdone"] = 1
|
|
if plan == "yearly":
|
|
request.session["months_stripe_paymentdone"] = 12
|
|
if plan == "Monthly special":
|
|
request.session["months_stripe_paymentdone"] = 1
|
|
if plan == "yearly special":
|
|
request.session["months_stripe_paymentdone"] = 12
|
|
if plan == "Life":
|
|
request.session["months_stripe_paymentdone"] = settings.LIFE_MEMBER_YEAR * 12
|
|
|
|
# sending mail
|
|
|
|
# subject = "Previledge MEMBER " + str(x.dateSubscribed) + "."
|
|
# from_email = settings.EMAIL_HOST_USER
|
|
# to = request.user.email
|
|
# context_2 = {
|
|
# "Date": x.dateSubscribed,
|
|
# "Name": x.user.email,
|
|
# }
|
|
# html_content = render_to_string(
|
|
# "payments/event_email_template.html", context_2
|
|
# ) # render with dynamic value
|
|
# Strip the html tag. So people can see the pure text at least.
|
|
# text_content = strip_tags(html_content)
|
|
# create the email, and attach the HTML version as well.
|
|
# msgs = EmailMultiAlternatives(subject, text_content, from_email, [to])
|
|
# msgs.attach_alternative(html_content, "text/html")
|
|
# msgs.send()
|
|
# sendmail(to_email = [x.user.email],email_code = "GT6")
|
|
request.session['stage'] = "1"
|
|
payobj = PaymentData()
|
|
payobj.user_id = request.user
|
|
payobj.stage = request.session['stage']
|
|
payobj.save()
|
|
request.session['payment_uuid'] = str(payobj.uuid)
|
|
return render(request, "payments/checkout.html", context)
|
|
|
|
|
|
def student_valid(request):
|
|
if privilegedUser1.objects.filter(user=request.user).exists():
|
|
return False
|
|
temp_email = str(request.user.email).split("@")
|
|
if temp_email[1] in college_emaillist:
|
|
return True
|
|
|
|
|
|
def Gift(request):
|
|
set_payment_token(request)
|
|
keyID = request.session["keyID"]
|
|
keySecret = request.session["keySecret"]
|
|
x = gift()
|
|
if request.method == "POST":
|
|
listG = ""
|
|
name = request.POST.get("Name")
|
|
name = name[:-3]
|
|
|
|
listN = name.split("@#$")
|
|
email = request.POST.get("Email")
|
|
email = email[:-3]
|
|
listL = email.split("@#$")
|
|
phone = request.POST.get("Phone")
|
|
phone = phone[:-3]
|
|
listP = phone.split("@#$")
|
|
counting = request.POST.get("counts")
|
|
# print("counting", counting)
|
|
# print("typecounting", type(counting))
|
|
# print("intcounting", int(counting))
|
|
# listL.remove("")
|
|
for i in range(len(listL)):
|
|
x = gift()
|
|
x.user = request.user
|
|
x.name = listN[i]
|
|
x.email = listL[i]
|
|
x.PhoneNumber = listP[i]
|
|
x.gift_id = str(random.randint(111111, 999999))
|
|
x.plan = "deactivated"
|
|
x.token = "MNF_" + str(random.randint(11111111, 99999999))
|
|
x.save()
|
|
listG += str(x.id) + "@#$"
|
|
# amount = 0.8 * int(len(listL))
|
|
amount = 0.8 * int(counting)
|
|
request.session['gift_amount'] = amount
|
|
with open(f"{basepath}/MNF/json_keys/conversionRates.json") as c:
|
|
curr = json.load(c)
|
|
try:
|
|
rate = curr["rates"]["INR"]
|
|
# c = CurrencyRates()
|
|
# rate = c.get_rate("USD", str(currency.upper()))
|
|
except Exception as e:
|
|
# print("checkout error", e)
|
|
rate = 80
|
|
amtINR = round(float(amount * rate), 2)
|
|
if request.POST.get("country") == "IN":
|
|
# if False:
|
|
client = razorpay.Client(auth=(keyID, keySecret))
|
|
payment_intent = client.order.create(
|
|
{
|
|
"amount": int(amtINR * 100),
|
|
"currency": "INR",
|
|
"payment": {
|
|
"capture": "automatic",
|
|
"capture_options": {"refund_speed": "normal"},
|
|
},
|
|
}
|
|
)
|
|
pid = payment_intent["id"]
|
|
context = {
|
|
"pk": keyID,
|
|
"giftId": listG,
|
|
"amount": amount,
|
|
"amtINR": amtINR,
|
|
"pid": pid,
|
|
"payment_intent": payment_intent,
|
|
}
|
|
request.session["giftamtINR_card_razorpay"] = amtINR
|
|
return render(request, "payments/checkout_razorpay.html", context)
|
|
else:
|
|
# print("htest1")
|
|
customer = stripe.Customer.create(
|
|
email=request.user.email,
|
|
)
|
|
payment_intent = stripe.PaymentIntent.create(
|
|
amount=int(amtINR * 100), currency="INR", automatic_payment_methods={'enabled': True}, customer=customer.id
|
|
)
|
|
pid = payment_intent.id
|
|
request.session["pid"] = pid
|
|
request.session["ptype"] = "gift"
|
|
request.session["giftId"] = listG
|
|
context = {
|
|
"pk": STRIPE_PUB_KEY,
|
|
"giftId": listG,
|
|
"amount": amount,
|
|
"amtINR": amtINR,
|
|
"pid": pid,
|
|
"secret_key": payment_intent.client_secret,
|
|
"STRIPE_PUBLISHABLE_KEY": stripe.api_key,
|
|
}
|
|
return render(request, "payments/checkout.html", context)
|
|
return redirect("/members-home")
|
|
|
|
|
|
@login_required(login_url='/')
|
|
def pcard(request):
|
|
# print("CARDCHECKINGG1")
|
|
if request.method == 'POST':
|
|
# print("CARDCHECKINGG2")
|
|
payment_intent_id = request.POST["payment_intent_id"]
|
|
payment_method_id = request.POST["payment_method_id"]
|
|
sub_plan = request.POST["subPlan"]
|
|
pType = request.POST["type"]
|
|
giftId = request.POST["giftId"]
|
|
if giftId == "":
|
|
giftId = None
|
|
else:
|
|
giftId = giftId
|
|
|
|
customer = stripe.Customer.create(
|
|
email=request.user.email,
|
|
payment_method=payment_method_id,
|
|
invoice_settings={"default_payment_method": payment_method_id},
|
|
)
|
|
# subscription=stripe.Subscription.create(
|
|
# customer = customer.id,
|
|
# items = [
|
|
# {
|
|
# 'plan' : plan_id
|
|
# }
|
|
# ]
|
|
# )
|
|
|
|
stripe.PaymentIntent.modify(
|
|
payment_intent_id, payment_method=payment_method_id, customer=customer.id
|
|
)
|
|
ret = stripe.PaymentIntent.confirm(payment_intent_id)
|
|
pi = stripe.PaymentIntent.retrieve(payment_intent_id)
|
|
# ret = stripe.Subscription.confirm(
|
|
# sub.id
|
|
# )
|
|
|
|
if ret.status == "requires_action":
|
|
context = {
|
|
"pk": STRIPE_PUB_KEY,
|
|
"payment_intent_secret": pi.client_secret,
|
|
"id": pi.id,
|
|
"sid": "sid",
|
|
"pType": pType,
|
|
"giftId": giftId,
|
|
}
|
|
return render(request, "payments/3dsec.html", context)
|
|
return render(request, "payments/paymentdone.html")
|
|
|
|
|
|
def getip(request):
|
|
adr = request.META.get('HTTP_X_FORWARDED_FOR')
|
|
if adr:
|
|
ip = adr.split(',')[-1].strip()
|
|
else:
|
|
ip = request.META.get('REMOTE_ADDR')
|
|
return ip
|
|
|
|
|
|
@login_required(login_url='/')
|
|
def card_razorpay(request):
|
|
keyID = request.session["keyID"]
|
|
keySecret = request.session["keySecret"]
|
|
# print("request.POST", request.POST)
|
|
razorpay_order_id = request.POST.get("razorpay_order_id")
|
|
razorpay_payment_id = request.POST["razorpay_payment_id"]
|
|
razorpay_signature = request.POST["razorpay_signature"]
|
|
|
|
# print("---------------------------------------")
|
|
# print("---------------------------------------")
|
|
# print('razorpay_order_id--> ',razorpay_order_id)
|
|
# print('razorpay_payment_id--> ',razorpay_payment_id)
|
|
# print('razorpay_signature--> ',razorpay_signature)
|
|
sub_plan = request.POST["subPlan"]
|
|
pType = request.POST["type"]
|
|
giftId = request.POST["giftId"]
|
|
client = razorpay.Client(auth=(keyID, keySecret))
|
|
params_dict = {
|
|
"razorpay_order_id": razorpay_order_id,
|
|
"razorpay_payment_id": razorpay_payment_id,
|
|
"razorpay_signature": razorpay_signature,
|
|
}
|
|
if giftId:
|
|
|
|
giftId = giftId[:-3]
|
|
gid = giftId.split("@#$")
|
|
try:
|
|
|
|
client.utility.verify_payment_signature(params_dict)
|
|
# print("giftId->", gid)
|
|
# print(4 * "######thecountis->", len(gid))
|
|
|
|
# ------Adding details to PaymentData--------
|
|
paydetail = client.payment.fetch(razorpay_payment_id)
|
|
user_id = request.user
|
|
payment_id = razorpay_payment_id
|
|
services_used = 'Gift Subscription'
|
|
# script_info =
|
|
total_amount = request.session["giftamtINR_card_razorpay"]
|
|
discount = 0
|
|
amount_charged = request.session["giftamtINR_card_razorpay"]
|
|
# to convert from paise to rupees
|
|
gateway_fee = paydetail['fee'] / 100
|
|
currency = paydetail['currency']
|
|
pay_method = paydetail['method']
|
|
payment_status = 'Success'
|
|
payment_gateway = 'RazorPay'
|
|
PaymentData.objects.create(
|
|
user_id=user_id,
|
|
payment_id=payment_id,
|
|
services_used=services_used,
|
|
amount_charged=amount_charged,
|
|
total_amount=total_amount,
|
|
discount=discount,
|
|
currency=currency,
|
|
gateway_fee=gateway_fee,
|
|
pay_method=pay_method,
|
|
payment_status=payment_status,
|
|
payment_gateway=payment_gateway,
|
|
)
|
|
|
|
for i in list(gid):
|
|
x = gift.objects.get(id=int(i))
|
|
x.transactionID = razorpay_payment_id
|
|
x.chargeID = razorpay_order_id
|
|
x.receipt = razorpay_signature
|
|
x.payment_id = razorpay_payment_id
|
|
x.order_id = razorpay_order_id
|
|
x.is_paid = "yes"
|
|
x.save()
|
|
if x.PhoneNumber:
|
|
try:
|
|
client = Client(account_sid, auth_token)
|
|
message = client.messages.create(
|
|
body="Hi "
|
|
+ str(x.name)
|
|
+ ",\n "
|
|
+ str(request.user.email).capitalize()
|
|
+ " has gifted you an MNF one month Subscription.\n"
|
|
+ str(request.user.email).capitalize()
|
|
+ " wants you to join MNF and enjoy our film making services.\nPlease apply this coupon code to activate your subscription.\n"
|
|
+ x.token
|
|
+ "\n Happy Filming \n MyNextFilm",
|
|
from_=settings.TWILIO_PHONE_NUMBER,
|
|
to=x.PhoneNumber,
|
|
)
|
|
except:
|
|
pass
|
|
subject1 = "Someone is generous to you"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to1 = x.email
|
|
context1 = {
|
|
"username": x.name,
|
|
"sender": request.user.username,
|
|
"token": x.token,
|
|
}
|
|
sendmail(to_email = [to1],email_code="GT14",key_value=context1)
|
|
|
|
##### to sender ###
|
|
subject2 = (
|
|
"Thank you for gifting MyNextFilm subscription to " + str(x.name) + ".")
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to2 = request.user.email
|
|
|
|
context2 = {
|
|
"username": x.name,
|
|
"User": request.user.username,
|
|
"token": x.token,
|
|
}
|
|
# sendmail(to_email=["himanshub166@gmail.com"],email_code = "IM102")
|
|
print("###################################222222222222222222222222###########################################")
|
|
sendmail(to_email=[to2],email_code="GT1",key_value=context2)
|
|
# mnfnsendemail(
|
|
# to2, subject2, "payment/templates/payments/MR15.html", context2, from_email)
|
|
return render(request, "payments/giftsuccess.html", {})
|
|
except:
|
|
subject = "Something really went wrong"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"Name": request.user.email,
|
|
"service_name": "Gift Purchase",
|
|
}
|
|
sendmail(to_email=[request.user.email], email_code="PM4")
|
|
return render(request, "payments/failed.html")
|
|
else:
|
|
# try:
|
|
# shehzeen
|
|
request.session['stage'] = "2"
|
|
p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
p.stage = request.session['stage']
|
|
p.save()
|
|
# shehzeen
|
|
# client.utility.verify_payment_signature() is likely being used to verify the payment signature in the Razorpay API.
|
|
client.utility.verify_payment_signature(params_dict)
|
|
# print('signature:::', client.utility.verify_payment_signature(params_dict))
|
|
# print('param dict:::', params_dict)
|
|
# request.session['razorpay_signature']
|
|
|
|
updateprivilege(request)
|
|
|
|
x = privilegedUser1.objects.get(pk=request.session["PrivilegedID"])
|
|
# x = privilegedUser1.objects.find_one({"_id":"request.session['PrivilegedID']"})
|
|
x.chargeId = razorpay_order_id
|
|
x.transactionId = razorpay_payment_id
|
|
x.razorpaySign = razorpay_signature
|
|
x.save()
|
|
# shehzeen
|
|
request.session['stage'] = "5"
|
|
p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
p.stage = request.session['stage']
|
|
p.save()
|
|
# shehzeen
|
|
# ----------Adding details to PaymentData------
|
|
paydetail = client.payment.fetch(razorpay_payment_id)
|
|
# shehzeen
|
|
request.session['stage'] = "6"
|
|
p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
p.stage = request.session['stage']
|
|
p.save()
|
|
# shehzeen
|
|
if request.session["months_card_razorpay"] == 1:
|
|
total_amount = round(
|
|
(settings.MONTHLY_MEMBER * request.session["rate"]), 2)
|
|
services_used = "Monthly Subscription"
|
|
|
|
# subject = "ONLY A FEW IN THE WORLD ARE PRIVILEGED"
|
|
# from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
|
|
# manoj code for poster
|
|
context_2 = {
|
|
"Date": x.dateSubscribed,
|
|
"Name": x.user.email,
|
|
"member_type": x.memberType,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR2.html", context_2, from_email)
|
|
sendmail(to_email=[to],email_code = "GT7",key_value=context_2)
|
|
|
|
elif request.session["months_card_razorpay"] == 12:
|
|
total_amount = round(
|
|
(settings.YEARLY_MEMBER * request.session["rate"]), 2)
|
|
services_used = "Yearly Subscription"
|
|
subject = "THE BONDING IS NOW CLOSER"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"Date": x.dateSubscribed,
|
|
"Name": x.user.email,
|
|
"member_type": x.memberType,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR3.html", context_2, from_email)
|
|
sendmail(to_email=[to],email_code = "GT2",key_value=context_2)
|
|
else:
|
|
total_amount = round(
|
|
(settings.LIFE_MEMBER * request.session["rate"]), 2)
|
|
services_used = "Life Member Subscription"
|
|
# print("testp2")
|
|
|
|
'''
|
|
#manoj
|
|
#Add rm details to life member database
|
|
x = LifeMemberForm()
|
|
x.email = request.user
|
|
x.save()
|
|
|
|
Add lifemember details to rm database
|
|
'''
|
|
c = RMDatabase.objects.filter(is_accepted=True)
|
|
if len(c) > 1:
|
|
mindistance = []
|
|
for j in c:
|
|
# rm latitude and longitude
|
|
|
|
latitude1 = j.latitude
|
|
longitude1 = j.longitude
|
|
|
|
ip = getip(request)
|
|
# lifemember latitude and longitude
|
|
latitude2, longitude2 = get_vistor_latlon(ip)
|
|
cust_loc = (latitude1, longitude1)
|
|
club_loc = (latitude2, longitude2)
|
|
distance = geodesic(cust_loc, club_loc).km
|
|
mindistance.append([distance, j])
|
|
|
|
mindistance = sorted(mindistance, key=lambda x: x[0])
|
|
rmuser = mindistance[0][1]
|
|
name = rmuser.firstName + " " + rmuser.lastName
|
|
whatsapp = rmuser.contact
|
|
Email = rmuser.email
|
|
rmid = rmuser.id
|
|
elif len(c) == 1:
|
|
name = c[0].firstName + " " + c[0].lastName
|
|
whatsapp = c[0].contact
|
|
Email = c[0].email
|
|
rmuser = c[0]
|
|
rmid = rmuser.id
|
|
x = privilegedUser1.objects.get(
|
|
pk=request.session["PrivilegedID"])
|
|
# x.rmuser = rmuser.id
|
|
x.save()
|
|
# manoj mail
|
|
# to lifemember
|
|
subject = "Friendships are for lifetime."
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"UserName": x.user.email,
|
|
# "RMName": name,
|
|
"RMEmail": x.user.email,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR4.html", context_2, from_email)
|
|
sendmail(to_email=[to],email_code="GT3",key_value=context_2)
|
|
|
|
# to rm
|
|
subject = "You have a new lifetime friend."
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = x.user.email
|
|
context_2 = {
|
|
"RMName": x.user.email,
|
|
"lifememberName": list(request.user.email.split('@'))[0],
|
|
"lifememberEmail": request.user.email,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR5.html", context_2, from_email)
|
|
sendmail(to_email=[to],email_code = "GT4",key_value=context_2)
|
|
|
|
user_id = request.user
|
|
payment_id = razorpay_payment_id
|
|
# script_info =
|
|
amount_charged = request.session["amtINR_card_razorpay"]
|
|
discount = round((total_amount - amount_charged), 2)
|
|
# to convert from paise to rupees
|
|
gateway_fee = paydetail['fee'] / 100
|
|
currency = paydetail['currency']
|
|
pay_method = paydetail['method']
|
|
payment_status = 'Success'
|
|
payment_gateway = 'RazorPay'
|
|
|
|
# print('shehzeen 857', type(total_amount), total_amount)
|
|
# shehzeen
|
|
request.session['stage'] = "Final Stage"
|
|
p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
p.stage = request.session['stage']
|
|
p.payment_id = payment_id
|
|
p.services_used = services_used
|
|
p.discount = discount
|
|
p.total_amount = total_amount
|
|
p.amount_charged = amount_charged
|
|
p.gateway_fee = gateway_fee
|
|
p.currency = currency
|
|
p.pay_method = pay_method
|
|
p.payment_status = payment_status
|
|
p.payment_gateway = payment_gateway
|
|
# p.save()
|
|
#
|
|
# shehzeen
|
|
|
|
# PaymentData.objects.create(
|
|
# user_id=user_id,
|
|
# payment_id=payment_id,
|
|
# services_used=services_used,
|
|
# discount=discount,
|
|
# total_amount=total_amount,
|
|
# amount_charged=amount_charged,
|
|
# gateway_fee=gateway_fee,
|
|
# currency=currency,
|
|
# pay_method=pay_method,
|
|
# payment_status=payment_status,
|
|
# payment_gateway=payment_gateway,
|
|
# )
|
|
# manoj - code to update data on blockchain
|
|
data = privilegedUser1.objects.get(
|
|
pk=request.session["PrivilegedID"])
|
|
|
|
# manoj - send a confirmation mail to user who referred his/her friend to join mnf when his/her friend takes membership
|
|
x = refer.objects.all()
|
|
for i in x:
|
|
if i.refer_email1 == request.user.email:
|
|
subject = "Your dividend is on the way"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = i.refer_user.email
|
|
context_2 = {
|
|
"Name": i.refer_user.email,
|
|
"referredpeople": i.refer_email1,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR22.html", context_2, from_email)
|
|
sendmail(to_email = [to],email_code="GT5",key_value=context_2)
|
|
|
|
# print('YOU plan is::::', request.session["months_card_razorpay"])
|
|
x = privilegedUser1.objects.get(user=request.user, is_active='yes')
|
|
expiryDate = x.dateSubscribed + relativedelta(months=x.months)
|
|
return render(
|
|
request,
|
|
"payments/success.html",
|
|
{"pId": razorpay_payment_id, "rSign": "hello",
|
|
'expiry': expiryDate, 'isSubscription': True},
|
|
)
|
|
|
|
# except (razorpay.errors.SignatureVerificationError, Exception) as E:
|
|
# with open("/home/user/mnf/project/MNF/subtitling3/error_check.txt","a") as f:
|
|
# f.write('line 955 -->'+"\n")
|
|
# print("----manoj786", E)
|
|
# subject = "Something really went wrong"
|
|
# from_email = settings.EMAIL_HOST_USER
|
|
# to = request.user.email
|
|
# context_2 = {
|
|
# "Name": request.user.email,
|
|
# "service_name": "Membership",
|
|
# }
|
|
|
|
# paydetail = client.payment.fetch(razorpay_payment_id)
|
|
# if request.session["months_card_razorpay"] == 1:
|
|
# total_amount = round(
|
|
# (settings.MONTHLY_MEMBER * request.session["rate"]), 2)
|
|
# services_used = "Monthly Subscription"
|
|
# elif request.session["months_card_razorpay"] == 12:
|
|
# total_amount = round(
|
|
# (settings.YEARLY_MEMBER * request.session["rate"]), 2)
|
|
# services_used = "Yearly Subscription"
|
|
# else:
|
|
# total_amount = round(
|
|
# (settings.LIFE_MEMBER * request.session["rate"]), 2)
|
|
# services_used = "Life Member Subscription"
|
|
|
|
# user_id = request.user
|
|
# payment_id = razorpay_payment_id
|
|
# # script_info =
|
|
# amount_charged = request.session["amtINR_card_razorpay"]
|
|
# discount = round((total_amount - amount_charged), 2)
|
|
# # to convert from paise to rupees
|
|
# gateway_fee = paydetail['fee'] / 100
|
|
# currency = paydetail['currency']
|
|
# pay_method = paydetail['method']
|
|
# payment_status = 'Failed'
|
|
# payment_gateway = 'RazorPay'
|
|
|
|
# # obj = payment.objects.get(id = request.session["payment_id"])
|
|
# # shehzeen
|
|
# request.session['stage'] = 'Faild Stage'
|
|
# p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
# p.stage = request.session['stage']
|
|
# p.payment_id = payment_id
|
|
# p.services_used = services_used
|
|
# p.discount = discount
|
|
# p.total_amount = total_amount
|
|
# p.amount_charged = amount_charged
|
|
# p.gateway_fee = gateway_fee
|
|
# p.currency = currency
|
|
# p.pay_method = pay_method
|
|
# p.payment_status = payment_status
|
|
# p.payment_gateway = payment_gateway
|
|
# p.save()
|
|
# # shehzeen
|
|
# # PaymentData.objects.create(
|
|
# # user_id=user_id,
|
|
# # payment_id=payment_id,
|
|
# # services_used=services_used,
|
|
# # discount=discount,
|
|
# # total_amount=total_amount,
|
|
# # amount_charged=amount_charged,
|
|
# # gateway_fee=gateway_fee,
|
|
# # currency=currency,
|
|
# # pay_method=pay_method,
|
|
# # payment_status=payment_status,
|
|
# # payment_gateway=payment_gateway,
|
|
# # )
|
|
# # mnfnsendemail(to,subject,"payment/templates/payments/MR24.html",context_2,from_email)
|
|
# return render(request, "payments/failed.html")
|
|
|
|
|
|
@login_required(login_url='/')
|
|
@csrf_exempt
|
|
def paymentDone(request):
|
|
print('running')
|
|
payment_intent_id = request.session["pid"]
|
|
# subscription = request.POST["sid"]
|
|
pType = request.session["ptype"]
|
|
# print('ptype:::::', pType)
|
|
print('payment_intent_id ',payment_intent_id)
|
|
pi = stripe.PaymentIntent.retrieve(payment_intent_id)
|
|
|
|
print('payments details', pi)
|
|
if pType == "subscription":
|
|
if pi.status == "succeeded":
|
|
# print("htest3")
|
|
# stripe.Subscription.modify(
|
|
# subscription,
|
|
# metadata = {"status":'active'}
|
|
# )
|
|
updateprivilege(request)
|
|
|
|
x = privilegedUser1.objects.get(
|
|
pk=request.session["PrivilegedID"])
|
|
x.transactionId = pi.id
|
|
x.chargeId = pi.latest_charge
|
|
x.currency = pi.currency
|
|
x.status = pi.status
|
|
# x.receipt_url = pi.charges.data[0].get("receipt_url")
|
|
x.amount_captured = pi.amount
|
|
x.save()
|
|
|
|
# ------Email--
|
|
y = privilegedUser1.objects.get(
|
|
user=request.user, is_active="yes")
|
|
if y.months == 1:
|
|
subject = "ONLY A FEW IN THE WORLD ARE PRIVILEGED"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"Date": x.dateSubscribed,
|
|
"Name": x.user.email,
|
|
"member_type": x.memberType,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR2.html", context_2, from_email)
|
|
elif y.months == 12:
|
|
subject = "THE BONDING IS NOW CLOSER"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"Date": x.dateSubscribed,
|
|
"Name": x.user.email,
|
|
"member_type": x.memberType,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR3.html", context_2, from_email)
|
|
else:
|
|
c = RMDatabase.objects.filter(is_accepted=True)
|
|
if len(c) > 1:
|
|
mindistance = []
|
|
for j in c:
|
|
# rm latitude and longitude
|
|
|
|
latitude1 = j.latitude
|
|
longitude1 = j.longitude
|
|
|
|
ip = getip(request)
|
|
# lifemember latitude and longitude
|
|
latitude2, longitude2 = get_vistor_latlon(ip)
|
|
cust_loc = (latitude1, longitude1)
|
|
club_loc = (latitude2, longitude2)
|
|
distance = geodesic(cust_loc, club_loc).km
|
|
mindistance.append([distance, j])
|
|
|
|
mindistance = sorted(mindistance, key=lambda x: x[0])
|
|
rmuser = mindistance[0][1]
|
|
name = rmuser.firstName + " " + rmuser.lastName
|
|
whatsapp = rmuser.contact
|
|
Email = rmuser.email
|
|
rmid = rmuser.id
|
|
# print("-------manoj728")
|
|
# print("harsh55544")
|
|
# print(name)
|
|
# print(whatsapp)
|
|
# print(Email)
|
|
elif len(c) == 1:
|
|
name = c[0].firstName + " " + c[0].lastName
|
|
whatsapp = c[0].contact
|
|
Email = c[0].email
|
|
rmuser = c[0]
|
|
rmuser = c[0]
|
|
rmid = rmuser.id
|
|
x = privilegedUser1.objects.get(
|
|
pk=request.session["PrivilegedID"])
|
|
# x.rmuser = rmuser.id
|
|
x.save()
|
|
|
|
# manoj mail
|
|
# to lifemember
|
|
subject = "Friendships are for lifetime."
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"UserName": x.user.email,
|
|
# "RMName": name,
|
|
# "RMEmail": Email,
|
|
#"RMwhatsapp": whatsapp,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR4.html", context_2, from_email)
|
|
|
|
# to rm
|
|
subject = "You have a new lifetime friend."
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = request.user.email
|
|
context_2 = {
|
|
"RMName": request.user.username,
|
|
"lifememberName": list(request.user.email.split('@'))[0],
|
|
"lifememberEmail": request.user.email,
|
|
}
|
|
# mnfnsendemail(
|
|
# to, subject, "payment/templates/payments/MR5.html", context_2, from_email)
|
|
|
|
# -----------Adding Details to payment Details--------------------------
|
|
if request.session["months_stripe_paymentdone"] == 1:
|
|
total_amount = round(
|
|
(settings.MONTHLY_MEMBER * request.session["rate"]), 2)
|
|
services_used = "Monthly Subscription"
|
|
elif request.session["months_stripe_paymentdone"] == 12:
|
|
total_amount = round(
|
|
(settings.YEARLY_MEMBER * request.session["rate"]), 2)
|
|
services_used = "Yearly Subscription"
|
|
else:
|
|
total_amount = round(
|
|
(settings.LIFE_MEMBER * request.session["rate"]), 2)
|
|
services_used = "Life Member Subscription"
|
|
|
|
user_id = request.user
|
|
payment_id = pi["id"]
|
|
amount_charged = pi["amount"] / 100
|
|
discount = round(total_amount - amount_charged, 2)
|
|
gateway_fee = pi["application_fee_amount"]
|
|
currency = pi["currency"]
|
|
pay_method = "Card"
|
|
payment_status = "Success"
|
|
payment_gateway = "Stripe"
|
|
#PaymentData.objects.create(
|
|
# user_id=user_id,
|
|
# services_used=services_used,
|
|
# pay_method=pay_method,
|
|
#payment_id=payment_id,
|
|
# total_amount=total_amount,
|
|
# discount=discount,
|
|
# amount_charged=amount_charged,
|
|
# gateway_fee=gateway_fee,
|
|
# payment_gateway=payment_gateway,
|
|
# currency=currency,
|
|
# payment_status=payment_status,
|
|
#)
|
|
# manoj - code to update data on blockchain
|
|
data = privilegedUser1.objects.get(
|
|
pk=request.session["PrivilegedID"])
|
|
|
|
# manoj - send a confirmation mail to user who referred his/her friend to join mnf when his/her friend takes membership
|
|
xy = refer.objects.all()
|
|
for i in xy:
|
|
if i.refer_email1 == request.user.email:
|
|
subject = "Your dividend is on the way"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = i.refer_user.email
|
|
context_2 = {
|
|
"Name": i.refer_user.email,
|
|
"referredpeople": i.refer_email1,
|
|
}
|
|
mnfnsendemail(
|
|
to, subject, "payment/templates/payments/MR22.html", context_2, from_email)
|
|
|
|
request.session['paystatus'] = pi.status
|
|
# request.session['razorpay_signature'] = razorpay_signature
|
|
# request.session['razorpay_order_id'] = razorpay_order_id
|
|
request.session['paymentId'] = payment_id
|
|
request.session['amount'] = amount_charged
|
|
request.session['payment_gateway'] = payment_gateway
|
|
updatepaymentstatus(request)
|
|
return render(
|
|
request,
|
|
"payments/success.html",
|
|
{"pId": x.transactionId, "rSign": "hello"},
|
|
)
|
|
else:
|
|
request.session['paystatus'] = payment_status
|
|
# request.session['razorpay_signature'] = razorpay_signature
|
|
# request.session['razorpay_order_id'] = razorpay_order_id
|
|
request.session['paymentId'] = pi["id"]
|
|
request.session['amount'] = pi["amount"] / 100
|
|
request.session['payment_gateway'] = "Stripe"
|
|
updatepaymentstatus(request)
|
|
return render(request, "payments/failed.html")
|
|
elif pType == "gift":
|
|
# print("htest4")
|
|
giftId = request.session["giftId"]
|
|
giftId = giftId[:-3]
|
|
gid = giftId.split("@#$")
|
|
# print("giftIdforstripe->", gid)
|
|
if pi.status == "succeeded":
|
|
|
|
# -----------Adding Details to payment Details--------------------------
|
|
|
|
user_id = request.user
|
|
payment_id = pi["id"]
|
|
services_used = "Gift Subscription"
|
|
total_amount = pi["amount"] / 100
|
|
discount = 0
|
|
amount_charged = pi["amount"] / 100
|
|
gateway_fee = pi["application_fee_amount"]
|
|
currency = pi["currency"]
|
|
pay_method = "Card"
|
|
payment_status = "Success"
|
|
payment_gateway = "Stripe"
|
|
PaymentData.objects.create(
|
|
user_id=user_id,
|
|
services_used=services_used,
|
|
pay_method=pay_method,
|
|
payment_id=payment_id,
|
|
amount_charged=amount_charged,
|
|
discount=discount,
|
|
gateway_fee=gateway_fee,
|
|
payment_gateway=payment_gateway,
|
|
currency=currency,
|
|
payment_status=payment_status,
|
|
total_amount=total_amount,
|
|
)
|
|
for i in list(gid):
|
|
x = gift.objects.get(id=int(i))
|
|
x.transactionID = pi.charges.data[0].get(
|
|
"balance_transaction")
|
|
x.chargeID = pi.charges.data[0].get("id")
|
|
x.receipt = pi.charges.data[0].get("receipt_url")
|
|
x.is_paid = "yes"
|
|
x.save()
|
|
|
|
### to reciever ###
|
|
subject1 = "Someone is generous to you"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to1 = x.email
|
|
context1 = {
|
|
"username": x.name,
|
|
"first_name": request.user.username,
|
|
"token": x.token,
|
|
}
|
|
mnfnsendemail(
|
|
to1, subject1, "payment/templates/payments/MR16.html", context1, from_email)
|
|
|
|
##### to sender ###
|
|
subject2 = (
|
|
"Thank you for gifting MyNextFilm subscription to " + str(x.name) + ".")
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to2 = request.user.email
|
|
|
|
context2 = {
|
|
"username": x.name,
|
|
"first_name": request.user.username,
|
|
"token": x.token,
|
|
}
|
|
mnfnsendemail(
|
|
to2, subject2, "payment/templates/payments/MR15.html", context2, from_email)
|
|
return render(request, "payments/giftsuccess.html", {})
|
|
else:
|
|
return render(request, "payments/failed.html")
|
|
# except:
|
|
# return render(request, "payments/failed.html")
|
|
|
|
|
|
def pricingCalculator(request):
|
|
context = {}
|
|
# conversion
|
|
context["conversion_per_page"] = settings.CONVERSION_PER_PAGE
|
|
context["lpp_per_page"] = settings.LPP_PER_PAGE
|
|
|
|
# narration
|
|
context["ONE_PAGER"] = settings.ONE_PAGER
|
|
context["LINE_BY_LINE"] = settings.LINE_BY_LINE
|
|
context["ELEVATOR_PITCH"] = settings.ELEVATOR_PITCH
|
|
context["SCREENPLAY_ANALYSIS1"] = settings.SCREENPLAY_ANALYSIS1
|
|
context["SCREENPLAY_ANALYSIS2"] = settings.SCREENPLAY_ANALYSIS2
|
|
context["SCREENPLAY_ANALYSIS3"] = settings.SCREENPLAY_ANALYSIS3
|
|
context["SCREENPLAY_ANALYSIS4"] = settings.SCREENPLAY_ANALYSIS4
|
|
context["CHARACTER_INTRODUCTION"] = settings.CHARACTER_INTRODUCTION
|
|
context["CHARACTERWISE_NARATION"] = settings.CHARACTERWISE_NARATION
|
|
|
|
# project center
|
|
context["SCHEDULING"] = settings.SCHEDULING
|
|
context["BUDGETING"] = settings.BUDGETING
|
|
|
|
amount = 0
|
|
if request.method == "POST":
|
|
service = request.POST.get("choose_service")
|
|
if service == "Conversion":
|
|
conservice = request.POST.get("conversion_sub")
|
|
numOfPage = int(request.POST.get("page"))
|
|
if conservice == "without-llp":
|
|
amount = context["conversion_per_page"]*numOfPage
|
|
else:
|
|
amount = (context["conversion_per_page"] +
|
|
context["lpp_per_page"])*numOfPage
|
|
context["serviceurl"] = "conversion"
|
|
context["serviceurl_name"] = "Convert your script"
|
|
elif service == "Narration":
|
|
total = 0
|
|
numOfPage = int(request.POST.get("page"))
|
|
narrateservice = request.POST.getlist("narration_sub")
|
|
for i in narrateservice:
|
|
if i == "SCREENPLAY_ANALYSIS":
|
|
if numOfPage <= 15:
|
|
total += context[i+"1"]
|
|
elif numOfPage <= 30:
|
|
total += context[i+"2"]
|
|
elif numOfPage <= 100:
|
|
total += context[i+"3"]
|
|
else:
|
|
total += context[i+"4"]
|
|
else:
|
|
total = total + context[i]
|
|
amount = total*numOfPage
|
|
context["serviceurl"] = "Pitchnarrate1"
|
|
context["serviceurl_name"] = "Narrate your script"
|
|
elif service == "ProjectCenter":
|
|
project_center_submenu = request.POST.get("project_center_name")
|
|
# print('NAME:::::', project_center_submenu)
|
|
num = int(request.POST.get("page"))
|
|
# print('NUMBER:::::::', num)
|
|
if project_center_submenu == "Scheduling":
|
|
# print('we are in scheduling')
|
|
if num < 20:
|
|
amount = 10
|
|
else:
|
|
amount = num * context["SCHEDULING"]
|
|
context["checkurl"] = "true"
|
|
context["serviceurl"] = "/projectcenter"
|
|
context["serviceurl_name"] = "Schedule your film"
|
|
|
|
elif project_center_submenu == "Budgeting":
|
|
# print('we are in budgeting')
|
|
if num < 10:
|
|
amount = 10
|
|
else:
|
|
amount = num * context["BUDGETING"]
|
|
context["checkurl"] = "true"
|
|
context["serviceurl"] = "/projectcenter"
|
|
context["serviceurl_name"] = "Budget your film"
|
|
# print('leaving budgeting')
|
|
elif service == "Ideamall":
|
|
ideamallSubmenu = request.POST.get("idea_sub")
|
|
if ideamallSubmenu == "auction":
|
|
project_status = request.POST.get("showcase_status")
|
|
start_date = request.POST.get("auctionstartdate")
|
|
end_date = request.POST.get("auctionstopdate")
|
|
price_currency = request.POST.get("reservepricecurrency")
|
|
price_amount = int(request.POST.get("reservepriceamount"))
|
|
file_size = int(request.POST.get("filesize"))
|
|
amount = ideamall_script_payment(
|
|
price_currency, project_status, price_amount, start_date, end_date, int(file_size))
|
|
context["serviceurl"] = "showcase"
|
|
context["serviceurl_name"] = "Setup your auction"
|
|
|
|
elif ideamallSubmenu == "script":
|
|
project_status = request.POST.get("commisioning_status")
|
|
price_currency = request.POST.get("payforassignmentcurrent")
|
|
price_amount = request.POST.get("payforassignmentamount")
|
|
project_duration = int(request.POST.get("duration1"))
|
|
publishmyproject = request.POST.get(
|
|
"publishmyproject", "False")
|
|
script_purchased = request.POST.get("howmanyscriptpurchased")
|
|
# print("manoj1180erer")
|
|
# print(price_currency, project_duration,
|
|
# project_status, price_amount, publishmyproject)
|
|
if publishmyproject == "on":
|
|
publishmyproject = "True"
|
|
amount = commissionpayment(
|
|
price_currency, project_duration, project_status, price_amount, publishmyproject)
|
|
context["serviceurl"] = "commssioningpage"
|
|
context["serviceurl_name"] = "Commission your script"
|
|
|
|
# discount part by manoj
|
|
total_discount_in_percentage = 0
|
|
discount = request.POST.getlist("discount")
|
|
additional_discount = request.POST.getlist("extra-discount")
|
|
message = []
|
|
if not request.user.is_anonymous:
|
|
for disc in discount:
|
|
if disc == "staff":
|
|
if request.user.is_staff:
|
|
if total_discount_in_percentage + 50 > 100:
|
|
total_discount_in_percentage = 100
|
|
else:
|
|
total_discount_in_percentage += 50
|
|
else:
|
|
message.append("You are not a staff member")
|
|
|
|
elif disc == "partner":
|
|
if MNFLPPDDatabase.objects.filter(user_id=request.user).exists():
|
|
if total_discount_in_percentage + 5 > 100:
|
|
total_discount_in_percentage = 100
|
|
else:
|
|
total_discount_in_percentage += 5
|
|
else:
|
|
message.append("Your are not a Language Pair Partner")
|
|
|
|
elif disc == "student":
|
|
message.append("You are not a Student")
|
|
|
|
elif disc == "messiah":
|
|
if RMDatabase.objects.filter(user_id=request.user).exists():
|
|
if total_discount_in_percentage + 5 > 100:
|
|
total_discount_in_percentage = 100
|
|
else:
|
|
total_discount_in_percentage += 5
|
|
else:
|
|
message.append("Your are not a MNF Messiah")
|
|
|
|
for ad_disc in additional_discount:
|
|
if ad_disc == "life":
|
|
if privilegedUser1.objects.filter(user=request.user, is_active="yes").exists():
|
|
y = privilegedUser1.objects.get(
|
|
user=request.user, is_active="yes")
|
|
if y.memberType == "Life Member":
|
|
if total_discount_in_percentage + 20 > 100:
|
|
total_discount_in_percentage = 100
|
|
else:
|
|
total_discount_in_percentage += 20
|
|
else:
|
|
message.append("Your are not a life member")
|
|
|
|
elif ad_disc == "annual":
|
|
if privilegedUser1.objects.filter(user=request.user, is_active="yes").exists():
|
|
y = privilegedUser1.objects.get(
|
|
user=request.user, is_active="yes")
|
|
if y.memberType == "yearly":
|
|
if total_discount_in_percentage + 10 > 100:
|
|
total_discount_in_percentage = 100
|
|
else:
|
|
total_discount_in_percentage += 10
|
|
else:
|
|
message.append("Your are not a yearly member")
|
|
else:
|
|
if discount or additional_discount:
|
|
message.append(
|
|
"Please login to avail discount on final amount.")
|
|
context["message"] = message
|
|
|
|
with open(f"{basepath}/MNF/json_keys/conversionRates.json") as c:
|
|
curr = json.load(c)
|
|
try:
|
|
rate = curr["rates"]["INR"]
|
|
except Exception as e:
|
|
rate = 80
|
|
|
|
amtINR = round(float(amount * rate), 2)
|
|
|
|
# shehzeen
|
|
if total_discount_in_percentage > 0: # chechking whether user has clicked for discount or not
|
|
context['isDiscount'] = True
|
|
|
|
total_discount_amount = round(
|
|
(amount/100) * total_discount_in_percentage, 2)
|
|
total_discount_amount_INR = round(
|
|
float(total_discount_amount * rate), 2)
|
|
final_amount = round(amount - total_discount_amount, 2)
|
|
final_amount_INR = round(float(final_amount * rate), 2)
|
|
# shehzeen
|
|
|
|
context["amount"] = amount # amount in different currencies
|
|
context["amtINR"] = amtINR # amount in indian rupee
|
|
|
|
# shehzeen
|
|
context["totalDiscount"] = total_discount_amount
|
|
context["totalDiscountINR"] = total_discount_amount_INR
|
|
context["finalAmount"] = final_amount
|
|
context["finalAmountINR"] = final_amount_INR
|
|
|
|
# shehzeen
|
|
# print('Shehzeen1292')
|
|
# print(total_discount_amount, total_discount_amount_INR,
|
|
# final_amount, final_amount_INR)
|
|
|
|
context["service"] = service
|
|
# print('&&&&&&&&&&&&&&&&&&&&&&', context)
|
|
# print('shehzeen1298')
|
|
return render(request, "payments/pricingCalculator.html", context)
|
|
|
|
|
|
def email_test(request):
|
|
subject = "You Got a MyNextFilm gift Subscription"
|
|
from_email = "mnfrendezvous@gmail.com"
|
|
to = "followasad@gmail.com"
|
|
context = {"username": "Asad", "first_name": "Param", "token": "53241"}
|
|
|
|
html_content = render_to_string(
|
|
"payments/email_template1.html", context
|
|
) # render with dynamic value
|
|
# Strip the html tag. So people can see the pure text at least.
|
|
text_content = strip_tags(html_content)
|
|
|
|
# create the email, and attach the HTML version as well.
|
|
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
|
|
msg.attach_alternative(html_content, "text/html")
|
|
msg.send()
|
|
# print("sent successfully")
|
|
|
|
|
|
def updatepaymentstatus(request):
|
|
y = privilegedUser()
|
|
y.user = request.user
|
|
y.paymentId = request.session['paymentId']
|
|
y.amount = 100
|
|
y.orderId = request.session['razorpay_order_id'] if 'razorpay_order_id' in request.session else ""
|
|
y.razorpaySign = request.session['razorpay_signature'] if 'razorpay_signature' in request.session else ""
|
|
y.save()
|
|
|
|
'''
|
|
save privilegedUser()
|
|
y = privilegedUser()
|
|
y.user = request.user
|
|
y.paymentId = request.session['paymentId']
|
|
y.amount = request.session['amount']
|
|
y.orderId = request.session['orderId']
|
|
y.razorpaySign = request.session['razorpaySign']
|
|
y.memberType= request.session['memberType']
|
|
y.save()
|
|
'''
|
|
pass
|
|
return
|
|
|
|
|
|
def updateprivilege(request):
|
|
# this function update privilege user's information or create new privillage user into database and returns nothing.
|
|
# Payment success object is_active='no'
|
|
# shehzeen
|
|
print('line 1553 --> ',request.session.items())
|
|
request.session['stage'] = "3"
|
|
p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
p.stage = request.session['stage']
|
|
p.save()
|
|
# shehzeen
|
|
context = {}
|
|
context["life_member_year"] = settings.LIFE_MEMBER_YEAR
|
|
plan = request.session["plan_purchased"]
|
|
cd = centralDatabase.objects.get(user_id=request.user)
|
|
cd.priviledgedMember = True
|
|
cd.save()
|
|
# make a dictionary to indicate plans name and there number of days repectively
|
|
dic = {
|
|
"normal": 1,
|
|
"yearly": 12,
|
|
"Life Member": 120
|
|
}
|
|
'''
|
|
There are few thing we need to keep track of
|
|
1. check whether the user is already registered or not and is_active = 'yes' in our database
|
|
1.1: if user exists and is_active = 'yes' then set the member type and months
|
|
1.2 : if user already has a plan, make sure that current plan should not be less than previous plan. eg(if user is already yearly member of mnf and he wants to buy one month plan also than user member type will remain same as previous one which is yearly but onlt 1 moth will be added to his 12 months pla , 12+1 = 13 moths , that mean now user has 13 moths of subscription plan, similarly for life memeber also.)
|
|
1.3 : after making changes update these changes into database.
|
|
2. if user doest not exists or not active memeber
|
|
2.1 : register user in dtabase with his plan, membertype and number of months
|
|
'''
|
|
|
|
if privilegedUser1.objects.filter(user=request.user, is_active="yes").exists():
|
|
x = privilegedUser1.objects.get(user=request.user, is_active="yes")
|
|
if plan == "Monthly plan":
|
|
if dic[x.memberType] < 1:
|
|
x.memberType = "normal"
|
|
x.months = 1 + x.months
|
|
|
|
sendmail([request.user.email], "PM2")
|
|
|
|
if plan == "yearly":
|
|
if dic[x.memberType] < 12:
|
|
x.memberType = "yearly"
|
|
x.months = 12 + x.months
|
|
|
|
sendmail([request.user.email], "PM3")
|
|
|
|
if plan == "Monthly special":
|
|
if dic[x.memberType] < 1:
|
|
x.memberType = "normal"
|
|
x.months = 1 + x.months
|
|
|
|
if plan == "yearly special":
|
|
if dic[x.memberType] < 12:
|
|
x.memberType = "yearly"
|
|
x.months = 12 + x.months
|
|
if plan == "Life":
|
|
x.memberType = "Life Member"
|
|
x.months = context["life_member_year"] * 12 + x.months
|
|
sendmail([request.user.email], "PM1")
|
|
request.session["PrivilegedID"] = json.loads(json_util.dumps(x.id))
|
|
x.save()
|
|
|
|
else:
|
|
x = privilegedUser1()
|
|
|
|
if privilegedUser1.objects.exists():
|
|
lasto = privilegedUser1.objects.last()
|
|
x.id = int(lasto.id) + 1
|
|
else:
|
|
x.id = 1
|
|
x.user = request.user
|
|
x.is_active = "yes"
|
|
if plan == "Monthly plan":
|
|
x.memberType = "normal"
|
|
x.months = 1
|
|
sendmail([request.user.email], "PM2")
|
|
if plan == "yearly":
|
|
x.memberType = "yearly"
|
|
x.months = 12
|
|
sendmail([request.user.email], "PM3")
|
|
if plan == "Monthly special":
|
|
x.memberType = "normal"
|
|
x.months = 1
|
|
if plan == "yearly special":
|
|
x.memberType = "yearly"
|
|
x.months = 12
|
|
if plan == "Life":
|
|
x.memberType = "Life Member"
|
|
x.months = context["life_member_year"] * 12
|
|
sendmail([request.user.email], "PM1")
|
|
request.session["PrivilegedID"] = json.loads(json_util.dumps(x.id))
|
|
x.save()
|
|
# shehzeen
|
|
request.session['stage'] = "4"
|
|
p = PaymentData.objects.get(uuid=request.session['payment_uuid'])
|
|
p.stage = request.session['stage']
|
|
p.save()
|
|
# shehzeen
|
|
return
|
|
|
|
|
|
def unsubscribe(request):
|
|
# keyID= "rzp_live_ZCKOJ4oKnyYgjf"
|
|
# keySecret = "exix5pSVMUhpyOYeNAqoYuS5"
|
|
keyID = "rzp_test_6U9A7gZuno8Qz1"
|
|
keySecret = "SrhczTH4dmrxW8SrzeqOdBSP"
|
|
client = razorpay.Client(auth=(keyID, keySecret))
|
|
if request.method == "POST":
|
|
x = privilegedUser1.objects.get(user=request.user)
|
|
client.subscription.cancel(x.subId, {"cancel_at_cycle_end": "1"})
|
|
return render(request, "payments/cancelSuccess.html", {})
|
|
|
|
|
|
def referexists(request):
|
|
|
|
already = []
|
|
if request.method == "POST":
|
|
for i in [
|
|
request.POST.get("mytext1"),
|
|
request.POST.get("mytext2"),
|
|
request.POST.get("mytext3"),
|
|
request.POST.get("mytext4"),
|
|
request.POST.get("mytext5"), ]:
|
|
if i is not None and i != "undefined":
|
|
if User.objects.filter(email=i).exists():
|
|
# print("refer if condition", i)
|
|
already.append(i)
|
|
val = {"context": already}
|
|
|
|
return JsonResponse(val)
|
|
|
|
|
|
def Refer(request):
|
|
# from inside - after login
|
|
if request.user.is_authenticated:
|
|
|
|
if ReferUser.objects.filter(user=request.user).exists():
|
|
rId = ReferUser.objects.get(user=request.user)
|
|
# print("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&")
|
|
# print(rId)
|
|
else:
|
|
y = ReferUser()
|
|
rId = str(random.randint(111111, 999999))
|
|
print(rId)
|
|
y.user = request.user
|
|
# y.user = ""
|
|
y.referId = rId
|
|
y.save()
|
|
|
|
# else:
|
|
# rId = ReferUser.objects.get(user=request.user)
|
|
if request.method == "POST":
|
|
listofuser = []
|
|
exists = []
|
|
for i in [
|
|
request.POST.get("mytext1"),
|
|
request.POST.get("mytext2"),
|
|
request.POST.get("mytext3"),
|
|
request.POST.get("mytext4"),
|
|
request.POST.get("mytext5"), ]:
|
|
|
|
if refer.objects.filter(refer_email1=str(i)).exists():
|
|
exists.append(i)
|
|
if i is not None and i != "undefined" and i not in exists:
|
|
refer.objects.create(
|
|
refer_user=request.user, refer_email1=str(i))
|
|
listofuser.append(i)
|
|
subject3 = "Someone trusts you"
|
|
# from_email = settings.EMAIL_HOST_USER
|
|
to3 = i
|
|
if request.user.first_name and request.user.last_name:
|
|
sender = (
|
|
str(request.user.first_name)
|
|
+ " "
|
|
+ str(request.user.last_name)
|
|
)
|
|
else:
|
|
sender = request.user.email
|
|
context3 = {
|
|
"sender": sender,
|
|
"user": i.split("@")[0],
|
|
"referid": rId,
|
|
}
|
|
# mnfnsendemail(
|
|
# to3, subject3, "payment/templates/payments/MR19.html", context3, from_email)
|
|
sendmail(to_email=[to3],email_code = "GT8",key_value = context3)
|
|
else:
|
|
print('You are already exists', i)
|
|
|
|
# sending mail to refer sender
|
|
# print("sheehzeen1418op")
|
|
# print(listofuser)
|
|
context = {}
|
|
if listofuser:
|
|
# print("sheehzeen1420op")
|
|
subject3 = "You have a big heart !!"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to3 = request.user.email
|
|
context3 = {
|
|
"sender": request.user.username,
|
|
"listofuser": ",".join(listofuser)
|
|
}
|
|
if len(listofuser) > 1:
|
|
subject3 = "You are really marvellous"
|
|
# mnfnsendemail(
|
|
# to3, subject3, "payment/templates/payments/MR20.html", context3, from_email)
|
|
sendmail(to_email=[to3],email_code="GT9",key_value= context3)
|
|
else:
|
|
# mnfnsendemail(
|
|
# to3, subject3, "payment/templates/payments/MR18.html", context3, from_email)
|
|
sendmail(to_email=[to3],email_code="GT10",key_value= context3)
|
|
context["alreadyreferred"] = "True"
|
|
return JsonResponse(context)
|
|
|
|
else:
|
|
context["alreadyreferred"] = "False"
|
|
context["dataitems"] = exists
|
|
return JsonResponse(context)
|
|
else:
|
|
if request.method == "POST":
|
|
for i in [
|
|
request.POST.get("mytext1"),
|
|
request.POST.get("mytext2"),
|
|
request.POST.get("mytext3"),
|
|
request.POST.get("mytext4"),
|
|
request.POST.get("mytext5"),
|
|
]:
|
|
if i is not None and i != "undefined":
|
|
|
|
subject3 = "One of your friend has referred you to join MyNextFilm"
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to3 = i
|
|
context3 = {
|
|
"sender1": "A friend of yours",
|
|
"sender2": "Your friend",
|
|
"user1": i.split("@")[0],
|
|
"referid": rId,
|
|
}
|
|
# if y.user == "Anonmouys":
|
|
# context3['sender'] = "Anonmouys"
|
|
|
|
# html_content3 = render_to_string(
|
|
# "payments/referred_email.html", context3
|
|
# ) # render with dynamic value
|
|
# Strip the html tag. So people can see the pure text at least.
|
|
# text_content3 = strip_tags(html_content3)
|
|
|
|
# create the email, and attach the HTML version as well.
|
|
# msg3 = EmailMultiAlternatives(
|
|
# subject3, text_content3, from_email, [to3]
|
|
# )
|
|
# msg3.attach_alternative(html_content3, "text/html")
|
|
# msg3.send()
|
|
sendmail(to_email=[to3],email_code="GT11",key_value=context3)
|
|
|
|
|
|
return render(
|
|
request,
|
|
"mnfapp/landing.html",
|
|
{
|
|
"messageR": "thanks for refering your friends. You will get extra one month of our services for every 3 joinings from your referal link"
|
|
},
|
|
)
|
|
# return base(request)
|
|
# return base(request, message=True)
|
|
return render(request, "mnfapp/landing.html", {})
|
|
# return base(request)
|
|
|
|
|
|
def refer_landing_page(request):
|
|
return render(
|
|
request,
|
|
"mnfapp/landing.html",
|
|
{
|
|
"messageR": "thanks for refering your friends. You will get extra one month of our services for every 3 joinings from your referal link"
|
|
},
|
|
)
|
|
|
|
|
|
def verifyToken(request):
|
|
if request.method == "POST":
|
|
# Yameen Vinchu
|
|
# Remove whiteSpace from token
|
|
_token = request.POST["token"]
|
|
strip_token = _token.strip(' ')
|
|
print(strip_token, 'strip_token')
|
|
print('db',gift.objects.filter(token=strip_token))
|
|
|
|
if gift.objects.filter(token=strip_token).exists():
|
|
x = gift.objects.get(token=request.POST["token"])
|
|
print('working --> ',x)
|
|
if x.email == request.user.email and x.plan == "deactivated":
|
|
x.plan = "activated"
|
|
x.save()
|
|
if privilegedUser1.objects.filter(user=request.user).exists():
|
|
y = privilegedUser1.objects.get(user=request.user)
|
|
y.months += 1
|
|
y.is_active = "yes"
|
|
y.save()
|
|
else:
|
|
y = privilegedUser1()
|
|
y.id = int(privilegedUser1.objects.all().last().id)+1
|
|
y.months = 1
|
|
y.user = request.user
|
|
y.is_active = "yes"
|
|
y.save()
|
|
|
|
cd = centralDatabase.objects.get(user_id=request.user)
|
|
cd.priviledgedMember = True
|
|
cd.save()
|
|
|
|
subject = "A pledge is redeemed"
|
|
sender_email = x.user.email
|
|
context = {
|
|
"Name": sender_email,
|
|
"claimName": x.name
|
|
}
|
|
# mnfnsendemail(sender_email, subject,
|
|
# "payment/templates/payments/MR17.html", context)
|
|
sendmail(to_email=[sender_email],email_code="GT12",key_value=context)
|
|
|
|
# (whomtosend,titleofmail, email_template, context,from_email=settings.EMAIL_HOST_USER)
|
|
|
|
request.session["message"] = "Gift Token Applied Successfully"
|
|
# return render(request, 'payments/verifytoken.html', {'message': 'Gift Token Verified Successfully'})
|
|
return redirect("base")
|
|
else:
|
|
return render(
|
|
request, "Privilege/index.html", {
|
|
"message2": "Invalid Token"}
|
|
)
|
|
else:
|
|
return render(
|
|
request, "Privilege/index.html", {
|
|
"message2": "Invalid Token"}
|
|
)
|
|
return render(request, "Privilege/index.html", {})
|
|
|
|
|
|
def verifyToken2(request):
|
|
if request.method == "POST":
|
|
# Yameen Vinchu
|
|
# Remove whiteSpace from token
|
|
_token = request.POST["token"]
|
|
strip_token = _token.strip(' ')
|
|
# print(strip_token, 'strip_token')
|
|
|
|
if gift.objects.filter(token=strip_token).exists():
|
|
x = gift.objects.get(token=request.POST["token"])
|
|
# print(x)
|
|
if x.email == request.user.email and x.plan == "deactivated":
|
|
x.plan = "activated"
|
|
x.save()
|
|
if privilegedUser1.objects.filter(user=request.user).exists():
|
|
y = privilegedUser1.objects.get(user=request.user)
|
|
y.months += 1
|
|
y.is_active = "yes"
|
|
y.save()
|
|
else:
|
|
y = privilegedUser1()
|
|
y.id = int(privilegedUser1.objects.all().last().id) + 1
|
|
y.months = 1
|
|
y.user = request.user
|
|
y.is_active = "yes"
|
|
y.save()
|
|
|
|
cd = centralDatabase.objects.get(user_id=request.user)
|
|
cd.priviledgedMember = True
|
|
cd.save()
|
|
|
|
subject = "A pledge is redeemed"
|
|
sender_email = x.user.email
|
|
context = {
|
|
"Name": sender_email,
|
|
"claimName": x.name
|
|
}
|
|
# mnfnsendemail(sender_email, subject,
|
|
# "payment/templates/payments/MR17.html", context)
|
|
sendmail(to_email=[sender_email], email_code="GT12", key_value=context)
|
|
|
|
# (whomtosend,titleofmail, email_template, context,from_email=settings.EMAIL_HOST_USER)
|
|
|
|
request.session["message"] = "Gift Token Applied Successfully"
|
|
# return render(request, 'payments/verifytoken.html', {'message': 'Gift Token Verified Successfully'})
|
|
return redirect("base")
|
|
else:
|
|
return render(
|
|
request, "payments/verifytoken.html", {
|
|
"message2": "Invalid Token"}
|
|
)
|
|
else:
|
|
return render(
|
|
request, "payments/verifytoken.html", {
|
|
"message2": "Invalid Token"}
|
|
)
|
|
return render(request, "payments/verifytoken2.html", {})
|
|
|
|
def cancel(request):
|
|
return render(request, "payments/cancel.html", {})
|
|
|
|
|
|
def sendMail(request):
|
|
x = privilegedUser1.objects.filter(is_active="yes")
|
|
date_limitB = timezone.now() + relativedelta(days=7) # 7 days later date
|
|
date_limitA = timezone.now() # today's date
|
|
for i in x:
|
|
if (i.dateSubscribed + relativedelta(months=i.months)) <= date_limitB:
|
|
# email_message = EmailMessage(
|
|
# "Membership Expiry Warning",
|
|
# "Hi "+str(i.user.first_name) + " "+str(i.user.last_name)+",\nYour subscription for MNF Privileged Membership will be expired on "+str(i.dateSubscribed + relativedelta(months=i.months)
|
|
# )+".\nPlease renew your subscription of MNF Privileged Membership or Get MNF Life Membership to enjoy our services without any interuption.\nHappy Filming \n MyNextFilm",
|
|
# settings.EMAIL_HOST_USER,
|
|
# [i.user.email]
|
|
# )
|
|
# email_message.send()
|
|
subject = "Membership Expiry Warning" + "."
|
|
from_email = settings.EMAIL_HOST_USER
|
|
to = i
|
|
context = {
|
|
"Name": i,
|
|
}
|
|
# html_content = render_to_string(
|
|
# "payments/email.html", context
|
|
# ) # render with dynamic value
|
|
# # Strip the html tag. So people can see the pure text at least.
|
|
# text_content = strip_tags(html_content)
|
|
# # create the email, and attach the HTML version as well.
|
|
# msg = EmailMultiAlternatives(
|
|
# subject, text_content, from_email, [to])
|
|
# msg.attach_alternative(html_content, "text/html")
|
|
# msg.send()
|
|
sendmail(to_email=[to],email_code="GT13",key_value=context)
|
|
|
|
return HttpResponse("Mails has been sent successfully.")
|
|
|
|
|
|
# x=privilegedUser.objects.get(user = request.user, is_active = 'yes')
|
|
# expiryDate = x.dateSubscribed + relativedelta(months=x.months)
|
|
# context['expiry'] = expiryDate
|
|
# if timezone.now() > expiryDate:
|
|
# x.months = 0
|
|
# x.dateSubscribed = x.dateSubscribed
|
|
# x.is_active = 'no'
|
|
# x.save()
|
|
# context['dataP3'] = None
|
|
|
|
|
|
# from payment.models import PromoCode
|
|
|
|
|
|
def Promo(request):
|
|
# print("PROMORCODERUNNING")
|
|
PCall = PromoCode.objects.filter(status="Activated")
|
|
for i in PCall:
|
|
if i.ValidTill < timezone.now():
|
|
i.status = "Deactivated"
|
|
i.save()
|
|
if request.method == "POST":
|
|
code = request.POST["code"]
|
|
subPlan = request.POST["subPlan"]
|
|
payment_intent_id = request.POST["pid"]
|
|
amount = round(float(request.POST["amount"]), 1)
|
|
amtINR = round(float(request.POST["amtINR"]), 1)
|
|
# secret_key = request.POST["secret_key"]
|
|
desc = request.POST["desc"]
|
|
if PromoCode.objects.filter(
|
|
PromoCode=code, MembershipType=subPlan, status="Activated"
|
|
).exists():
|
|
PC = PromoCode.objects.get(
|
|
PromoCode=code, MembershipType=subPlan, status="Activated"
|
|
)
|
|
discount_factor = 1 - ((PC.Discount) / 100)
|
|
amount = discount_factor * amount
|
|
amtINR = round(discount_factor * amtINR, 2)
|
|
pId = stripe.PaymentIntent.modify(
|
|
payment_intent_id,
|
|
amount=int(amtINR * 100),
|
|
)
|
|
pid = pId.id
|
|
context = {
|
|
"pk": STRIPE_PUB_KEY,
|
|
"PCid": PC.id,
|
|
"amtINR": amtINR,
|
|
"pid": pid,
|
|
# 'secret_key': pId.client_secret,
|
|
"STRIPE_PUBLISHABLE_KEY": stripe.api_key,
|
|
"desc": desc,
|
|
"amount": amount,
|
|
"subPlan": subPlan,
|
|
"promo_message": "promo code applied sucessfully",
|
|
"green": True,
|
|
}
|
|
return render(request, "payments/checkout.html", context)
|
|
else:
|
|
context = {
|
|
"pk": STRIPE_PUB_KEY,
|
|
"amtINR": amtINR,
|
|
"pid": payment_intent_id,
|
|
# 'secret_key': secret_key,
|
|
"STRIPE_PUBLISHABLE_KEY": stripe.api_key,
|
|
"desc": desc,
|
|
"amount": amount,
|
|
"subPlan": subPlan,
|
|
"promo_message": "invalid promo code",
|
|
}
|
|
return render(request, "payments/checkout.html", context)
|
|
|
|
|
|
basepath = BasePath()
|
|
|
|
|
|
def custom_conversion_rate():
|
|
url = "https://openexchangerates.org/api/latest.json?app_id=2fd4530bcb1146a9970d586e81b89a95"
|
|
response = urlopen(url)
|
|
data_json = json.loads(response.read())
|
|
conversionRates = open(
|
|
rf"{basepath}/MNF/json_keys/conversionRates.json", "w")
|
|
conversionRates.write(json.dumps(data_json))
|
|
conversionRates.close()
|
|
# print("doneRate23")
|
|
|
|
# use this function to get latest conversion rate
|
|
|
|
|
|
def get_custom_conversion_rate(request):
|
|
conversionRates = open(
|
|
rf"{basepath}/MNF/json_keys/conversionRates.json", "r")
|
|
rate_json = json.load(conversionRates)
|
|
return HttpResponse(rate_json["rates"]["INR"])
|
|
|
|
|
|
def eventsMembers_paymentList(request):
|
|
monthly_member = settings.MONTHLY_MEMBER
|
|
yearly_member = settings.YEARLY_MEMBER
|
|
life_member = settings.LIFE_MEMBER
|
|
im_discount = settings.IM_DISCOUNT
|
|
e_discount = settings.EMPLOY_DISCOUNT
|
|
# yearly_member_add = settings.YEARLY_MEMBER_ADDITIONAL
|
|
# life_member_add = settings.LIFE_MEMBER_ADDITIONAL
|
|
monthly_emp = monthly_member - (monthly_member * e_discount / 100)
|
|
yearly_emp = yearly_member - (yearly_member * e_discount / 100)
|
|
life_emp = life_member - (life_member * e_discount / 100)
|
|
|
|
monthly_im = monthly_member - (monthly_member * im_discount / 100)
|
|
yearly_im = yearly_member - (yearly_member * im_discount / 100)
|
|
|
|
monthly_im_emp = monthly_emp - (monthly_emp * monthly_im / 100)
|
|
yearly_im_emp = yearly_emp - (yearly_emp * yearly_im / 100)
|
|
|
|
dict = {
|
|
"monthly_member": monthly_member,
|
|
"yearly_member": yearly_member,
|
|
"life_member": life_member,
|
|
"monthly_emp": monthly_emp,
|
|
"yearly_emp": yearly_emp,
|
|
"life_emp": life_emp,
|
|
"monthly_im": monthly_im,
|
|
"yearly_im": yearly_im,
|
|
"monthly_im_emp": monthly_im_emp,
|
|
"yearly_im_emp": yearly_im_emp
|
|
}
|
|
|
|
# print("test25", dict)
|
|
|
|
# pricesfile = open(rf"{basepath}/MNF/relationshipmanager/templates/relationshipmanager/prices.json","w")
|
|
# pricesfile.write(json.dumps(dict))
|
|
# pricesfile.close()
|
|
return HttpResponse("Testing completed")
|
|
|
|
|
|
def refund(request):
|
|
if request.user.is_staff:
|
|
# detailslist = PaymentData.objects.all().order_by('-date')[:1]
|
|
detailslist = PaymentData.objects.all().order_by('-date')
|
|
serializeddata = PaymentDataSerializer(detailslist, many=True).data
|
|
context = {
|
|
"list": serializeddata,
|
|
}
|
|
# return render(request, "payments/refund.html", context)
|
|
return JsonResponse(context)
|
|
else:
|
|
return HttpResponse("You are not allowed to access this resource.")
|
|
|
|
|
|
class Refunds(viewsets.ReadOnlyModelViewSet):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
pagination_class = PageNumberPagination
|
|
pagination_class.page_size = 15
|
|
queryset = Refund.objects.all().order_by("-created")
|
|
serializer_class = RefundSerializer
|
|
|
|
|
|
class Stripe_Refund_Accept_View(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def put(self, request, pk=None):
|
|
# print("Running")
|
|
refund_obj = Refund.objects.get(r_id=pk)
|
|
# stripe.api_key="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"
|
|
stripe.api_key = settings.STRIPE_SECRET_KEY
|
|
try:
|
|
refund = stripe.Refund.create(charge=refund_obj.payment_id)
|
|
if refund.status == 'succeeded':
|
|
refund_obj.status = "Accept"
|
|
refund_obj.save()
|
|
context = {
|
|
"message": "Refund Success!"
|
|
}
|
|
return Response(context, status=status.HTTP_200_OK)
|
|
else:
|
|
refund_obj.status = "Failed"
|
|
refund_obj.save()
|
|
context = {
|
|
"message": "Refund Failed!"
|
|
}
|
|
return Response(context, status=status.HTTP_200_OK)
|
|
except Exception as error:
|
|
return Response(status=status.HTTP_502_BAD_GATEWAY)
|
|
|
|
|
|
class Stripe_Refund_Reject_View(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def put(self, request, pk=None):
|
|
refund_obj = Refund.objects.get(r_id=pk)
|
|
refund_obj.status = "Reject"
|
|
refund_obj.save()
|
|
context = {
|
|
"message": "Success!"
|
|
}
|
|
return Response(context, status=status.HTTP_200_OK)
|
|
|
|
|
|
class RazorPay_Refund_Accept_View(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def put(self, request, pk):
|
|
refund_obj = Refund.objects.get(r_id=pk)
|
|
client = razorpay.Client(
|
|
auth=(RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET))
|
|
amount = float(refund_obj.amount) # Example decimal amount
|
|
amount_in_cents = str(int(amount * 100))
|
|
# print(refund_obj.payment_id)
|
|
refund = client.payment.refund(refund_obj.payment_id, {
|
|
'amount': amount_in_cents})
|
|
if refund.get('status') == 'processed':
|
|
refund_obj.status = "Accept"
|
|
refund_obj.save()
|
|
context = {"message": "Refund Success!"}
|
|
return Response(context, status=status.HTTP_200_OK)
|
|
else:
|
|
refund_obj.status = "Failed"
|
|
refund_obj.save()
|
|
context = {"message": "Refund Failed!"}
|
|
return Response(context, status=status.HTTP_200_OK)
|
|
|
|
|
|
class RazorPay_Refund_Reject_View(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def put(self, request, pk):
|
|
refund_obj = Refund.objects.get(r_id=pk)
|
|
refund_obj.status = "Reject"
|
|
refund_obj.save()
|
|
context = {"message": "Success!"}
|
|
# return Response(context, status=status.HTTP_200_OK)
|
|
return JsonResponse(context)
|
|
|
|
|
|
def create(request):
|
|
user = User.objects.get(id=16)
|
|
# print(user)
|
|
Refund.objects.create(
|
|
payment_method="Razorpay",
|
|
payment_id="ececececececec",
|
|
service_name="Subtitle",
|
|
service_id="ececececececec",
|
|
claimed_user=user,
|
|
amount=200,
|
|
reason="jfjkfhejf"
|
|
)
|
|
|
|
return HttpResponse("Ok")
|
|
|
|
@login_required
|
|
def refund_admin(request, id):
|
|
if request.user.is_superuser:
|
|
payment_object = CentralPayment.objects.get(id=id)
|
|
if payment_object.payment_status == "refunded":
|
|
return redirect('refpdadmin')
|
|
|
|
try:
|
|
gateway = payment_object.payment_gateway
|
|
if gateway == "razorPay":
|
|
RAZOR_KEY = settings.RAZORPAY_KEY_ID
|
|
RAZOR_SECRET = settings.RAZORPAY_KEY_SECRET
|
|
client = razorpay.Client(auth=(RAZOR_KEY, RAZOR_SECRET))
|
|
razorpay_payment_instance = client.payment.fetch(payment_object.payment_id)
|
|
amount = float(razorpay_payment_instance["amount"])
|
|
# amount_in_cents = str(int(amount * 100))
|
|
refund = client.payment.refund(payment_object.payment_id)
|
|
if refund.get('status') == 'processed':
|
|
print("Refund Done", refund)
|
|
payment_object.payment_status = "refunded"
|
|
payment_object.save()
|
|
return redirect('refpdadmin')
|
|
else:
|
|
print("Refund Not Done", refund)
|
|
payment_object.payment_status = "refunded-rejected"
|
|
payment_object.save()
|
|
return redirect('refpdadmin')
|
|
elif gateway == "Stripe":
|
|
amount = float(payment_object.amount_charged)
|
|
amount_in_cents = str(int(amount * 100))
|
|
refund = stripe.Refund.create(payment_intent=payment_object.payment_id, amount=amount_in_cents)
|
|
if refund.status == 'succeeded':
|
|
print("Refund Done", refund)
|
|
payment_object.payment_status = "refunded"
|
|
payment_object.save()
|
|
return redirect('refpdadmin')
|
|
else:
|
|
print("Refund Not Done", refund)
|
|
payment_object.payment_status = "refunded-rejected"
|
|
payment_object.save()
|
|
return redirect('refpdadmin')
|
|
else:
|
|
return redirect('refpdadmin')
|
|
|
|
except Exception as error:
|
|
print("Error is:", error)
|
|
return redirect('refpdadmin')
|
|
|
|
|
|
|
|
def ForSomeWork(request):
|
|
return render(request, 'payments/for_some_work.html') |