import datetime # import json # import os import random import math # import asyncio # from typing import List, Any, Union # import requests # import calendar import ntpath from users.models import UserCredentialsForBlockchain,BlockchainUserInfo from Blockchain2.decryption import decryptionOfPrivate, decryptionOfUrl, download_file_System,viewDecryptionOfUrl,hash_decrypation # # from centralisedFileSystem.models import File, Script, ScreenPlay from Blockchain2.DataStorage import uploadDataToIPFSNode from Blockchain2.PPTConversion import UploadPPTConversionData, getPPTConversion, getUserprojectIds, deletePPTConversion from Blockchain2.Conversion import UploadConversionData, getConversion, deleteConversion,scriptGetUserprojectIds from Blockchain2.block_user_info import * from lpp.certificate.createCertificate import certificateGenrate # from lpp.models import LPPTASKDatabase from Blockchain2.blockchainsetting import OWNER_KEY # from mnfapp.views import base, languages as lang ## import base,lang error commented 02032023 from .translation.translation_variables import code_2_language as languages, language_2_code import re # from .booktranslator.newConvertBook import convert_books # import shutil import subprocess import sys import threading import time from datetime import date from pathlib import Path # from subprocess import Popen # from threading import Thread from auto_email.views import sendmail import docx import pandas as pd # import razorpay from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from django.core.files.base import ContentFile from django.core.files.storage import FileSystemStorage from django.core.mail import EmailMessage, EmailMultiAlternatives, get_connection from django.http import HttpResponse, HttpResponseRedirect, JsonResponse, HttpResponseBadRequest from django.shortcuts import redirect, render from django.template.loader import render_to_string from django.utils.html import strip_tags # from forex_python.converter import CurrencyRates # from googletrans import Translator # from langdetect import detect # from pptx import Presentation # from pymongo import MongoClient from PyPDF2 import PdfFileReader, PdfFileWriter # from pytz import timezone from django.utils import timezone as tz # from tqdm import tqdm # from blockchain.submitIPFS import upload_multiFile_to_ipfs, upload_to_ipfs from conversion.ppt_translation.final_srt_ppt import translate_presentation from conversion.translation.translation_function import all_translator # from conversion.translation.translation_variables import ( # get_doc_file, get_language_script_code, get_pdf_save_dir, # is_in_translation_list) # from conversion.translation import final_translation from conversion.translation.fourstepconversion import translate_function from lpp.models import LPPTASKDatabase # from .storytranslator.trans import convert_story from lpp.views import task_assigner # from MNF.email import mnfnsendemail from MNF.settings import (EMAIL_HOST_USER, RAZORPAY_KEY_ID, RAZORPAY_KEY_SECRET, STRIPE_PUBLISHABLE_KEY, STRIPE_SECRET_KEY, T_RAZORPAY_KEY_ID, T_RAZORPAY_KEY_SECRET, BasePath, pricing_data, discount_limit_handler) from mnfapp.models import * from mnfapp.models import (MNFScriptDatabase, PaymentData, SampleScript, ScriptTranslations) # from neutralAudit.tasks import NeutralAuditTask # from ideamall.views import sendemail from page_script.models import (Conversion_link, Conversions, MNFScriptDatabase_2) from payment.models import conversionPayment, privilegedUser1 from users.models import * # from users.views import deduction_for_sep_wall from utils import filesystem from utils.scripts_functions import (name_exists, script_id_generator, script_upload) # from rest_framework.response import Response from .booktranslator2.convertBookDocx import ConvertBook from .forms import AScript, CScript, SScript from .models import (BookConversion, StoryConversion, UploadScript, pptconversion) from .translation.detection import getInputs, language_detector, script_det # from .translation.final_transliteration_only import makeTransliteration_only # from .translation.script_reading import (breaksen, getRefined, getScenes, # getSlugAndNonSlug, getSpeakers) # from .translation.script_writing import (addActionLine, addDialogue, # addParenthetical, addSlugLine, # addSpeaker, addTransition, # dial_checker, dual_script, # non_dial_checker) # from .translation.translation_function import (translate_comparison, # ui_option3_and_4) # from .translation.translation_resources import google from centralizePayment.views import callback, create_indent, centralPayment_get_discounts, auto_refund from juggernaut.models import JuggernautConversion, JuggernautPackage from centralizePayment.models import CentralPayment from mnfapp.models import centralDatabase, SampleScript from institutional.views import get_discount DISCOUNT = settings.DISCOUNT from .translation.translation_variables import language_script from juggernaut.views import update_juggernaut, check_juggernaut # ppt convert from centralisedFileSystem.models import Script from scriptAudit.models import ScriptAuditModel from .translation.external_conversion import Conversion BASE_DIR = Path(__file__).resolve().parent.parent basePath = BasePath() # This is your real test secret API key. # stripe.api_key = "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" # stripe.api_key = "sk_test_51JT8ahSF9vzGWnggJT1M69LDT0Q8tCqvHzuWd9Fih5YO2guIpMpUd58swbDrJYocpQZAn3nY8k3Ymyw8QZ8dLeEF00VxfBmMWI" # stripe.api_key = STRIPE_SECRET_KEY # STRIPE_PUB_KEY ="pk_test_51JT8ahSF9vzGWngg9ik0jueTIilHhCQomixBFOiNzCuo4Wwc5oRm73d05vdcboMgNwhyNcNTa2si8idqbB5msvwe006q3S96tM" # STRIPE_PUB_KEY ="pk_live_51JT8ahSF9vzGWngg4N8fwhTPk5jq8fqBFdokqSMe7AVaOvH6BdyTwAfAoY79qkeJTFA0OdT5qkAk2FCNWCu6W9l000STNnHa7H" STRIPE_PUB_KEY = STRIPE_PUBLISHABLE_KEY # keyID = RAZORPAY_KEY_ID # keySecret = RAZORPAY_KEY_SECRET import cProfile @login_required(login_url="/PersonalLogin-2") def adding_sample_scripts(request): if request.user.is_superuser: samplescripts = len(SampleScript.objects.all()) scripts = json.load(open("/home/mnfidea/mnf/MNF/app/conversion/mnfapp_samplescript_latest.json")) print(scripts) if samplescripts > 5: pass else: for script in scripts: SampleScript.objects.create( user_id = User.objects.get(id=request.user.id), script_title = script['script_title'], author_name = "MNF", script_file_path = script["script_file_path"], script_file_path_pdf = script["script_file_path_pdf"], dial_src_language = script['dial_src_language'], dial_src_script = script['dial_src_script'], nondial_src_script = script['nondial_src_script'], nondial_src_language = script['nondial_src_language'], languages = script['languages'], approved = True ) return redirect("sampleScriptC") class sendemail(threading.Thread): def __init__(self, whomtosend, titleofmail, dateofemail, context, EMAIL_HOST_USER): self.whomtosend = whomtosend self.titleofmail = titleofmail self.dateofemail = dateofemail self.context = context self.EMAIL_HOST_USER = EMAIL_HOST_USER threading.Thread.__init__(self) def run(self): print("run self class", self.context) subject = str(self.titleofmail) + " " + str(self.dateofemail) + "." from_email = self.EMAIL_HOST_USER to = self.whomtosend html_content = render_to_string( rf"{basePath}/ideamall/templates/ideamall/email_templete.html", self.context, # /home/user/mnf/project/MNF/ideamall/templates/ideamall/email_templete.html ) # 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() def set_payment_token(request): if request.user.is_superuser: request.session["keyID"] = T_RAZORPAY_KEY_ID request.session["keySecret"] = T_RAZORPAY_KEY_SECRET else: request.session["keyID"] = RAZORPAY_KEY_ID request.session["keySecret"] = RAZORPAY_KEY_SECRET # languages = { # "hi": "Hindi", # "en": "English", # "ur": "Urdu", # "ar": "Arabic", # "bn": "Bengali", # "kn": "Kannada", # "ta": "Tamil", # "bg": "Bulgarian", # "bn": "Bengali", # "ml": "Malayalam", # "ru": "Russian", # "sr": "Serbian", # "uk": "Ukranian", # "hr": "Croatian", # "ga": "Irish", # "sq": "Albanian", # "mr": "Marathi", # "fa": "Persian", # "te": "Telugu", # "tr": "Turkish", # "hu": "Hungarian", # "it": "Italian", # "ro": "Romanian", # "pa": "Punjabi", # "gu": "Gujarati", # "or": "Oriya", # "zh-CN": "Chinese-Simplified", # "zh-TW": "Chinese-Traditional", # "ne": "Nepali", # "fr": "French", # "es": "Spanish", # "id": "Indonesian", # "el": "Greek", # "ja": "Japanese", # "jv": "Javanese", # "ko": "Korean", # "be": "Belarusian", # "uz": "Uzbek", # "sd": "Sindhi", # "af": "Afrikaans", # "de": "German", # "is": "Icelandic", # "ig": "Igbo", # "la": "Latin", # "pt": "Portugese", # "my": "Myanmar", # "th": "Thai", # "su": "Sundanese", # "lo": "Lao", # "am": "Amharic", # "si": "Sinhala", # "az": "Azerbaijani", # "kk": "Kazakh", # "mk": "Macedonian", # "bs": "Bosnian", # "ps": "Pashto", # "mg": "Malagasy", # "ms": "Malay", # "yo": "Yoruba", # "cs": "Czech", # "da": "Danish", # "nl": "Dutch", # "tl": "Tagalog", # "no": "Norwegian", # "sl": "Slovenian", # "sv": "Swedish", # "vi": "Vietnamese", # "cy": "Welsh", # "he": "Hebrew", # "hy": "Armenian", # "km": "Khmer", # "ka": "Georgian", # "mn": "Mongolian", # "ku": "Kurdish", # "ky": "Kyrgyz", # "tk": "Turkmen", # "fi": "Finnish", # "ht": "Haitian Creole", # "haw": "Hawaiian", # "lt": "Lithuanian", # "lb": "Luxembourgish", # "mt": "Maltese", # "pl": "Polish", # "eo": "Esperanto", # "tt": "Tatar", # "ug": "Uyghur", # "ha": "Hausa", # "so": "Somali", # "sw": "Swahili", # "yi": "Yiddish", # "eu": "Basque", # "ca": "Catalan", # "ceb": "Cebuano", # "co": "Corsican", # "et": "Estonian", # "fy": "Frisian", # "gl": "Galician", # "hmn": "Hmong", # "rw": "Kinyarwanda", # "lv": "Latvian", # "mi": "Maori", # "sm": "Samoan", # "gd": "Scots Gaelic", # "st": "Sesotho", # "sn": "Shona", # "sk": "Slovak", # "xh": "Xhosa", # "zu": "Zulu", # "ny": "Nyanja", # } def conversionSHandler(script_id="scr_1652429491"): script_info = MNFScriptDatabase.objects.get(script_id=script_id) numPages = script_info.numPages total_amount = 0 context = {} if int(numPages) > 5: context["subtotal"] = round(float(numPages * settings.CONVERSION_PER_PAGE), 2) return context def conversion_script_details(script_id="scr_1652429491"): script_info = MNFScriptDatabase.objects.get(script_id=script_id) context = {} context["script_title"] = script_info.script_title context["numPages"] = script_info.numPages context["ndial_src"] = script_info.nondial_src_language context["dial_src"] = script_info.dial_src_language context["ndial_dest"] = script_info.nondial_dest_language context["dial_dest"] = script_info.dial_dest_language context["dial_dest_script"] = script_info.dial_dest_script return context def conversionScriptInvoice(request, script_id="scr_1652429491"): context = {} script_details = conversion_script_details(script_id) context.update(script_details) tempt = conversionSHandler(script_id=script_id) context.update({"subtotal":tempt["subtotal"]}) return render(request, "conversion/conversion_checkout.html", context) # -> For Testing of Conversion def run_testing(request): # from conversion.translation.testing_scripts import test_run # from conversion.translation.testing_scripts_mini import test_run from threading import Thread # from conversion.translation.testing_languages import test_run # from conversion.translation.testing_languages_working_translation import test_run # from conversion.translation.getting_languages_Scripts import test_run # from conversion.translation.getting_languages_Codes import test_run from conversion.translation.testing_response_times import test_run # create a thread thread = Thread(target=test_run) # run the thread thread.start() # wait for the thread to finish print("Waiting for the thread...") thread.join() test_run() return render(request, "conversion/testing.html") def multi_lang(request): f = open("/home/user/mnf/project/MNF/locale/hi/LC_MESSAGES/django.po", "r") g = open("/home/user/mnf/project/MNF/locale/hi/LC_MESSAGES/django_.po", "w") appender = "" for line in f: if line[0:5] == "msgid": if line[7:-2] != "": output = all_translator( line[7:-2], "en", "hi").replace(""", "\"") g.write(line) appender = output else: g.write(line) elif line[0:6] == "msgstr": g.write(rf'msgstr "{appender}"') g.write("\n") appender = "" else: g.write(line) g.close() return render(request, "conversion/testing.html") # -> Converting Docx to PDF def convert_to_pdf(input_docx, out_folder): p = subprocess.Popen( [ "libreoffice", "--headless", "--convert-to", "pdf", "--outdir", out_folder, input_docx, ] ) print(["--convert-to", "pdf", input_docx]) p.communicate() # -> Counting Number of Pages def countPages(docfile, pdfname): convert_to_pdf(docfile, rf"{basePath}/media/PdfFiles/") pdf = PdfFileReader(open(rf"{basePath}/media/PdfFiles/{pdfname}", "rb")) number_of_pages = pdf.getNumPages() return number_of_pages # -> Conversion Script Storing and redirecting to Script Page def ps_conversion(request): if request.method == "POST": try: script_id = script_upload(request.FILES["script"], request.user)[ "script_id" ] except FileExistsError: messages.error( request, 'Script Already Exists ! Please choose a New Script') #messages.success(request, f"Script Already Exists ! Please choose a New Script") return redirect("conversion") # NeutralAuditTask().delay(script_id=script_id, user=request.user) # NeutralAudit(script_id=script_id).audit() return redirect("ScriptPage", script_id=script_id) def conversion_clone(request): print("Entered Conversion Function") sampleList = SampleScript.objects.all() with open(f"{basePath}/MNF/json_keys/language_pairs.json") as c: language_pairs = json.load(c) with open(f"{basePath}/MNF/json_keys/default_script.json") as c: default_script = json.load(c) with open(f"{basePath}/MNF/json_keys/script_pairs.json") as c: script_pairs = json.load(c) if request.method == "POST": print("i am here 0") # try: print("i am here 1") M = MNFScriptDatabase() UScript = CScript(request.POST, request.FILES) if UScript.is_valid(): M.script = UScript.cleaned_data.get("script") M.user_id = request.user M.progress = 10 M.save() author_name = str(request.user.username) script_title = M.script.name numPages = countPages( str(BASE_DIR) + "/media/" + script_title, script_title[8:-4] + "pdf" ) request.session["numPages"] = numPages MyURL = "/media/" + str(script_title) formInput = getInputs(request, str(BASE_DIR) + MyURL, M.id) dial_src_script = formInput[2] dial_src_lang = formInput[1] non_dial_src_lang = formInput[0] non_dial_src_script = formInput[3] option3 = formInput[4] option4 = formInput[5] option5 = formInput[6] option6 = formInput[7] M.progress = 20 M.save() M.progress = 90 M.save() print("i am here 2") print("The Data of formInput is:", formInput) context = { "id": M.id, "numPages": numPages, "fileName": MyURL, "non_dial_src_script": non_dial_src_script, "author_name": author_name, "script_title": script_title, "UScript": UScript, "dial_src_script": dial_src_script, "dial_src_lang": dial_src_lang, "dial_src_lang_full": languages.get(dial_src_lang), "non_dial_src_lang_full": languages.get(non_dial_src_lang), "non_dial_src_lang": non_dial_src_lang, "list": sampleList, "option3": option3, "option4": option4, "option5": option5, "option6": option6, "language_pairs": language_pairs, "default_script": default_script, "script_pairs": script_pairs, } print("i am here 3") return render(request, "conversion/conversion_copy.html", context) # except Exception as e: # print("i am here 4") # print("Error:", e) # messages.warning(request, "The format of file is wrong") # return redirect("conversion_clone") # print("i am here 5") return render( request, "conversion/conversion_clone.html", { "list": sampleList, "language_pairs": language_pairs, "default_script": default_script, "script_pairs": script_pairs, }, ) # -> Initital Saving of Script in database and extracting various languages present in that @login_required(login_url="/PersonalLogin-2") def conversion(request): if request.method == "GET": # from utils.utilities import fdx_to_txt print("Entered Conversion Function") existingscripts = MNFScriptDatabase.objects.filter(user_id=request.user.id).order_by("-date_at").values_list('script_id', 'script_title') sampleList = SampleScript.objects.all() with open(f"{basePath}/MNF/json_keys/language_pairs.json") as c: language_pairs = json.load(c) with open(f"{basePath}/MNF/json_keys/script_pairs.json") as c: script_pairs = json.load(c) return render( request, "conversion/conversion.html", { "list": sampleList, "language_pairs": language_pairs, "default_script": language_script, "script_pairs": script_pairs, "exsiting_scripts": existingscripts, }, ) elif request.method == "POST": original_stdout = sys.stdout start_time = time.time() # try: M = MNFScriptDatabase() UScript = CScript(request.POST, request.FILES) if UScript.is_valid(): M.script = UScript.cleaned_data.get("script") M.user_id = request.user M.progress = 10 M.save() author_name = str(request.user.username) script_title = M.script.name MyURL = "/media/" + str(script_title) print("Here are data points ->", str(BASE_DIR) + MyURL, M.id) formInput = getInputs(request, str(BASE_DIR) + MyURL, M.id) sys.stdout = original_stdout dial_src_script = formInput[2] dial_src_lang = formInput[1] non_dial_src_lang = formInput[0] non_dial_src_script = formInput[3] option3 = formInput[4] option4 = formInput[5] option5 = formInput[6] option6 = formInput[7] numPages = formInput[8] request.session["numPages"] = numPages M.progress = 20 M.option3 = option3 M.option4 = option4 M.option5 = option5 M.option6 = option6 M.save() print("numpages", numPages) # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # certificatepath = certificateGenrate(request.user.username,"original script",hash) # hash = uploadDataToIPFSNode(UScript.cleaned_data.get("script")) # userkey = decryptionOfPrivate(blockchain_obj.privateKey) # to_email = [request.user.email] # email_code = 'BL1' # key_value = { # "service":"original script", # "hash": hash, # "public key":blockchain_obj.publicKey, # "private key":userkey.decode('utf-8'), # } # sendmail(to_email=to_email , email_code=email_code,key_value=key_value,filePath=certificatepath) M.progress = 90 M.save() print("The Data of formInput is:", formInput) context = { "id": M.id, "numPages": numPages, "fileName": MyURL, "non_dial_src_script": non_dial_src_script, "author_name": author_name, "script_title": (((str(script_title).split("/"))[-1]).split("."))[0], "UScript": UScript, "dial_src_script": dial_src_script, "dial_src_lang": dial_src_lang, "dial_src_lang_full": languages.get(dial_src_lang), "non_dial_src_lang_full": languages.get(non_dial_src_lang), "non_dial_src_lang": non_dial_src_lang, # "list": sampleList, "option3": option3, "option4": option4, "option5": option5, "option6": option6, # "language_pairs": language_pairs, "default_script": language_script, # "script_pairs": script_pairs, # "exsiting_scripts": existingscripts, } print("i am here 3") # sys.stdout = original_stdout print("Time Taken For Input Processing is ->", time.time() - start_time) return render(request, "conversion/conversion.html", context) # except Exception as e: # print("Error:",e) # print("i am here 4") # messages.warning(request, "The format of file is wrong") # return redirect("conversion") @login_required(login_url="/PersonalLogin-2") def conversion2(request): from django.utils import timezone if request.method == "GET": print("Entered Conversion Function") existingscripts2 = MNFScriptDatabase.objects.filter(user_id=request.user.id).order_by("-date_at") for script in existingscripts2: elapsed_time = (timezone.now() - script.date_at).total_seconds() # 15min if int(elapsed_time) > 900 and len(str(script.script_title)) == 0: print("Script Deleted becuase 15 Mins has passed ->", script.script.name) script.delete() existingscripts = MNFScriptDatabase.objects.filter(user_id=request.user.id).order_by("-date_at").values_list('script_id', 'script_title') # existingscripts = existingscripts2 sampleList = SampleScript.objects.all() with open(f"{basePath}/MNF/json_keys/language_pairs.json") as c: language_pairs = json.load(c) with open(f"{basePath}/MNF/json_keys/script_pairs.json") as c: script_pairs = json.load(c) return render( request, "conversion2/conversion_new.html", { "list": sampleList, "language_pairs": language_pairs, "default_script": language_script, "script_pairs": script_pairs, "exsiting_scripts": existingscripts, }, ) elif request.method == "POST": original_stdout = sys.stdout try: M = MNFScriptDatabase() UScript = CScript(request.POST, request.FILES) if UScript.is_valid(): M.script = UScript.cleaned_data.get("script") M.user_id = request.user M.save() author_name = str(request.user.username) script_title = M.script.name MyURL = "/media/" + str(script_title) print("Here are data points ->", str(BASE_DIR) + MyURL, M.id) formInput = getInputs(request, str(BASE_DIR) + MyURL, M.id) sys.stdout = original_stdout dial_src_script = formInput[2] dial_src_lang = formInput[1] non_dial_src_lang = formInput[0] non_dial_src_script = formInput[3] numPages = formInput[8] request.session["numPages"] = numPages M.save() print("numpages", numPages) M.save() print("The Data of formInput is:", formInput) context = { "id": M.id, "numPages": numPages, "author_name": author_name, "script_title": ((M.script.name.split("/"))[-1].split("."))[0], "dial_src_script": dial_src_script, "dial_src_lang_full": languages.get(dial_src_lang), "non_dial_src_script": non_dial_src_script, "non_dial_src_lang_full": languages.get(non_dial_src_lang), } print("i am here 3") # sys.stdout = original_stdout return render(request, "conversion2/conversion_processing.html", context) except Exception as e: print("Error:",e) print("i am here 4") messages.warning(request, "The format of file is wrong") return redirect("conversion") def tp(request): context = { "id": "0461b9d5-fe04-48cf-b07f-bea23d08de6d", "numPages": 10, "fileName": "MyURL", "non_dial_src_script": "Latin", "author_name": "author_name", "script_title": "12", "UScript": "UScript", "dial_src_script": "Latin", "dial_src_lang": "Hindi", "dial_src_lang_full": "Hindi", "non_dial_src_lang_full": "English", "non_dial_src_lang": "English", # "list": sampleList, "option3": "option3", "option4": "option4", "option5": "option5", "option6": "option6", # "language_pairs": language_pairs, "default_script": language_script, # "script_pairs": script_pairs, # "exsiting_scripts": existingscripts, } print("i am here 3") # sys.stdout = original_stdout # print("Time Taken For Input Processing is ->", time.time() - start_time) return render(request, "conversion2/conversion_processing.html", context) def logger_wrapper(func): def _wrapper(request, *args, **kwargs): original_stdout = sys.stdout f = open("/home/mnfidea/project/MNF/conversion/translation/script_translation_log.txt","w") sys.stdout = f func(request) f.close() sys.stdout = original_stdout return _wrapper @login_required(login_url="/PersonalLogin-2") def start_conversion(request): from .translation.newconversion import ScriptTranslation from scriptAudit.mnf_script_audit import NeutralAudit from scriptAudit.models import States if request.method == "POST": print("Conversion Process Started") original_stdout = sys.stdout """Initializing Variables""" script_id = request.session["script_id"] original_script = MNFScriptDatabase.objects.get(script_id=script_id) translated_script = ScriptTranslations.objects.get(translation_id=request.session.get("translation_id", None)) conversion_params = { "user": translated_script.user_id, "file_path": str(basePath) + "/media/" + translated_script.script_link_id.script.name, "original_script_object": translated_script.script_link_id, "translated_script_object": translated_script, "sample_id": request.session.get('sample_id', None), "existing_script": request.session.get('sample_id', None), "iteration_no": request.session.get('iteration_no', None), } obj = Conversion(**conversion_params) obj.convert() return JsonResponse({"status": "Completed"}, status=200) # Getting all choices of user regarding Full Dialogues Translation full_dialogue_option_choices = [True if value.strip() == "True" else False for value in str(translated_script.full_dialogue_option_choices).split(",")] # Getting all choices of user regarding Words of Dialogues Translation sentence_dialogue_option_choices = [True if value.strip() == "True" else False for value in str(translated_script.sentence_dialogue_option_choices).split(",")] # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. other_option_choices = [True if value.strip() == "True" else False for value in str(translated_script.other_option_choices).split(",")] # Dual dialogue # if dual_dialogue_option := request.POST.get('dual_dialogue_option') == "on": # dual_left_language = request.POST.get('dual_left_language') # dual_left_script = request.POST.get('dual_left_script') # # lpp vetting # if lpp_vetting := request.POST.get('lpp_vetting') == "on": # lpp_vetting_type = request.POST.get('radioGroup') # if lpp_vetting_type == "radioOption1": # pass # elif lpp_vetting_type == "radioOption1": # pass # - Audit Code """Audit Code starts here""" print("Conversion Auditing is starting") # x = MNFScriptDatabase.objects.get(script_id=request.POST['script_id']) scripttt = basePath + "/media/" + original_script.script.name exten = (str(original_script.script.name).split("."))[-1] name_script = str(((((scripttt).split("/"))[-1]).split("."))[0]) print("name of script", name_script) print("sample script", request.POST.get("sample_id")) print("existing_script", request.session.get("existing_script")) """if file is not a sample script and not a existing script then only audit it""" if not request.session.get('existing_script') and not original_script.sample_script: print("----Auditing----") script1 = str(scripttt) doc = open(script1, 'rb').read() file = ContentFile( doc, (script1.split("/"))[-1], ) language_code = "en" result = filesystem.new_screenplay_without_audit_in_background( request.user, request.user.username, str(name_script), file, "script-original", language_code, ) audit_id = result.get("script", {}).get("id") ScriptAuditModel.objects.update_or_create( script=Script.objects.get( id=audit_id ), defaults={"status": States.STARTED} ) audit = NeutralAudit(audit_id, False) status = ScriptAuditModel.objects.get( script=Script.objects.get( id=audit_id ) ) try: if exten == "fdx": audit.audit_fdx() else: audit.audit() status.status = "SUCCESS" status.save() to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) except Exception as e: print("Error of Audit is:", e) status.status = "FAILURE" status.save() to_email = [request.user.email] email_code = 'SB2' sendmail(to_email=to_email, email_code=email_code) print( "Script Audit failed due to some internal error." " If you have made any payment for conversion " "that will be refunded") # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code try: auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) except Exception as e: print("No Refund -> ",e) return JsonResponse({}, status=505) file_path_ = filesystem.get_file_path(audit_id, "script-csv") script_data = MNFScriptDatabase.objects.get(script_id=script_id) script_data.audit_id = str(audit_id) script_data.save() to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) list_of_lists = df.values.tolist() print("Audit Done") elif original_script.sample_script: sample_script = SampleScript.objects.get(sample_id=original_script.sample_id.sample_id) if sample_script.audit_id: audit_id = sample_script.audit_id file_path_ = filesystem.get_file_path(audit_id, "script-csv") try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) list_of_lists = df.values.tolist() else: print("----Auditing----") script1 = str(scripttt) doc = open(script1, 'rb').read() file = ContentFile( doc, (script1.split("/"))[-1], ) language_code = "en" result = filesystem.new_screenplay_without_audit_in_background( request.user, request.user.username, str(name_script), file, "script-original", language_code, ) audit_id = result.get("script", {}).get("id") ScriptAuditModel.objects.update_or_create( script=Script.objects.get( id=audit_id ), defaults={"status": States.STARTED} ) audit = NeutralAudit(audit_id, False) status = ScriptAuditModel.objects.get( script=Script.objects.get( id=audit_id ) ) try: if exten == "fdx": audit.audit_fdx() else: audit.audit() status.status = "SUCCESS" status.save() to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) except: status.status = "FAILURE" status.save() to_email = [request.user.email] email_code = 'SB2' sendmail(to_email=to_email, email_code=email_code) print( "Script Audit failed due to some internal error." " If you have made any payment for conversion " "that will be refunded") # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code try: auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) except Exception as e: print("No Refund -> ",e) return JsonResponse({}, status=505) file_path_ = filesystem.get_file_path( audit_id, "script-csv") sample_script.audit_id = str(audit_id) sample_script.save() try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() elif request.session.get('existing_script'): if MNFScriptDatabase.objects.get(script_id=script_id).audit_id: audit_id = MNFScriptDatabase.objects.get(script_id=script_id).audit_id file_path_ = filesystem.get_file_path(audit_id, "script-csv") try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() else: print("----Auditing----") script1 = str(scripttt) doc = open(script1, 'rb').read() file = ContentFile( doc, (script1.split("/"))[-1], ) language_code = "en" result = filesystem.new_screenplay_without_audit_in_background( request.user, request.user.username, str(name_script), file, "script-original", language_code, ) audit_id = result.get("script", {}).get("id") ScriptAuditModel.objects.update_or_create( script=Script.objects.get( id=audit_id ), defaults={"status": States.STARTED} ) audit = NeutralAudit(audit_id, False) status = ScriptAuditModel.objects.get( script=Script.objects.get( id=audit_id ) ) try: if exten == "fdx": audit.audit_fdx() else: audit.audit() status.status = "SUCCESS" status.save() to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) except: status.status = "FAILURE" status.save() to_email = [request.user.email] email_code = 'SB2' sendmail(to_email=to_email, email_code=email_code) print( "Script Audit failed due to some internal error." " If you have made any payment for conversion " "that will be refunded") # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code try: auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) except Exception as e: print("No Refund -> ", e) return JsonResponse({}, status=505) file_path_ = filesystem.get_file_path( audit_id, "script-csv") script_data = MNFScriptDatabase.objects.get(script_id=script_id) script_data.audit_id = str(audit_id) script_data.save() to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() sys.stdout = original_stdout print("Audit Done") translated_script.status = "Audited" translated_script.save() """Translation Code Starts here""" print("list of lists -> ", list_of_lists) dataframe = list_of_lists args = [full_dialogue_option_choices, sentence_dialogue_option_choices, other_option_choices] kwargs = { 'dataframe': dataframe, "non_dial_src_lang": original_script.nondial_src_language, "non_dial_src_script": original_script.nondial_src_script, "non_dial_dest_lang": translated_script.nondial_dest_language, "non_dial_dest_script": translated_script.nondial_dest_script, "dial_src_lang": original_script.dial_src_language, "dial_src_script": original_script.dial_src_script, "dial_dest_lang": translated_script.dial_dest_language, "dial_dest_script": translated_script.dial_dest_script, "translation_id": translated_script.translation_id, "script_id": original_script.script_id } original_stdout = sys.stdout try: ScriptTranslation(request, *args, **kwargs) except Exception as e: translated_script.status = "Failed" translated_script.error_desc = str(e) translated_script.save() print("Error in Conversion is:", e) print("Script translation failed due to some code error. If you have made any payment for conversion" " that will be refunded") # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code try: auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) except Exception as e: print("No Refund due to error", e) return JsonResponse({}, status=505) """Translation Code Ends Here""" sys.stdout = original_stdout """Juggernaut Payment Updation""" # sys.stdout = original_stdout if request.session.get("juggernaut_pages_deduction"): # script_translated = ScriptTranslations.objects.get( # translation_id=request.session.get('translation_id', None)) update_juggernaut(request, user_id=request.user.id, service_name="conversion", conversion_pages=request.session['juggernaut_pages_deduction'], associated_project=original_script, translation_language=request.session['language_set']) original_script.is_juggernaut_used = True # if script_original.languages_juggernaut != "": # # script_original.languages_juggernaut = str(script_original.languages_juggernaut) + "," + str( # # script_translated.dial_dest_language) # else: # script_original.languages_juggernaut = str(script_translated.dial_dest_language) original_script.save() """Juggernaut Payment Updation Done""" """Blockchain Upload Starts here""" # sys.stdout = original_stdout scriptconversion = {} try: print("trying blockchain 1") current_datetime = datetime.datetime.now() if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): obj = ScriptTranslations.objects.get(translation_id=request.session.get('translation_id', None)) obj2 = MNFScriptDatabase.objects.get(script_id=script_id) temp1 = str(obj2.script) temp2 = str(obj.translated_script_path) uploaded_script = f"{basePath}/media/{temp1}" translated_scripttt = f"{basePath}{temp2}" print("blockchain script conversion 3") with open(uploaded_script, 'rb') as f: hash = uploadDataToIPFSNode(f) scriptconversion["original_scriptFile_hash"] = hash scriptconversion["original_scriptFile_path"] = uploaded_script scriptconversion["date_at"] = current_datetime.strftime("%Y-%m-%d %H:%M:%S") print("blockchain script conversion 4") with open(translated_scripttt, 'rb') as f1: hash = uploadDataToIPFSNode(f1) scriptconversion["translated_scriptFile_hash"] = hash scriptconversion["translated_scriptFile_path"] = translated_scripttt print("blockchain script conversion 5") blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) UserId = blockchain_obj.user_id Project = request.session.get('translation_id', None) Data = str(scriptconversion) userPrivateKey = blockchain_obj.privateKey userkey = decryptionOfPrivate(userPrivateKey) tx_id,tx_gas_fee= UploadConversionData(OWNER_KEY, blockchain_obj.publicKey, UserId, str(Project), Data) print("Tx id -> ", tx_id) # user_infos = user_info(tx_hash=tx_id, service="Conversion", gas_fee=2345432345123456) # addition_result = user_infos.update_info(request) try: user_infos = user_info(tx_hash=tx_id, service="Conversion", gas_fee=tx_gas_fee) addition_result = user_infos.update_info(request) except Exception as e: print("Error:",e) print("blockchain script conversion 6") certificatepath = certificateGenrate(request.user.username, "script conversion", hash) hash = hash_decrypation(hash) to_email = [request.user.email] email_code = 'BL1' key_value = { "service": "script conversion", "hash": hash, "public key": blockchain_obj.publicKey, "private key": userkey.decode('utf-8'), "Transaction Hash": tx_id } sendmail(to_email=to_email, email_code=email_code, key_value=key_value, filePath=certificatepath) except Exception as e: print("Error in blockchain is", e) """Blockchain Upload Ends here""" """Translation Completion mail here""" to = request.user.email key_value = { "User": request.user.username, "title": original_script.script_title } sendmail(to_email=[to], email_code="PP18", key_value=key_value) """Translation Completion mail done""" """Vetting Process if Choosen""" # sys.stdout = original_stdout if translated_script.lpp: # obj = ScriptTranslations.objects.get(translation_id=request.session.get('translation_id', None)) # obj.lpp = True # obj.save() X = LPPTASKDatabase() X.user_id = translated_script.user_id X.usernote = "Kindly check if the translated file is correct as per the Uploaded Document!" X.translated_script = translated_script X.generated_from = "conversion" temp_amount = request.session["amount_without_subscrption"] X.amoutgiventolpp_action = round((temp_amount / 2), 2) X.amoutgiventolpp_dialogue = round((temp_amount / 2), 2) X.save() task_assigner(int(X.task_id), "conversion") """Vetting Process Done""" translated_script = ScriptTranslations.objects.get(translation_id=request.session.get("translation_id", None)) translated_script.status = "Completed" translated_script.save() keys_to_delete = [] for key, value in request.session.items(): if key not in ['_auth_user_id', '_auth_user_backend', '_auth_user_hash', '_session_init_timestamp_']: keys_to_delete.append(key) print("Keys to be deleted is ->", keys_to_delete) for key in keys_to_delete: del request.session[key] return JsonResponse({}, status=200) # def is_processing_complete(request): # # script_id = request.GET["script_id"] # obj = MNFScriptDatabase.objects.filter(user_id=request.user.id).last() # print("Processing Chal Rahi hai", obj.progress) # if obj.progress == 100: # return JsonResponse({"status": "success"}, status=200) # else: # return JsonResponse({"status": "pending", "progress": obj.progress}, status=202) # # # # -> At 10sec intervals check if conversion completed # def is_converted(request): # script_id = request.GET["script_id"] # if request.GET["centralised"] == "yes": # z = Conversion_link.objects.get( # script_name=MNFScriptDatabase_2.objects.get(script_id=script_id) # ) # objs = z.conversions.all() # for indx, obji in enumerate(objs): # if indx == len(objs) - 1: # obj = obji # else: # pass # else: # obj = MNFScriptDatabase.objects.get(script_id=script_id) # print("obj.script convetred function", obj.translated_script_path) # if not obj.translated_script_path: # return JsonResponse({"status": "pending"}, status=202) # else: # return JsonResponse({"status": "success"}, status=200) # def audit_checking(request): # orignal_stdoout = sys.stdout # now = datetime.datetime.now() # current_time = now.strftime("%H:%M:%S") # print("Time is ->", current_time) # # # with open(rf"{basePath}/conversion/translation/file_lines.txt", 'r') as file: # # lines = file.readlines() # name_script = f"data_{current_time}" # script1 = rf"/home/user/mnf/project/MNF/media/scripts/fddfd_testing_112_7fEG7oq.docx" # print("Here it is") # doc = open(script1, 'rb').read() # file = ContentFile( # doc, # (script1.split("/"))[-1], # ) # language_code = "en" # result = filesystem.new_screenplay( # request.user, # request.user.username, # str(name_script), # file, # "script-original", # language_code, # ) # sys.stdout =orignal_stdoout # audit_id = result.get("script", {}).get("id") # while True: # try: # status = ScriptAuditModel.objects.get( # script=Script.objects.get(id=audit_id)).status # if status == "SUCCESS": # to_email = [request.user.email] # email_code = 'SB1' # sendmail(to_email=to_email, email_code=email_code) # break # elif status == "FAILURE": # to_email = [request.user.email] # email_code = 'SB2' # sendmail(to_email=to_email, email_code=email_code) # print( # "Script Audit failed due to some internal error." # " If you have made any payment for conversion " # "that will be refunded") # # email for failure # to = request.user.email # key_value = { # "User": request.user.username, # } # sendmail(to_email=[to], email_code="PP21", key_value=key_value) # return JsonResponse({}, status=505) # elif status == "STARTED" or status == "PENDING": # pass # except: # pass # time.sleep(1) # file_path_ = filesystem.get_file_path(audit_id, "script-csv") # # script_data = MNFScriptDatabase.objects.get(script_id=script_id) # # script_data.audit_id = str(audit_id) # # script_data.save() # try: # df = pd.read_csv(file_path_, encoding="utf-8") # except UnicodeError: # df = pd.read_csv(file_path_, encoding="utf-16") # pd.set_option('display.max_rows', None) # pd.set_option('display.max_columns', None) # dataframe = df # list_of_lists = " ".join(dataframe.values.tolist()) # # for list in list_of_lists: # # final_list.append() # return JsonResponse({"Data": json.loads(list_of_lists)}) # async def audit_func(request, script_file_path, script_id, list_of_lists): # # # # # return audit_id # return [list_of_lists, [audit_id]] # -> Actually Running Translation and Transliteration of script def make_conversion(request): from django.db import transaction for key,value in request.session.items(): print(f"{key} => {value}") # original_stdout = sys.stdout # Your view logic here if request.method == "POST": original_stdout = sys.stdout # start_time = time.time() # f = open(f"/home/user/mnf/project/MNF/log/debugconversion_{(((str(request.POST.get('script_file_path')).split('/'))[-1]).split('.'))[0]}.txt", "w") # sys.stdout = f print("Conversion Process Started") # now = datetime.datetime.now() # current_time = now.strftime("%H:%M:%S") # print(current_time) """Initializing Variables""" script_file_path = request.POST.get("script_file_path") request_id = request.POST.get("request_id") str1 = str(script_file_path) if str1[41:45] == "user": script_file_path = "/home/" + str(str1[41:]) script_id = request.POST.get("script_id") dial_conv_script = request.POST.get("dial_conv_script") dial_src_lang = request.POST.get("dial_src_lang") non_dial_src_lang = request.POST.get("non_dial_src_lang") dial_src_script = request.POST.get("dial_src_script") restrict_to_five = request.POST.get("restrict_to_five") option3 = request.POST.get("option3") option4 = request.POST.get("option4") option5 = request.POST.get("option5") option6 = request.POST.get("option6") # -> Saving options 3,4,5,6 script_data = MNFScriptDatabase.objects.get(script_id = script_id) # script_data.option3 = option3 # script_data.option4 = option4 # script_data.option5 = option5 # script_data.option6 = option6 # script_data.save() """Audit Code starts here""" print("Conversion Auditing is starting") scripttt = script_file_path name_script = str(((((scripttt).split("/"))[-1]).split("."))[0]) print("name of script", name_script) print("sample script", request.POST.get("sample_id")) print("existing_script", request.session.get("existing_script")) """if file is not a sample script and not a existing script then only audit it""" if not request.session.get('existing_script') and not request.POST["sample_id"]: print("----Auditing----") script1 = str(scripttt) doc = open(script1, 'rb').read() file = ContentFile( doc, (script1.split("/"))[-1], ) language_code = "en" result = filesystem.new_screenplay( request.user, request.user.username, str(name_script), file, "script-original", language_code, ) sys.stdout = original_stdout print("Out of Audit Function") audit_id = result.get("script", {}).get("id") while True: try: with transaction.atomic(): status = ScriptAuditModel.objects.get( script=Script.objects.get(id=audit_id)).status if status == "SUCCESS": to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) break elif status == "FAILURE": to_email = [request.user.email] email_code = 'SB2' sendmail(to_email=to_email, email_code=email_code) print( "Script Audit failed due to some internal error." " If you have made any payment for conversion " "that will be refunded") # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) return JsonResponse({}, status=505) elif status == "STARTED" or status == "PENDING": pass except: pass time.sleep(1) file_path_ = filesystem.get_file_path(audit_id, "script-csv") script_data = MNFScriptDatabase.objects.get(script_id=script_id) script_data.audit_id = str(audit_id) script_data.save() try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() print("Audit Done") elif request.POST.get("sample_id"): sample_script = SampleScript.objects.get(sample_id=request.GET["sample_id"]) if sample_script.audit_id: audit_id = sample_script.audit_id file_path_ = filesystem.get_file_path(sample_script.audit_id, "script-csv") try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) # sys.stdout = original_stdout dataframe = df list_of_lists = dataframe.values.tolist() else: print("----Auditing----") script1 = str(scripttt) doc = open(script1, 'rb').read() file = ContentFile( doc, (script1.split("/"))[-1], ) language_code = "en" result = filesystem.new_screenplay( request.user, request.user.username, str(name_script), file, "script-original", language_code, ) audit_id = result.get("script", {}).get("id") while True: try: status = ScriptAuditModel.objects.get( script=Script.objects.get(id=audit_id)).status if status == "SUCCESS": to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) break elif status == "FAILURE": to_email = [request.user.email] email_code = 'SB2' sendmail(to_email=to_email, email_code=email_code) # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) return JsonResponse({}, status=505) elif status == "STARTED" or status == "PENDING": pass except: pass time.sleep(1) file_path_ = filesystem.get_file_path( audit_id, "script-csv") sample_script.audit_id = str(audit_id) sample_script.save() try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() elif request.session.get('existing_script'): if MNFScriptDatabase.objects.get(script_id=script_id).audit_id: audit_id = MNFScriptDatabase.objects.get(script_id=script_id).audit_id file_path_ = filesystem.get_file_path(audit_id, "script-csv") try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() else: print("----Auditing----") script1 = str(scripttt) doc = open(script1, 'rb').read() file = ContentFile( doc, (script1.split("/"))[-1], ) language_code = "en" result = filesystem.new_screenplay( request.user, request.user.username, str(name_script), file, "script-original", language_code, ) audit_id = result.get("script", {}).get("id") while True: try: status = ScriptAuditModel.objects.get( script=Script.objects.get(id=audit_id)).status if status == "SUCCESS": to_email = [request.user.email] email_code = 'SB1' sendmail(to_email=to_email, email_code=email_code) break elif status == "FAILURE": to_email = [request.user.email] email_code = 'SB2' sendmail(to_email=to_email, email_code=email_code) # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) return JsonResponse({}, status=505) elif status == "STARTED" or status == "PENDING": pass except: pass time.sleep(1) file_path_ = filesystem.get_file_path( audit_id, "script-csv") script_data = MNFScriptDatabase.objects.get(script_id=script_id) script_data.audit_id = str(audit_id) script_data.save() try: df = pd.read_csv(file_path_, encoding="utf-8") except UnicodeError: df = pd.read_csv(file_path_, encoding="utf-16") pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) dataframe = df list_of_lists = dataframe.values.tolist() print("Audit Done") """Translation Code Starts Here""" sys.stdout = original_stdout print("Conversion Translation is Starting") # - Convert Process Start Mail to = request.user.email key_value = {"User": request.user.username} sendmail(to_email=[to], email_code="PP17", key_value=key_value) # subject = "All Good Email test1" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) try: translate_function( request, audit_id, list_of_lists, script_file_path, script_id, request.session.get('translation_id', None), dial_src_lang, non_dial_src_lang, dial_src_script, restrict_to_five, option3, option4, option5, option6, request.POST.get("centralised"), request.POST.get("sample_id"), request.POST.get("sample_title"), request.session.get('existing_script', None) ) except Exception as e: print("Error in Conversion is:", e) print("Script translation failed due to some code error. If you have made any payment for conversion" " that will be refunded") # email for failure to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) # auto refund code auto_refund(ScriptTranslations.objects.get( translation_id=request.session.get('translation_id', None)).central_payment_id) # f.close() return JsonResponse({}, status=505) """Translation Code Ends Here""" """Juggernaut Payment Updation""" # sys.stdout = original_stdout if request.session.get("juggernaut_pages_deduction"): script_original = MNFScriptDatabase.objects.get(script_id=script_id) # script_translated = ScriptTranslations.objects.get( # translation_id=request.session.get('translation_id', None)) update_juggernaut(request, user_id=request.user.id, service_name="conversion", conversion_pages=request.session['juggernaut_pages_deduction'], associated_project=script_original, translation_language=request.session['language_set']) script_original.is_juggernaut_used = True # if script_original.languages_juggernaut != "": # # script_original.languages_juggernaut = str(script_original.languages_juggernaut) + "," + str( # # script_translated.dial_dest_language) # else: # script_original.languages_juggernaut = str(script_translated.dial_dest_language) script_original.save() """Juggernaut Payment Updation Done""" """Blockchain Upload Starts here""" # sys.stdout = original_stdout scriptconversion = {} try: print("trying blockchain 1") current_datetime = datetime.datetime.now() if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): obj = ScriptTranslations.objects.get(translation_id=request.session.get('translation_id', None)) obj2 = MNFScriptDatabase.objects.get(script_id=script_id) temp1 = (str(obj2.script_file_path).split("media/"))[1] temp2 = str(obj.translated_script_path) uploaded_script = f"{basePath}/media/{temp1}" translated_script = f"{basePath}{temp2}" print("blockchain script conversion 3") with open(uploaded_script, 'rb') as f: hash = uploadDataToIPFSNode(f) scriptconversion["original_scriptFile_hash"] = hash scriptconversion["original_scriptFile_path"] = uploaded_script scriptconversion["date_at"] = current_datetime.strftime("%Y-%m-%d %H:%M:%S") print("blockchain script conversion 4") with open(translated_script, 'rb') as f1: hash = uploadDataToIPFSNode(f1) scriptconversion["translated_scriptFile_hash"] = hash scriptconversion["translated_scriptFile_path"] = translated_script print("blockchain script conversion 5") blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) UserId = blockchain_obj.user_id Project = request.session.get('translation_id', None) Data = str(scriptconversion) userPrivateKey = blockchain_obj.privateKey userkey = decryptionOfPrivate(userPrivateKey) tx_id = UploadConversionData(OWNER_KEY, blockchain_obj.publicKey, UserId, str(Project), Data) user_infos = user_info(tx_hash=tx_id, service="Conversion", gas_fee=1234567888882) addition_result = user_infos.update_info(request) print("blockchain script conversion 6") certificatepath = certificateGenrate(request.user.username, "script conversion", hash) hash = hash_decrypation(hash) to_email = [request.user.email] email_code = 'BL1' key_value = { "service": "script conversion", "hash": hash, "public key": blockchain_obj.publicKey, "private key": userkey.decode('utf-8'), "Transaction Hash": tx_id } sendmail(to_email=to_email, email_code=email_code, key_value=key_value, filePath=certificatepath) except Exception as e: print("Error in blockchain is", e) """Blockchain Upload Ends here""" """Translation Completion mail here""" # sys.stdout = original_stdout to = request.user.email key_value = { "User": request.user.username, "title": (((str(obj2.script_file_path).split("/"))[-1]).split("."))[0] } sendmail(to_email=[to], email_code="PP18", key_value=key_value) """Translation Completion mail done""" """Vetting Process if Choosen""" # sys.stdout = original_stdout if request.POST.get("to_be_vetted_by_lpp") == "on": obj = ScriptTranslations.objects.get(translation_id=request.session.get('translation_id', None)) obj.lpp = True obj.save() X = LPPTASKDatabase() X.user_id = obj.user_id X.usernote = "Kindly check if the translated file is correct as per the Uploaded Document!" X.translated_script = obj X.generated_from = "conversion" temp_amount = request.session["amount_without_subscrption"] X.amoutgiventolpp_action = round((temp_amount / 2), 2) X.amoutgiventolpp_dialogue = round((temp_amount / 2), 2) X.save() # task_assigner(int(X.task_id), "conversion") """Vetting Process Done""" # Conversion(request).start() keys_to_delete = [] for key, value in request.session.items(): if key not in ['_auth_user_id', '_auth_user_backend', '_auth_user_hash', '_session_init_timestamp_']: keys_to_delete.append(key) print("Keys to be deleted is ->", keys_to_delete) for key in keys_to_delete: del request.session[key] # print("Script Translated successfully and Sent for Vetting if chosen") # profile.disable() # profile.print_stats(sort='cumulative') # f.close() sys.stdout = original_stdout # print("Time Taken For Conversion Processing is ->", time.time() - start_time) return JsonResponse({}, status=200) # -> For Viewing Your Conversion @login_required(login_url="/PersonalLogin-2") def view_conversion_bkp(request): start_time = time.time() # get data from the blockchain for ppt if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): try: ppt = [] blockchain_obj = UserCredentialsForBlockchain.objects.get( user=request.user) projectIds = getUserprojectIds(blockchain_obj.user_id) # Print array values from the last element to the first ppt_all = len(projectIds) for i in range(len(projectIds) - 1, -1, -1): privatekey = blockchain_obj.privateKey user_id = blockchain_obj.user_id Project = projectIds[i] private_Key = decryptionOfPrivate(privatekey) status, getData = getPPTConversion( private_Key.decode('utf-8'), user_id, Project) if status == True: data1 = getData[1] converted_dict = eval(data1) download_file_System(converted_dict.get( "ppt_scriptFile_hash"), converted_dict.get("ppt_scriptFile_path")) download_file_System(converted_dict.get( "translated_ppt_hash"), converted_dict.get("translated_ppt_path")) converted_dict["vetted_file_url"]=decryptionOfUrl(converted_dict.get("vetted_file_hash")) converted_dict["orginal_file_url"]=decryptionOfUrl(converted_dict.get("ppt_scriptFile_hash")) converted_dict["translate_file_url"]=decryptionOfUrl(converted_dict.get("translated_ppt_hash")) ppt.append(converted_dict) except: ppt = pptconversion.objects.filter( user_id=request.user.id).order_by("-date_at") ppt_all = pptconversion.objects.filter( user_id=request.user.id).count() else: ppt = pptconversion.objects.filter( user_id=request.user.id).order_by("-date_at") ppt_all = pptconversion.objects.filter(user_id=request.user.id).count() if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): obj = [] blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) script_projectIds = scriptGetUserprojectIds(blockchain_obj.user_id) number = len(script_projectIds) for i in range(len(script_projectIds) - 1, -1, -1): privatekey = blockchain_obj.privateKey user_id =blockchain_obj.user_id Project= script_projectIds[i] private_Key = decryptionOfPrivate(privatekey) status,getData = getConversion(private_Key.decode('utf-8'),user_id,Project) if status == True: data1 = getData[1] converted_dict = eval(data1) # download_file_System(converted_dict.get("original_scriptFile_hash"),converted_dict.get("original_scriptFile_path")) # download_file_System(converted_dict.get("translated_scriptFile_hash"),converted_dict.get("translated_scriptFile_path")) converted_dict["original_scriptFile_url"]=viewDecryptionOfUrl(converted_dict.get("original_scriptFile_hash")) converted_dict["translated_scriptFile_url"]=viewDecryptionOfUrl(converted_dict.get("translated_scriptFile_hash")) converted_dict["translated_docxscriptFile_url"]=decryptionOfUrl(converted_dict.get("translated_docxscriptFile_hash")) obj.append(converted_dict) else: number = ReferUser.objects.filter(refferedBy=request.user).count() obj = MNFScriptDatabase.objects.filter( user_id=request.user).order_by("-date_at") # number = ReferUser.objects.filter(refferedBy=request.user).count() # obj = MNFScriptDatabase.objects.filter( # user_id=request.user).order_by("-date_at") script_path = [] pq = 0 for i in obj: if i.get("translated_script_path")!= "": script_path.append(i.get("translated_script_path")) pq += 1 script_is_vetted = [] tasks = LPPTASKDatabase.objects.filter(user_id=request.user) for script in obj: script_is_vetted.append({"0": "0", "1": "", "2": script}) for task in tasks: if task.translated_script: if script.get("script_id") == task.translated_script.script_id: script_is_vetted[-1]["0"] = "1" if task.outputfile: script_is_vetted[-1]["1"] = task.outputfile else: if task.lppacceptancetime_dialogue and task.completiontime_action: script_is_vetted[-1]["1"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_dialogue - tz.now()).total_seconds()) / 60 / 60) / 24)}" elif task.lppacceptancetime_action: script_is_vetted[-1]["1"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_action - tz.now()).total_seconds()) / 60 / 60) / 24)}" else: script_is_vetted[-1]["1"] = "Vetting of your file has not yet started" lenV = len(script_path) countOfScript = len(script_is_vetted) print(pq, script_is_vetted, script_path, "view conversion data99997") # -> Getting all Books # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # projectIds = getUserprojectIds(blockchain_obj.user_id) # for i in range(len(projectIds) - 1, -1, -1): # privatekey = blockchain_obj.privateKey # user_id =blockchain_obj.user_id # Project= projectIds[i] # private_Key = decryptionOfPrivate(privatekey) # status,getData = getConversion(private_Key.decode('utf-8'),user_id,Project) # if status == True: # data1 = getData[1] # converted_dict = eval(data1) # download_file_System(converted_dict.get("original_bookFile_hash"),converted_dict.get("original_bookFile_path")) # download_file_System(converted_dict.get("translated_bookFile_hash"),converted_dict.get("translated_bookFile_path")) # else: all_books = BookConversion.objects.filter( user_id=request.user).filter(translated_book_pdf__isnull=False).order_by("-date_at") # no_books = 0 # for i in obj: # if i.translated_book_pdf != "": # no_books += 1 # return render( # request, # "conversion/viewConvertedBooks.html", # {"script_path": obj22, "pqw": pq2}, # ) print("rhis is data 777", ppt, "//////////********////////", ppt_all) end_time = time.time() print("-------------Taken Time for input processing->", end_time - start_time) return render( request, "conversion/stored_conversions.html", { "script_path": obj, "pq": pq, "number": number, "vettdata": script_is_vetted, "totalScript": countOfScript, "ppt": ppt, "ppt_all": ppt_all, "books": all_books, "number_books": len(all_books) }, ) # def view_conversion2(request): # # if request.method == "GET": # # number = ReferUser.objects.filter(refferedBy=request.user).count() # obj = ScriptTranslations.objects.filter( # user_id=request.user).order_by("-date_translated") # # pq = 0 # # # script_is_vetted = [] # # tasks = LPPTASKDatabase.objects.filter(user_id=request.user) # # for script in obj: # # script_is_vetted.append({"0": "0", "1": "", "2": script, "3": ""}) # # for task in tasks: # # if task.translated_script: # # if script.translation_id == task.translated_script.translation_id: # # script_is_vetted[-1]["0"] = "1" # # if task.outputfile: # # script_is_vetted[-1]["1"] = task.outputfile # # else: # # if task.lppacceptancetime_dialogue and task.completiontime_action: # # script_is_vetted[-1][ # # "3"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_dialogue - tz.now()).total_seconds()) / 60 / 60) / 24)} day" # # elif task.lppacceptancetime_action: # # script_is_vetted[-1][ # # "3"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_action - tz.now()).total_seconds()) / 60 / 60) / 24)} day" # # else: # # script_is_vetted[-1]["3"] = "Vetting of your file has not yet started" # # # lenV = len(script_path) # countOfScript = len(obj) # # return render( # request, # "conversion2/stored_conversions.html", # { # "script_path": obj, # "totalScript": countOfScript, # }, # ) def view_conversion2(request): if request.method == "GET": # number = ReferUser.objects.filter(refferedBy=request.user).count() obj = ScriptTranslations.objects.filter( user_id=request.user).order_by("-date_translated") pq = 0 for i in obj: if str(i.status) in ["Completed", "Failed"]: pq += 1 elif i.lpp == True: pq += 1 # script_is_vetted = [] # tasks = LPPTASKDatabase.objects.filter(user_id=request.user) # for script in obj: # script_is_vetted.append({"0": "0", "1": "", "2": script, "3": ""}) # for task in tasks: # if task.translated_script: # if script.translation_id == task.translated_script.translation_id: # script_is_vetted[-1]["0"] = "1" # if task.outputfile: # script_is_vetted[-1]["1"] = task.outputfile # else: # if task.lppacceptancetime_dialogue and task.completiontime_action: # script_is_vetted[-1][ # "3"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_dialogue - tz.now()).total_seconds()) / 60 / 60) / 24)} day" # elif task.lppacceptancetime_action: # script_is_vetted[-1][ # "3"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_action - tz.now()).total_seconds()) / 60 / 60) / 24)} day" # else: # script_is_vetted[-1]["3"] = "Vetting of your file has not yet started" # lenV = len(script_path) countOfScript = len(obj) return render( request, "conversion2/stored_conversions.html", { "script_path": obj, "totalScript": pq, }, ) @login_required(login_url="/PersonalLogin-2") def view_conversion(request): start_time = time.time() # get data from the blockchain for ppt # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # try: # ppt = [] # blockchain_obj = UserCredentialsForBlockchain.objects.get( # user=request.user) # projectIds = getUserprojectIds(blockchain_obj.user_id) # # Print array values from the last element to the first # ppt_all = len(projectIds) # for i in range(len(projectIds) - 1, -1, -1): # privatekey = blockchain_obj.privateKey # user_id = blockchain_obj.user_id # Project = projectIds[i] # private_Key = decryptionOfPrivate(privatekey) # status, getData = getPPTConversion( # private_Key.decode('utf-8'), user_id, Project) # if status == True: # data1 = getData[1] # converted_dict = eval(data1) # download_file_System(converted_dict.get( # "ppt_scriptFile_hash"), converted_dict.get("ppt_scriptFile_path")) # download_file_System(converted_dict.get( # "translated_ppt_hash"), converted_dict.get("translated_ppt_path")) # converted_dict["vetted_file_url"] = decryptionOfUrl(converted_dict.get("vetted_file_hash")) # converted_dict["orginal_file_url"] = decryptionOfUrl(converted_dict.get("ppt_scriptFile_hash")) # converted_dict["translate_file_url"] = decryptionOfUrl(converted_dict.get("translated_ppt_hash")) # # ppt.append(converted_dict) # # except: # ppt = pptconversion.objects.filter( # user_id=request.user.id).order_by("-date_at") # ppt_all = pptconversion.objects.filter( # user_id=request.user.id).count() # # else: ppt = pptconversion.objects.filter( user_id=request.user.id).order_by("-date_at") ppt_all = pptconversion.objects.filter(user_id=request.user.id).filter(translated_ppt__isnull=False, translated_ppt__gt='').count() # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # obj = [] # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # script_projectIds = scriptGetUserprojectIds(blockchain_obj.user_id) # print("All Script Ids *********----->", script_projectIds) # number = len(script_projectIds) # for i in range(len(script_projectIds) - 1, -1, -1): # privatekey = blockchain_obj.privateKey # user_id = blockchain_obj.user_id # Project = script_projectIds[i] # private_Key = decryptionOfPrivate(privatekey) # status, getData = getConversion(private_Key.decode('utf-8'), user_id, Project) # if status == True: # data1 = getData[1] # converted_dict = eval(data1) # # download_file_System(converted_dict.get("original_scriptFile_hash"),converted_dict.get("original_scriptFile_path")) # # download_file_System(converted_dict.get("translated_scriptFile_hash"),converted_dict.get("translated_scriptFile_path")) # converted_dict["original_scriptFile_url"] = viewDecryptionOfUrl( # converted_dict.get("original_scriptFile_hash")) # converted_dict["translated_scriptFile_url"] = viewDecryptionOfUrl( # converted_dict.get("translated_scriptFile_hash")) # converted_dict["translated_docxscriptFile_url"] = decryptionOfUrl( # converted_dict.get("translated_docxscriptFile_hash")) # obj.append(converted_dict) # else: number = ReferUser.objects.filter(refferedBy=request.user).count() # obj = MNFScriptDatabase.objects.filter( # user_id=request.user).order_by("-date_at") obj = ScriptTranslations.objects.filter( user_id=request.user).order_by("-date_translated") # number = ReferUser.objects.filter(refferedBy=request.user).count() # obj = MNFScriptDatabase.objects.filter( # user_id=request.user).order_by("-date_at") script_path = [] pq = 0 for i in obj: if i.translated_script_path != "": # script_path.append(i.get("translated_script_path")) pq += 1 script_is_vetted = [] tasks = LPPTASKDatabase.objects.filter(user_id=request.user) for script in obj: script_is_vetted.append({"0": "0", "1": "", "2": script, "3":""}) for task in tasks: if task.translated_script: if script.translation_id == task.translated_script.translation_id: script_is_vetted[-1]["0"] = "1" if task.outputfile: script_is_vetted[-1]["1"] = task.outputfile else: if task.lppacceptancetime_dialogue and task.completiontime_action: script_is_vetted[-1][ "3"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_dialogue - tz.now()).total_seconds()) / 60 / 60) / 24)} day" elif task.lppacceptancetime_action: script_is_vetted[-1][ "3"] = f"Vetting of your file will complete in {math.ceil((((task.deadlinetolpp_action - tz.now()).total_seconds()) / 60 / 60) / 24)} day" else: script_is_vetted[-1]["3"] = "Vetting of your file has not yet started" # lenV = len(script_path) countOfScript = len(script_is_vetted) # print(pq, script_is_vetted, script_path, "view conversion data99997") # -> Getting all Books # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # projectIds = getUserprojectIds(blockchain_obj.user_id) # for i in range(len(projectIds) - 1, -1, -1): # privatekey = blockchain_obj.privateKey # user_id =blockchain_obj.user_id # Project= projectIds[i] # private_Key = decryptionOfPrivate(privatekey) # status,getData = getConversion(private_Key.decode('utf-8'),user_id,Project) # if status == True: # data1 = getData[1] # converted_dict = eval(data1) # download_file_System(converted_dict.get("original_bookFile_hash"),converted_dict.get("original_bookFile_path")) # download_file_System(converted_dict.get("translated_bookFile_hash"),converted_dict.get("translated_bookFile_path")) # else: all_books = BookConversion.objects.filter( user_id=request.user).filter(translated_book_pdf__isnull=False).order_by("-date_at") # no_books = 0 # for i in obj: # if i.translated_book_pdf != "": # no_books += 1 # return render( # request, # "conversion/viewConvertedBooks.html", # {"script_path": obj22, "pqw": pq2}, # ) # print("rhis is data 777", ppt, "//////////********////////", ppt_all) end_time = time.time() print("-------------Taken Time for input processing->", end_time - start_time) return render( request, "conversion/stored_conversions.html", { "script_path": obj, "pq": pq, "number": number, "vettdata": script_is_vetted, "totalScript": countOfScript, "ppt": ppt, "ppt_all": ppt_all, "books": all_books, "number_books": len(all_books) }, ) def fetch_data_blockchain(request): if request.method == "POST": id = str(request.POST.get("id")) service = str(request.POST.get("service")) type_file = request.POST.get("type_file") privatekey1 = request.POST.get("privateKey") translated_script = ScriptTranslations.objects.get(translation_id=str(id)) decryptionFunc = decryptionOfUrl if request.POST.get("type_file") == "original" else viewDecryptionOfUrl if service == "Script": type_file = "original_scriptFile_hash" if type_file == "original" else \ "translated_scriptFile_hash" try: if request.user == translated_script.user_id: blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) privatekey = blockchain_obj.privateKey user_id = blockchain_obj.user_id private_Key = decryptionOfPrivate(privatekey) with open("/home/mnfidea/mnf/MNF/app/Blockchain2/file_stroge.txt","a") as file01: file01.write("1.user private key-------------------" + str(private_Key) + str(request.user) +"\n") status, getData = getConversion(privatekey1, user_id, str(id)) if status == True: data1 = getData[1] converted_dict = eval(data1) print("Data Script ------------>",converted_dict) # converted_dict["original_scriptFile_url"] = viewDecryptionOfUrl( # converted_dict.get("original_scriptFile_hash")) # converted_dict["translated_scriptFile_url"] = viewDecryptionOfUrl( # converted_dict.get("translated_scriptFile_hash")) # converted_dict["translated_docxscriptFile_url"] = decryptionOfUrl( # converted_dict.get("translated_docxscriptFile_hash")) # decryptionFunc = decryptionOfUrl if request.POST.get("type_file") == "original" else viewDecryptionOfUrl # if request.POST.get("type_file") == "original": # download_file_System(converted_dict.get( # "original_scriptFile_hash"), converted_dict.get("original_scriptFile_path")) file_name = None if request.POST.get("type_file") == "original": file_name = str((str(converted_dict['original_scriptFile_path']).split("/"))[-1]) file_link = str(decryptionFunc(converted_dict.get(str(type_file)))) else: file_name = str((str(converted_dict['translated_scriptFile_path']).split("/"))[-1]) file_link = str(decryptionFunc(converted_dict.get(str(type_file)))) return JsonResponse({"status":True, "download_link": file_link, "file_name": str(file_name)}) else: try: current_datetime = datetime.datetime.now() if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): print("blockchain script conversion 2") obj = ScriptTranslations.objects.get(translation_id=id) obj2 = MNFScriptDatabase.objects.get(script_id=obj.script_link_id) temp1 = (str(obj2.script)) temp2 = str(obj.translated_script_path) uploaded_script = f"{basePath}/media/{temp1}" translated_script = f"{basePath}{temp2}" scriptconversion = {} print("blockchain script conversion 3") with open(uploaded_script, 'rb') as f: hash = uploadDataToIPFSNode(f) scriptconversion["original_scriptFile_hash"] = hash scriptconversion["original_scriptFile_path"] = uploaded_script scriptconversion["date_at"] = current_datetime.strftime( "%Y-%m-%d %H:%M:%S") print("blockchain script conversion 4") with open(translated_script, 'rb') as f1: hash = uploadDataToIPFSNode(f1) scriptconversion["translated_scriptFile_hash"] = hash scriptconversion["translated_scriptFile_path"] = translated_script # docx_file_path = translated_script.replace(".pdf", ".docx") # docxfile_name = docx_file_path.split("/")[-1] # docxfile_name ="translate_docx_file.docx" # # with open(docx_file_path, 'rb') as f2: # hash1 = uploadDataToIPFSNode(f2) # scriptconversion["translated_docxscriptFile_hash"] = hash1 # scriptconversion["docxfile_name"] = docxfile_name print("blockchain script conversion 5") blockchain_obj = UserCredentialsForBlockchain.objects.get( user=request.user) UserId = blockchain_obj.user_id Project = request.session.get('translation_id', None) Data = str(scriptconversion) userPrivateKey = blockchain_obj.privateKey userkey = decryptionOfPrivate(userPrivateKey) # hash1 = UploadConversionData(OWNER_KEY,blockchain_obj.publicKey, UserId, str(Project), Data) # transaction_hash = UploadConversionData(tx_id) tx_id = UploadConversionData(OWNER_KEY, blockchain_obj.publicKey, UserId, str(Project), Data) print("blockchain script conversion 6") print("scriptconversion hash >>>>>>>>>>>>>>>", hash) certificatepath = certificateGenrate(request.user.username, "script conversion", hash) hash = hash_decrypation(hash) to_email = [request.user.email] email_code = 'BL1' key_value = { "service": "script conversion", "hash": hash, "public key": blockchain_obj.publicKey, "private key": userkey.decode('utf-8'), "Transaction Hash": tx_id } sendmail(to_email=to_email, email_code=email_code, key_value=key_value, filePath=certificatepath) file_name = None if request.POST.get("type_file") == "original": file_name = str((str(scriptconversion['original_scriptFile_path']).split("/"))[-1]) file_link = str(decryptionFunc(scriptconversion.get(str(type_file)))) + "/" + str( file_name) else: file_link = str(decryptionFunc(scriptconversion.get(str(type_file)))) return JsonResponse( {"status": True, "download_link": file_link, "file_name": str(file_name)}) except Exception as e: print("Error is----------------*******************:", e) return JsonResponse({"status": False}) except Exception as e: # try: # current_datetime = datetime.datetime.now() # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # print("blockchain script conversion 2") # obj = ScriptTranslations.objects.get(translation_id=id) # obj2 = MNFScriptDatabase.objects.get(script_id=obj.script_link_id) # temp1 = (str(obj2.script_file_path).split("media/"))[1] # temp2 = str(obj.translated_script_path) # uploaded_script = f"{basePath}/media/{temp1}" # translated_script = f"{basePath}{temp2}" # scriptconversion = {} # print("blockchain script conversion 3") # with open(uploaded_script, 'rb') as f: # hash = uploadDataToIPFSNode(f) # scriptconversion["original_scriptFile_hash"] = hash # scriptconversion["original_scriptFile_path"] = uploaded_script # scriptconversion["date_at"] = current_datetime.strftime( # "%Y-%m-%d %H:%M:%S") # print("blockchain script conversion 4") # with open(translated_script, 'rb') as f1: # hash = uploadDataToIPFSNode(f1) # scriptconversion["translated_scriptFile_hash"] = hash # scriptconversion["translated_scriptFile_path"] = translated_script # # docx_file_path = translated_script.replace(".pdf", ".docx") # # docxfile_name = docx_file_path.split("/")[-1] # # docxfile_name ="translate_docx_file.docx" # # # # with open(docx_file_path, 'rb') as f2: # # hash1 = uploadDataToIPFSNode(f2) # # scriptconversion["translated_docxscriptFile_hash"] = hash1 # # scriptconversion["docxfile_name"] = docxfile_name # print("blockchain script conversion 5") # # blockchain_obj = UserCredentialsForBlockchain.objects.get( # # user=request.user) # # UserId = blockchain_obj.user_id # Project = request.session.get('translation_id', None) # Data = str(scriptconversion) # # userPrivateKey = blockchain_obj.privateKey # userkey = decryptionOfPrivate(userPrivateKey) # # hash1 = UploadConversionData(OWNER_KEY,blockchain_obj.publicKey, UserId, str(Project), Data) # # transaction_hash = UploadConversionData(tx_id) # tx_id = UploadConversionData(OWNER_KEY, blockchain_obj.publicKey, UserId, str(Project), Data) # print("blockchain script conversion 6") # print("scriptconversion hash >>>>>>>>>>>>>>>", hash) # certificatepath = certificateGenrate(request.user.username, "script conversion", hash) # hash = hash_decrypation(hash) # to_email = [request.user.email] # email_code = 'BL1' # key_value = { # "service": "script conversion", # "hash": hash, # "public key": blockchain_obj.publicKey, # "private key": userkey.decode('utf-8'), # "Transaction Hash": tx_id # } # sendmail(to_email=to_email, email_code=email_code, key_value=key_value, # filePath=certificatepath) # # file_name = None # if request.POST.get("type_file") == "original": # file_name = str((str(scriptconversion['original_scriptFile_path']).split("/"))[-1]) # file_link = str(decryptionFunc(scriptconversion.get(str(type_file)))) + "/" + str(file_name) # else: # file_link = str(decryptionFunc(scriptconversion.get(str(type_file)))) # # return JsonResponse({"status": True, "download_link": file_link, "file_name": str(file_name)}) # except Exception as e: print("Error is----------------*******************:",e) return JsonResponse({"status": False}) elif service == "PPT": type_file = "ppt_scriptFile_hash" if type_file == "original" else \ "vetted_file_hash" if type_file == "vetted" else "translated_ppt_hash" try: if request.user == pptconversion.objects.get(ppt_id=str(id)).user_id: blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) privatekey = blockchain_obj.privateKey user_id = blockchain_obj.user_id private_Key = decryptionOfPrivate(privatekey) status, getData = getPPTConversion(private_Key.decode('utf-8'), user_id, str(id)) if status == True: data1 = getData[1] converted_dict = eval(data1) file_link = str(decryptionOfUrl(converted_dict.get(str(type_file)))) file_name = file_name = str((str(converted_dict['ppt_scriptFile_path']).split("/"))[-1]) if request.POST.get("type_file") == "original" else str((str(converted_dict['translated_ppt_path']).split("/"))[-1]) return JsonResponse({"status": True, "download_link": file_link + "/" + str(file_name), "file_name":str(file_name)}) else: return JsonResponse({"status": False}) except Exception as e: print("Error is----------------*******************:", e) return JsonResponse({"status": False}) return HttpResponse("Get Request Not Allowed") # -> For Deleting your Conversion def delete_script(request, id): script_name = str(ScriptTranslations.objects.get( translation_id=id).script_link_id.script_title) obj = ScriptTranslations.objects.get(translation_id=id) # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # userkey =decryptionOfPrivate(blockchain_obj.privateKey) # print("function is calling.......",userkey.decode('utf-8'),blockchain_obj.user_id,obj.translation_id) # deleteConversion(OWNER_KEY,blockchain_obj.publicKey,blockchain_obj.user_id,obj.translation_id) obj.delete() to = request.user.email key_value = { "User": request.user.username, "script_name": str(script_name) } sendmail(to_email=[to], email_code="PP20", key_value=key_value) return HttpResponseRedirect("/conversion/view_conversion") # -> Feedback on Conversion by User def feedback_user(request): if request.method == "POST": x = ScriptTranslations.objects.get(translation_id=request.POST.get("mnfscriptid")) if str(request.POST.get("text")) == " " or str(request.POST.get("text")) == "": x.attention_feedback = "" else: x.attention_feedback = str(request.POST.get("text")) if str(request.POST.get("text2")) == " " or str(request.POST.get("text2")) == "": x.error_faced_feedback = "" else: x.error_faced_feedback = str(request.POST.get("text2")) if str(request.POST.get("text3")) == " " or str(request.POST.get("text3")) == "": x.improvement_feedback = "" else: x.improvement_feedback = str(request.POST.get("text3")) if request.POST.get("rating") == " " or request.POST.get("rating") == "": x.exp_rate = 0 else: x.exp_rate = int(request.POST.get("rating")) if request.POST.get("rating2") == " " or request.POST.get("rating2") == "": x.content_accuracy_rate = 0 else: x.content_accuracy_rate = int(request.POST.get("rating3")) if request.POST.get("rating3") == " " or request.POST.get("rating3") == "": x.translation_accuracy_rate = 0 else: x.translation_accuracy_rate = int(request.POST.get("rating2")) x.save() return redirect("view_conversion") # -> For Demo of Conversion def demo(request): number = ReferUser.objects.filter(refferedBy=request.user).count() return render(request, "conversion/demo.html", {"number": number}) # -> Some Random Function def announce(request): message = "" user = User.objects.all() cUser = request.user if cUser.is_superuser == True: if request.method == "POST": notification = request.POST.get("message") for i in user: var = Notifications(user_id=i, notification=notification) var.save() messgae = "notification sent successfull." return render(request, "conversion/announce.html", {"message": message}) else: return render(request, "conversion/announce.html", {}) else: message = " you need to be superuser" return render(request, "conversion/announce.html", {"message": message}) def conversion_payment(request): print("11111111111111111111199999999999999999999999999-----") print(request.POST.get("centralised")) print(request.POST.get("request_id")) if request.method == "POST": is_sample_script = False # <--- UNUSED CODE ---> if request.POST.get("centralised") == "yes": x = Conversions() print(str(request.POST.get("script_id"))) x.version_no = int( MNFScriptDatabase_2.objects.get( script_id=str(request.POST.get("script_id")) ).version_no ) # x.version_no = x.nondial_dest_language = languages.get( request.POST.get("nondial_dest_language") ) x.dial_dest_language = languages.get(request.POST.get("dial_dest_language")) x.dial_dest_script = request.POST.get("dial_dest_script") x.dial_src_language = request.POST.get("dial_src_lang") x.nondial_src_language = request.POST.get("non_dial_src_lang") x.dial_src_script = request.POST.get("dial_src_script") x.nondial_src_script = request.POST.get("non_dial_src_script") print( "Actionline Script Dest is:", request.POST.get("non_dial_dest_script") ) x.nondial_dest_script = request.POST.get("non_dial_dest_script") sampleScript = request.POST.get("SampleScript") dial_conv_script = "" x.languages = [ request.POST.get("nondial_dest_language"), request.POST.get("dial_dest_language"), ] dual_dial_script = request.POST.get("dual_dial_script") if dual_dial_script == "on": x.dual_dial_script = "Yes" else: x.dual_dial_script = "No" dial_conv_script = request.POST.get("dial_src_script1") opt3 = request.POST.get("opt3") opt4 = request.POST.get("opt4") opt5 = request.POST.get("opt5") opt6 = request.POST.get("opt6") x.numPages = request.session["numPages"] x.save() # try: # print("line 81999") if Conversion_link.objects.filter( script_name=MNFScriptDatabase_2.objects.get( script_id=str(request.POST.get("script_id")) ) ).exists(): z = Conversion_link.objects.get( script_name=MNFScriptDatabase_2.objects.get( script_id=str(request.POST.get("script_id")) ) ) z.conversions.add(x) z.save() # except: else: print("line 812999") z = Conversion_link() z.script_name = MNFScriptDatabase_2.objects.get( script_id=str(request.POST.get("script_id")) ) z.user_id = request.user z.save() z.conversions.add(x) z.save() # z = Conversions() # z.created_on = datetime.now() # z.dial_src_language = request.POST.get("dial_src_lang") # z.dial_dest_language = request.POST.get("dial_dest_language") # z.dial_dest_script = request.POST.get("dial_dest_script") # z.nondial_dest_language = request.POST.get("nondial_dest_language") # z.nondial_src_script = request.POST.get("non_dial_src_script") # z.dial_src_script = request.POST.get("dial_src_script") # z.dual_dial_script = x.dual_dial_script # z.save() context = { "script_id": str(request.POST.get("script_id")), "script_file_path": request.POST.get("fileUpload"), "dial_dest_language": x.dial_dest_language, "dial_dest_script": x.dial_dest_script, "nondial_dest_language": x.nondial_dest_language, "dial_conv_script": dial_conv_script, "dial_src_lang": x.dial_src_language, "non_dial_src_lang": x.nondial_src_language, "dial_src_script": x.dial_src_script, "dual_dial_script": x.dual_dial_script, "option3": opt3, "option4": opt4, "option5": opt5, "option6": opt6, "to_be_vetted_by_lpp": str(request.POST.get("to_be_vetted_by_lpp")), "centralised": str(request.POST.get("centralised")), "request_id": str(request.POST.get("request_id")), } else: if request.POST.get("existing_script"): print("Existing mein hu") request.session['existing_script'] = True script_uuid = request.POST["id"] x = MNFScriptDatabase.objects.get(id=script_uuid) numPages = x.numPages is_sample_script = x.sample_script if is_sample_script: sample_instance = x.sample_id fileurl = sample_instance.script_file_path.name else: print(request.POST.get("id"), "New Script") script_uuid = request.POST["id"] is_sample_script = request.POST.get("sample_id", False) and script_uuid == "1234567890" if is_sample_script: sample_instance = SampleScript.objects.get(sample_id=(request.POST.get("sample_id"))) fileurl = sample_instance.script_file_path.name x = MNFScriptDatabase() x.user_id = request.user x.script = fileurl x.sample_script = True x.sample_id = sample_instance elif MNFScriptDatabase.objects.filter(id=script_uuid).exists(): x = MNFScriptDatabase.objects.get(id=script_uuid) script_title = request.POST["script_title"] numPages = request.POST["numPages"] context = {} x.numPages = numPages x.script_id = "scr_" + str(int(time.time())) x.script_title = script_title.replace(" ", "_") x.author_name = request.POST.get("author_name") if request.POST.get("author_name")\ else request.user.username # For translation x.nondial_src_language = language_2_code.get(request.POST.get("non_dial_src_lang")) x.nondial_src_script = request.POST.get("non_dial_src_script") x.dial_src_language = language_2_code.get(request.POST.get("dial_src_lang")) x.dial_src_script = request.POST.get("dial_src_script") print("here i am 9898") """ Related to Sample Script Translations """ if is_sample_script: print("inside if of sample_id") # checking if the sample script has a folder or not for storing pre-created translations if os.path.exists( f"{basePath}/media/scripts/sample_script_translations/{sample_instance.script_title}" ): pass else: os.mkdir( f"{basePath}/media/scripts/sample_script_translations/{sample_instance.script_title}" ) name = ( (str(ntpath.basename(str(BASE_DIR) + fileurl)).split("."))[0] ) + ".pdf" print("checking file presence", name) print( f"{basePath}/media/scripts/sample_script_translations/{sample_instance.script_title}" f"/{language_2_code.get(request.POST.get('dial_src_lang'))}_{language_2_code.get(request.POST.get('dial_dest_lang'))}_" f"{language_2_code.get(request.POST.get('non_dial_src_lang'))}_{language_2_code.get(request.POST.get('non_dial_dest_lang'))}_" f"{request.POST.get('dial_src_script')}_{request.POST.get('dial_dest_script')}_{request.POST.get('non_dial_src_script')}_{request.POST.get('non_dial_dest_script')}_{name}" ) # check if translation already exists or not if os.path.isfile( f"{basePath}/media/scripts/sample_script_translations/{sample_instance.script_title}" f"/{language_2_code.get(request.POST.get('dial_src_lang'))}_{language_2_code.get(request.POST.get('dial_dest_lang'))}_" f"{language_2_code.get(request.POST.get('non_dial_src_lang'))}_{language_2_code.get(request.POST.get('non_dial_dest_lang'))}_" f"{request.POST.get('dial_src_script')}_{request.POST.get('dial_dest_script')}_{request.POST.get('non_dial_src_script')}_{request.POST.get('non_dial_dest_script')}_{name}" ): # fetch the pre stored_file x.save() translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = x translation_instance.nondial_dest_language = language_2_code.get(request.POST.get("non_dial_dest_lang")) translation_instance.nondial_dest_script = request.POST.get("non_dial_dest_script") translation_instance.dial_dest_language = language_2_code.get(request.POST.get("dial_dest_lang")) translation_instance.dial_dest_script = request.POST.get("dial_dest_script") # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(1, 15)]) # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(15, 29)]) # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(29, 39)]) # if request.POST.get("dual_dialogue_option") == "on": # translation_instance.dual_dial_script = True # translation_instance.left_dual_dial_lang = request.POST.get("dual_left_language") # translation_instance.left_dual_dial_script = request.POST.get("dual_left_script") # if request.POST.get("lpp_vetting") == "on": # translation_instance.lpp = True translation_instance.translated_script_path = ( f"/media/scripts/sample_script_translations/{sample_instance.script_title}" f"/{request.POST.get('dial_src_lang')}_{language_2_code.get(request.POST.get('dial_dest_lang'))}_" f"{request.POST.get('non_dial_src_lang')}_{language_2_code.get(request.POST.get('non_dial_dest_lang'))}_" f"{request.POST.get('dial_src_script')}_{request.POST.get('dial_dest_script')}_{request.POST.get('non_dial_src_script')}_{request.POST.get('non_dial_dest_script')}_{name}" ) translation_instance.save() # messages.success(request, 'You can now Check your Conversion in View Your Conversions !!!') # request.session['data_alert'] = 'You can now Check your Conversion in View Your Conversions !!!' return redirect("view_conversion2") # return render_to_response('conversion/conversion.html', message='You can now Check your Conversion in View Your Conversions !!!') # Adding Script id to be saved request.session["script_id"] = x.script_id """ less than 5 pages condition """ if is_sample_script or int(numPages) <= 5: print("Sample Script or Free Script") x.save() translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = x translation_instance.nondial_dest_language = language_2_code.get(request.POST.get("non_dial_dest_lang")) translation_instance.nondial_dest_script = request.POST.get("non_dial_dest_script") translation_instance.dial_dest_language = language_2_code.get(request.POST.get("dial_dest_lang")) translation_instance.dial_dest_script = request.POST.get("dial_dest_script") # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(1, 15)]) # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(15, 29)]) # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(29, 39)]) if request.POST.get("dual_dialogue_option") == "on": translation_instance.dual_dial_script = True translation_instance.left_dual_dial_lang = request.POST.get("dual_left_language") translation_instance.left_dual_dial_script = request.POST.get("dual_left_script") translation_instance.save() request.session['translation_id'] = str(translation_instance.translation_id) return render(request, "conversion/thanksconversion.html", {}) # -> Juggernaut Package Handling of existing script elif request.POST.get("existing_script"): """ existing script handling """ print("inside existing script code block") request.session['existing_script'] = request.POST.get("existing_script") if x.is_juggernaut_used: print("sopop 3") # juggernaut_instance = JuggernautPackage.objects.get(user_id = request.user.id) # langs_list_jugg = [item.strip() for item in list(str(x.languages_juggernaut).split(","))] # print("List of Juggernaut Languages", langs_list_jugg, dial_dest_language) response_jugg = check_juggernaut(request, user_id=request.user.id, service_name="conversion", conversion_pages=int(numPages), associated_project=x, translation_language=[language_2_code.get(request.POST.get("non_dial_dest_lang")), request.POST.get("non_dial_dest_script"), language_2_code.get(request.POST.get("dial_dest_lang")), request.POST.get("dial_dest_script")]) # -> it is an iteration or new lang which is within limits if response_jugg["conversion_pages"] == 0: print("sopop 12", response_jugg) request.session['is_juggernaut_used'] = True request.session['language_set'] = [language_2_code.get(request.POST.get("non_dial_dest_lang")), request.POST.get("non_dial_dest_script"), language_2_code.get(request.POST.get("dial_dest_lang")), request.POST.get("dial_dest_script")] request.session['juggernaut_pages_deduction'] = int( request.POST["numPages"]) - int(response_jugg[ "conversion_pages"]) translation_instance_id = ScriptTranslations.objects.get( script_link_id=x, nondial_dest_language=language_2_code.get(request.POST.get("non_dial_dest_lang")), nondial_dest_script=request.POST.get("non_dial_dest_script"), dial_dest_language=language_2_code.get(request.POST.get("dial_dest_lang")), dial_dest_script=request.POST.get("dial_dest_script") ).translation_id request.session['translation_id'] = str(translation_instance_id) request.session["iteration_no"] = int( JuggernautConversion.objects.get(associated_project=x).iterations) + 1 return render(request, "conversion/thanksconversion.html", {}) # some limit reached else: if response_jugg["language_alert"] == True: print("limit of juggernaut reached") # -> language limit reached now the ADDON part comes on numPages = response_jugg["conversion_pages"] # if str(language_2_code[str(dial_dest_language)]) in langs_list_jugg: # print("sopop 4") # # -> getting the scripttranslation instance # translation_instance = ScriptTranslations.objects.get( # script_link_id = x, # dial_dest_language = str(languages.get(dial_dest_language)) # ) # # -> if iteration limit reached # if translation_instance.iteration >= juggernaut_instance.conversion_iteration: # print("sopop 5") # # -> to be done in future # # # -> if limit not reached # print("sopop 6") # pass # else: # print("sopop 7") # translation_instance.iteration += 1 # translation_instance.save() # request.session['translation_id'] = str(translation_instance.translation_id) # return render(request, "conversion/thanksconversion.html", context) # -> new language # else: # print("sopop 8") # if len(langs_list_jugg) < juggernaut_instance.conversion_languages: # # -> carry on it is new language # # try: # if not request.POST.get("sample_id"): # print("sopop 9") # output1 = check_juggernaut(request, user_id=request.user.id, service_name="conversion", # conversion_pages=int(numPages), associated_project=x, translation_language=str(dial_dest_language)) # # if len(output1) > 0: # print("sopop 10") # if output1["conversion_pages"] == 0: # print("sopop 11") # # update_juggernaut(request, user_id=request.user.id, service_name="conversion", # # conversion_pages=int(request.POST["numPages"]), # # associated_project=x, translation_language=str(dial_dest_language)) # # x.is_juggernaut_used = True # # x.languages_juggernaut = str(x.languages_juggernaut) + "," + str(dial_dest_language) # request.session['juggernaut_pages_deduction'] = int(request.POST["numPages"]) # x.save() # else: # print("sopop 12") # request.session['is_juggernaut_used'] = True # request.session['languages_juggernaut'] = str(x.languages_juggernaut) + "," + str(dial_dest_language) # request.session['juggernaut_pages_deduction'] = int( # request.POST["numPages"]) - int(output1[ # "conversion_pages"]) # numPages = output1["conversion_pages"] # # # except Exception as e: # # print("Error is: ", e) # else: # # -> language limit reached now the ADDON part comes on # pass else: print("sopop 13") # -> check if user has juggernaut or not if JuggernautPackage.objects.filter(user_id=request.user.id).exists(): print("sopop 14") juggernaut_instance = JuggernautPackage.objects.get(user_id=request.user.id) if juggernaut_instance.validity_days and juggernaut_instance.conversion_pages: print("sopop 15") if not request.POST.get("sample_id"): response_jugg = check_juggernaut(request, user_id=request.user.id, service_name="conversion", conversion_pages=int(numPages), associated_project=x, translation_language=[language_2_code.get(request.POST.get("non_dial_dest_lang")), request.POST.get("non_dial_dest_script"), language_2_code.get(request.POST.get("dial_dest_lang")), request.POST.get("dial_dest_script")]) print(response_jugg) if len(response_jugg) > 0: request.session['language_set'] = [language_2_code.get(request.POST.get("non_dial_dest_lang")), request.POST.get("non_dial_dest_script"), language_2_code.get(request.POST.get("dial_dest_lang")), request.POST.get("dial_dest_script")] print("sopop 16") if response_jugg["conversion_pages"] == 0: request.session['is_juggernaut_used'] = True request.session['juggernaut_pages_deduction'] = int(request.POST["numPages"]) x.save() else: print("sopop 17") request.session['is_juggernaut_used'] = True request.session['juggernaut_pages_deduction'] = int( request.POST["numPages"]) - int( response_jugg[ "conversion_pages"]) numPages = response_jugg["conversion_pages"] # -> Juggernaut Package Handling of new script else: """ new script handling """ print("Inside Juggernaut New Script Block") try: if not request.POST.get("sample_id"): print("Inside New Script Juggernaut Block -> Not Sample Script") response_jugg = check_juggernaut(request, user_id=request.user.id, service_name="conversion", conversion_pages=int(numPages), associated_project=x, translation_language=[language_2_code.get(request.POST.get("non_dial_dest_lang")), request.POST.get("non_dial_dest_script"), language_2_code.get(request.POST.get("dial_dest_lang")), request.POST.get("dial_dest_script")]) print("Juggernaut Response -> ", response_jugg) if len(response_jugg) > 0: print("sopop 20: Juggernaut Permitted New Script") request.session["language_set"] = [language_2_code.get(request.POST.get("non_dial_dest_lang")), request.POST.get("non_dial_dest_script"), language_2_code.get(request.POST.get("dial_dest_lang")), request.POST.get("dial_dest_script")] if response_jugg["conversion_pages"] == 0: print("sopop 21: Juggernaut Zero Payment Scheme") request.session['is_juggernaut_used'] = True request.session['juggernaut_pages_deduction'] = int(request.POST["numPages"]) x.save() else: print("sopop 22: Juggernaut Non-Zero Payment Scheme") request.session['is_juggernaut_used'] = True request.session['juggernaut_pages_deduction'] = int(request.POST["numPages"]) - int( response_jugg[ "conversion_pages"]) numPages = response_jugg["conversion_pages"] except Exception as e: print("Error is: ", e) print("sopop 23", numPages) # juggernaut and lpp on if int(numPages) == 0 and request.POST.get("lpp_vetting") == "on": try: context.clear() except: context = {} request.session["lpp"] = True # context["nondial_dest_language"] = language_2_code.get(request.POST.get("non_dial_dest_lang")) # context["nondial_dest_script"] = request.POST.get("non_dial_dest_script") # context["dial_dest_language"] = language_2_code.get(request.POST.get("dial_dest_lang")) # context["dial_dest_script"] = request.POST.get("dial_dest_script") # Getting all choices of user regarding Full Dialogues Translation # context["full_dialogue_option_choices"] = ",".join([request.POST.get(f'option{i}') == "on" # for i in range(1, 15)]) # # # Getting all choices of user regarding Words of Dialogues Translation # context["sentence_dialogue_option_choices"] = ",".join([request.POST.get(f'option{i}') == "on" # for i in range(15, 29)]) # # # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. # context["other_option_choices"] = ",".join([request.POST.get(f'option{i}') == "on" # for i in range(29, 39)]) # # if request.POST.get("dual_dialogue_option") == "on": # context["dual_dial_script"] = True # context["left_dual_dial_lang"] = request.POST.get("dual_left_language") # context["left_dual_dial_script"] = request.POST.get("dual_left_script") # if request.POST.get('lpp_vetting') == "on": # context["lpp_vetting"] = True # lpp_vetting_type = request.POST.get('radioGroup') # # if lpp_vetting_type == "radioOption1": # context["vetting_type"] = "Dialogues" # # elif lpp_vetting_type == "radioOption2": # context["vetting_type"] = "Entire" # -> Case of LPP Vetting and Juggernaut Reduced all pages to zero lpp_available = "yes" total_amount = round( (int(float(pricing_data('Script Conversion', 4))) - int(float(pricing_data('Script Conversion', 2)))) * request.session['juggernaut_pages_deduction'], 2 ) # request.session["amount_without_subscrption"] = total_amount pricelist = centralPayment_get_discounts(request, total_amount) print("pricelist", pricelist) # context["early_bird_discount"] = discount_limit_handler(DISCOUNT["early_bird"]) context["subtotal"] = round(total_amount, 2) context["early_bird_calculate"] = pricelist["early_bird_calculate"] context["staff_discount_calculate"] = pricelist["staff_discount_calculate"] context["membership_discount_calculate"] = pricelist["membership_discount_calculate"] context["student_discount_calculate"] = pricelist["student_discount_calculate"] if int(pricelist['student_discount_calculate']) > 0: request.session['student_discount_calculate'] = "Yes" else: request.session['student_discount_calculate'] = "No" context['Total_discount'] = pricelist['total_discount'] context['remaining_amount'] = pricelist['total_payable'] context["net_service_charge"] = pricelist["net_service_charge"] context["gst_calculate"] = pricelist["gst_calculate"] context["net_payable"] = pricelist["gross_payable"] if not privilegedUser1.objects.filter(user=request.user, is_active="yes").exists(): context["monthly_membership"] = 1 context["lpp_available"] = lpp_available.upper() context["script_title"] = x.script_title context["numPages"] = x.numPages context["ndial_src"] = x.nondial_src_language context["dial_src"] = x.dial_src_language context["ndial_dest"] = request.POST.get("non_dial_dest_lang") context["dial_dest"] = request.POST.get("dial_dest_lang") context["dial_dest_script"] = request.POST.get("dial_dest_script") request.session["nondial_dest_language"] = language_2_code.get(request.POST.get("non_dial_dest_lang")) request.session["nondial_dest_script"] = request.POST.get("non_dial_dest_script") request.session["dial_dest_language"] = language_2_code.get(request.POST.get("dial_dest_lang")) request.session["dial_dest_script"] = request.POST.get("dial_dest_script") # Getting all choices of user regarding Full Dialogues Translation request.session["full_dialogue_option_choices"] = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(1, 15)]) # Getting all choices of user regarding Words of Dialogues Translation request.session["sentence_dialogue_option_choices"] = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(15, 29)]) # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. request.session["other_option_choices"] = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(29, 39)]) if request.POST.get("dual_dialogue_option") == "on": request.session["dual_dial_script"] = True request.session["left_dual_dial_lang"] = request.POST.get("dual_left_language") request.session["left_dual_dial_script"] = request.POST.get("dual_left_script") if request.POST.get("lpp_vetting") == "on": request.session["lpp"] = True # context["numPages"] = numPages # context["script_title"] = x.script_title request.session["amount"] = context["net_payable"] request.session["amount_without_subscrption"] = context["net_service_charge"] request.session["discount"] = context["Total_discount"] request.session["subtotal"] = context["subtotal"] # request.session["script_id"] = x.script_id # request.session["script_file_path"] = x.script_file_path # request.session["script_title"] = context["script_title"] # request.session["dial_dest_language"] = dial_dest_language # request.session["dial_dest_script"] = request.POST.get("dial_dest_script") # request.session["nondial_dest_language"] = languages.get(nondial_dest_language) # request.session["dial_conv_script"] = dial_conv_script # request.session["dial_src_lang"] = x.dial_src_language # request.session["non_dial_src_lang"] = x.nondial_src_language # request.session["dial_src_script"] = x.dial_src_script # request.session["non_dial_src_script"] = x.nondial_src_script # request.session["dual_dial_script"] = xdual_dial_script # request.session["option3"] = opt3 # request.session["option4"] = opt4 # request.session["option5"] = opt5 # request.session["option6"] = opt6 # request.session["numPages"] = numPages # request.session["nondial_dest_script"] = request.POST.get("non_dial_dest_script") user = User.objects.get(id=request.user.id) try: wall = Wallet.objects.get(user=request.user) context["balance"] = round(wall.balance, 2) except: context["balance"] = -1 with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: curr = json.load(c) try: rate = curr["rates"]["INR"] except Exception as e: print("checkout error", e) rate = 80 context["rate"] = rate # for i in ["early_bird","monthly_member","gst","employ_discount","yearly_member","yearly_member_additional","life_member_additional","life_member_year","life_member"]: # # print(rf"7878 discounts are {i}", DISCOUNT[i]) str1 = str(datetime.datetime.now()).split("-") date_at = f'{str1[2][0:2]} - {str1[1]} - {str1[0]}' context['date_at'] = date_at try: cd = centralDatabase.objects.get(user_id=request.user) name = cd.firstName if cd.firstName else user.username email_id = cd.email if cd.email else user.email phone_number = str(cd.countryCode) + str(cd.contact) if cd.contact else "N/A" address = cd.address if cd.address else "N/A" except: name = user.username email_id = user.email phone_number = "N/A" address = "N/A" context["name"] = name context["email_id"] = email_id context["phone_number"] = phone_number context["address"] = address print("7878Context is :", context) return render(request, "conversion/invoice_conversion.html", context) # OLD OLD OLD OLD # context["ndial_dest"] = request.POST.get("nondial_dest_language") # context["dial_dest"] = request.POST.get("dial_dest_language") # context["dial_dest_script"] = request.POST.get("dial_dest_script") # context["nondial_dest_script"] = request.POST.get("non_dial_dest_script") # context["restrict_to_five"] = "no" # context["lpp_available"] = lpp_available.upper() # context["numPages"] = request.session['juggernaut_pages_deduction'] # context["script_title"] = x.script_title # request.session["amount"] = context["net_payable"] # request.session["amount_without_subscrption"] = context["net_service_charge"] # request.session["discount"] = context["Total_discount"] # request.session["subtotal"] = context["subtotal"] # request.session["script_id"] = x.script_id # request.session["script_file_path"] = x.script_file_path # request.session["script_title"] = context["script_title"] # request.session["dial_dest_language"] = dial_dest_language # request.session["dial_dest_script"] = request.POST.get("dial_dest_script") # request.session["nondial_dest_language"] = languages.get(nondial_dest_language) # request.session["dial_conv_script"] = dial_conv_script # request.session["dial_src_lang"] = x.dial_src_language # request.session["non_dial_src_lang"] = x.nondial_src_language # request.session["dial_src_script"] = x.dial_src_script # request.session["non_dial_src_script"] = x.nondial_src_script # request.session["dual_dial_script"] = xdual_dial_script # request.session["option3"] = opt3 # request.session["option4"] = opt4 # request.session["option5"] = opt5 # request.session["option6"] = opt6 # request.session["numPages"] = numPages # request.session["nondial_dest_script"] = request.POST.get("non_dial_dest_script") # try: # wall = Wallet.objects.get(user=request.user) # context["balance"] = round(wall.balance, 2) # except: # context["balance"] = -1 # with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: # curr = json.load(c) # try: # rate = curr["rates"]["INR"] # except Exception as e: # print("checkout error", e) # rate = 80 # context["rate"] = rate # # for i in ["early_bird","monthly_member","gst","employ_discount","yearly_member","yearly_member_additional","life_member_additional","life_member_year","life_member"]: # # # # print(rf"7878 discounts are {i}", DISCOUNT[i]) # str1 = str(datetime.datetime.now()).split("-") # date_at = f'{str1[2][0:2]} - {str1[1]} - {str1[0]}' # context['date_at'] = date_at # user = User.objects.get(id=request.user.id) # try: # cd = centralDatabase.objects.get(user_id=request.user) # name = cd.firstName if cd.firstName else user.username # email_id = cd.email if cd.email else user.email # phone_number = str(cd.countryCode) + str(cd.contact) if cd.contact else "N/A" # address = cd.address if cd.address else "N/A" # except: # name = user.username # email_id = user.email # phone_number = "N/A" # address = "N/A" # # context["name"] = name # context["email_id"] = email_id # context["phone_number"] = phone_number # context["address"] = address # # print("7878Context is :", context) # return render(request, "conversion/invoice_conversion.html", context) # juggernaut and lpp off or free case elif int(numPages) == 0 and not request.POST.get("lpp_vetting") == "on": print("New Script and Juggernaut and NO LPP") x.save() translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = x translation_instance.nondial_dest_language = language_2_code.get(request.POST.get("non_dial_dest_lang")) translation_instance.nondial_dest_script = request.POST.get("non_dial_dest_script") translation_instance.dial_dest_language = language_2_code.get(request.POST.get("dial_dest_lang")) translation_instance.dial_dest_script = request.POST.get("dial_dest_script") # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(1, 15)]) # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(15, 29)]) # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(29, 39)]) if request.POST.get("dual_dialogue_option") == "on": translation_instance.dual_dial_script = True translation_instance.left_dual_dial_lang = request.POST.get("dual_left_language") translation_instance.left_dual_dial_script = request.POST.get("dual_left_script") translation_instance.save() request.session['translation_id'] = str(translation_instance.translation_id) return render(request, "conversion/thanksconversion.html", {}) # paid or free 5 scene output else: # free 5 scene output if request.POST.get('5freesample') == "on": print("free 5 scene sample script") x.save() translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = x translation_instance.nondial_dest_language = language_2_code.get(request.POST.get("non_dial_dest_lang")) translation_instance.nondial_dest_script = request.POST.get("non_dial_dest_script") translation_instance.dial_dest_language = language_2_code.get(request.POST.get("dial_dest_lang")) translation_instance.dial_dest_script = request.POST.get("dial_dest_script") translation_instance.free_output = True # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(1, 15)]) # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(15, 29)]) # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(29, 39)]) if request.POST.get("dual_dialogue_option") == "on": translation_instance.dual_dial_script = True translation_instance.left_dual_dial_lang = request.POST.get("dual_left_language") translation_instance.left_dual_dial_script = request.POST.get("dual_left_script") translation_instance.save() print("saving") request.session['translation_id'] = str(translation_instance.translation_id) return render(request, "conversion/thanksconversion.html", {}) # paid script else: print("paid script") x.save() try: context.clear() except: context = {} numPages = int(numPages) # Price Calculation # if LPP is Selected and numpages are more than zero(i.e. juggernaut pages are empty) if request.POST.get("lpp_vetting") == "on" and request.session.get("is_juggernaut_used"): request.session["lpp"] = True lpp_available = "yes" total_amount = round( int(float(pricing_data('Script Conversion', 2))) * numPages + ( int(float(pricing_data('Script Conversion', 4))) - int(float(pricing_data('Script Conversion', 2))) ) * (request.session['juggernaut_pages_deduction'] + numPages), 2 ) # normally lpp vetting is selected by user so calculate total amount acc. to it elif request.POST.get("lpp_vetting") == "on": lpp_available = "yes" request.session["lpp"] = True total_amount = round( int(float(pricing_data('Script Conversion', 4))) * numPages, 2 ) # total_amount_lpp = round( # int(float(pricing_data('Script Conversion', 2))) * numPages + ( # int(float(pricing_data('Script Conversion', 4))) - # int(float(pricing_data('Script Conversion', 2))) # ) * (request.session['juggernaut_pages_deduction'] + numPages), 2 # ) total_amount_lpp = round( int(float(total_amount * 0.4)), 2 ) # context["subtotal"] = round( # numPages * settings.CONVERSION_PER_PAGE, 2 # ) # amt = numPages * settings.CONVERSION_PER_PAGE # context["subtotal"] = round(amt, 2) # lppamt = (numPages * settings.CONVERSION_PER_PAGE) + ( # numPages * settings.LPP_PER_PAGE # ) # context["onlylppfee"] = round((numPages * settings.LPP_PER_PAGE), 2) # normal non-juggernaut translation with full price else: lpp_available = "no" total_amount = round( int(float(pricing_data('Script Conversion', 2))) * numPages, 2 ) # all_discounts = get_discounts(request, total_amount, combo_discount=None,combo_discount_calculate=None, service="conversion") # print("-------------------Total Amount----------------- -> ", total_amount) # # print("-------------------All Discounts----------------- -> ", all_discounts) # context["subtotal"] = round(total_amount, 2) # context["early_bird_discount"] = discount_limit_handler(DISCOUNT["early_bird"]) # context["early_bird_calculate"] = round( # float((total_amount) * context["early_bird_discount"] / 100), 2) # # # staff discount # if User.objects.get(id=request.user.id).is_staff: # changes done by manoj # context["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"]) # context["staff_discount_calculate"] = round(float( # (total_amount - context["early_bird_calculate"]) * context[ # "sdiscount"] / 100), 2) # else: # context["sdiscount"] = 0 # context["staff_discount_calculate"] = 0 # # user = User.objects.get(id=request.user.id) # # try: # memberType = privilegedUser1.objects.filter(user=user, is_active="yes") # if memberType: # memberType = memberType.first().memberType # # if memberType == "normal": # context["pdiscount"] = 0 # context["membership_discount_calculate"] = 0 # # elif memberType == "yearly": # context["pdiscount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"]) # context["membership_discount_calculate"] = round(float(( # total_amount - # context[ # "early_bird_calculate"] - # context[ # "staff_discount_calculate"]) * # context["pdiscount"] / 100), 2) # # elif memberType == "Life Member": # context["pdiscount"] = discount_limit_handler(DISCOUNT["life_member_additional"]) # context["membership_discount_calculate"] = round(float(( # total_amount - # context[ # "early_bird_calculate"] - # context[ # "staff_discount_calculate"]) * # context["pdiscount"] / 100), 2) # if not privilegedUser1.objects.filter(user=request.user, is_active="yes").exists(): # context["monthly_membership"] = 1 # # context["membershipNarration"] = discount_limit_handler(DISCOUNT["monthly_member"]) # context["pdiscount"] = 0 # context["membership_discount_calculate"] = 0 # except: # context["monthly_membership"] = 1 # context["pdiscount"] = 0 # context["membership_discount_calculate"] = 0 # # get_student_discount = get_discount(request.user.id, total_amount) # if get_student_discount == 0: # context["student_discount"] = 0 # context["student_discount_calculate"] = 0 # else: # context["student_discount"] = get_student_discount # context["student_discount_calculate"] = round(float((total_amount - # context["early_bird_calculate"] - # context["staff_discount_calculate"] - # context["membership_discount_calculate"]) * # context["student_discount"] / 100), 2) # # context["Total_discount"] = round(float( # context["early_bird_calculate"] + context["staff_discount_calculate"] + # context["membership_discount_calculate"] + context["student_discount_calculate"]), 2) # context["remaining_amount"] = round(float(total_amount - context["Total_discount"]), 2) # context["net_service_charge"] = round( # float(context["remaining_amount"]), 2) # # GST # context["gst"] = discount_limit_handler(DISCOUNT["gst"]) # context["gst_calculate"] = round(float(context["remaining_amount"] * context["gst"] / 100), 2) # context["net_payable"] = round(float(context["remaining_amount"] + context["gst_calculate"]), 2) # print(context) pricelist = centralPayment_get_discounts(request, total_amount) print("pricelist", pricelist) # context["early_bird_discount"] = discount_limit_handler(DISCOUNT["early_bird"]) context["subtotal"] = round(total_amount, 2) context["early_bird_calculate"] = pricelist["early_bird_calculate"] context["staff_discount_calculate"] = pricelist["staff_discount_calculate"] context["membership_discount_calculate"] = pricelist["membership_discount_calculate"] context["student_discount_calculate"] = pricelist["student_discount_calculate"] if int(pricelist['student_discount_calculate']) > 0: request.session['student_discount_calculate'] = "Yes" else: request.session['student_discount_calculate'] = "No" context['Total_discount'] = pricelist['total_discount'] context['remaining_amount'] = pricelist['total_payable'] context["net_service_charge"] = pricelist["net_service_charge"] context["gst_calculate"] = pricelist["gst_calculate"] context["net_payable"] = pricelist["gross_payable"] userrr = User.objects.get(id=request.user.id) # print("Request is ->", request) print('privilege users -->',privilegedUser1) p_users = privilegedUser1.objects.all() print("All Privilileged users ->", p_users) print(privilegedUser1.objects.filter(user=47, is_active="yes"),request.user,request.user.id, "->data15555") print(privilegedUser1.objects.filter(user=47, is_active="yes"), "->data25555") if not privilegedUser1.objects.filter(user=userrr.id, is_active="yes").exists(): print("dont have monthly membership") context["monthly_membership"] = 1 # context["membership_discount"] = pricelist["membership_discount_calculate"] # context["staff_discount"] = pricelist["staff_discount_calculate"] # context["student_discount"] = pricelist["student_discount_calculate"] # context["early_bird_discount"] = pricelist["early_bird_calculate"] # # context['net_service_charge'] = pricelist['net_service_charge'] # context["total_payable"] = pricelist["total_payable"] # context["gst_calculate"] = pricelist["gst_calculate"] # context["gross_payable"] = pricelist["gross_payable"] # if request.POST.get("centralised") == "yes": # context["script_title"] = request.POST.get("fileUpload") # request.session["script_id"] = str(request.POST.get("script_id")) # # request.session["script_file_path"] = x.script_file # else: # context["ndial_src"] = languages2.get(x.nondial_src_language) # context["dial_src"] = languages2.get(x.dial_src_language) # context["ndial_dest"] = request.POST.get("nondial_dest_language") # context["dial_dest"] = request.POST.get("dial_dest_language") # context["dial_dest_script"] = request.POST.get("dial_dest_script") # context["nondial_dest_script"] = request.POST.get("non_dial_dest_script") # context["restrict_to_five"] = "no" context["lpp_available"] = lpp_available.upper() context["script_title"] = x.script_title context["numPages"] = x.numPages context["ndial_src"] = x.nondial_src_language context["dial_src"] = x.dial_src_language context["ndial_dest"] = request.POST.get("non_dial_dest_lang") context["dial_dest"] = request.POST.get("dial_dest_lang") context["dial_dest_script"] = request.POST.get("dial_dest_script") request.session["nondial_dest_language"] = language_2_code.get(request.POST.get("non_dial_dest_lang")) request.session["nondial_dest_script"] = request.POST.get("non_dial_dest_script") request.session["dial_dest_language"] = language_2_code.get(request.POST.get("dial_dest_lang")) request.session["dial_dest_script"] = request.POST.get("dial_dest_script") # Getting all choices of user regarding Full Dialogues Translation request.session["full_dialogue_option_choices"] = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(1, 15)]) # Getting all choices of user regarding Words of Dialogues Translation request.session["sentence_dialogue_option_choices"] = ",".join( [str(request.POST.get(f'option{i}') == "on") for i in range(15, 29)]) # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. request.session["other_option_choices"] = ",".join([str(request.POST.get(f'option{i}') == "on") for i in range(29, 39)]) if request.POST.get("dual_dialogue_option") == "on": request.session["dual_dial_script"] = True request.session["left_dual_dial_lang"] = request.POST.get("dual_left_language") request.session["left_dual_dial_script"] = request.POST.get("dual_left_script") if request.POST.get("lpp_vetting") == "on": request.session["lpp"] = True # context["numPages"] = numPages # context["script_title"] = x.script_title request.session["amount"] = context["net_payable"] request.session["amount_without_subscrption"] = context["net_service_charge"] request.session["discount"] = context["Total_discount"] request.session["subtotal"] = context["subtotal"] # request.session["script_id"] = x.script_id # request.session["script_file_path"] = x.script_file_path # request.session["script_title"] = context["script_title"] # request.session["dial_dest_language"] = dial_dest_language # request.session["dial_dest_script"] = request.POST.get("dial_dest_script") # request.session["nondial_dest_language"] = languages.get(nondial_dest_language) # request.session["dial_conv_script"] = dial_conv_script # request.session["dial_src_lang"] = x.dial_src_language # request.session["non_dial_src_lang"] = x.nondial_src_language # request.session["dial_src_script"] = x.dial_src_script # request.session["non_dial_src_script"] = x.nondial_src_script # request.session["dual_dial_script"] = xdual_dial_script # request.session["option3"] = opt3 # request.session["option4"] = opt4 # request.session["option5"] = opt5 # request.session["option6"] = opt6 # request.session["numPages"] = numPages # request.session["nondial_dest_script"] = request.POST.get("non_dial_dest_script") user = User.objects.get(id=request.user.id) try: wall = Wallet.objects.get(user=request.user) context["balance"] = round(wall.balance, 2) except: context["balance"] = -1 with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: curr = json.load(c) try: rate = curr["rates"]["INR"] except Exception as e: print("checkout error", e) rate = 80 context["rate"] = rate # for i in ["early_bird","monthly_member","gst","employ_discount","yearly_member","yearly_member_additional","life_member_additional","life_member_year","life_member"]: # # print(rf"7878 discounts are {i}", DISCOUNT[i]) str1 = str(datetime.datetime.now()).split("-") date_at = f'{str1[2][0:2]} - {str1[1]} - {str1[0]}' context['date_at'] = date_at try: cd = centralDatabase.objects.get(user_id=request.user) name = cd.firstName if cd.firstName else user.username email_id = cd.email if cd.email else user.email phone_number = str(cd.countryCode) + str(cd.contact) if cd.contact else "N/A" address = cd.address if cd.address else "N/A" except: name = user.username email_id = user.email phone_number = "N/A" address = "N/A" context["name"] = name context["email_id"] = email_id context["phone_number"] = phone_number context["address"] = address print("7878Context is :", context) return render(request, "conversion/invoice_conversion.html", context) else: print("File didn't receive.") context = {"status": "Failed"} return JsonResponse(context) # -> Conversion Checkout def conversionCheckout(request): # new payment 8000 set_payment_token(request) keyID = request.session["keyID"] keySecret = request.session["keySecret"] if request.method == "POST": for key, value in request.session.items(): print('{} => {}'.format(key, value)) if request.POST.get("want_to_be_vetted") == "YES": request.session["want_to_be_vetted"] = "on" else: request.session["want_to_be_vetted"] = request.POST.get( "want_to_be_vetted") total_amount = request.session["amount"] total_amount1 = request.session["subtotal"] # amount_charged = request.session["amount"] amount_discount = request.session["discount"] request.session["pay_with_wallet"] = "no" request.session["amount_before_pay_wallet"] = total_amount # is he instituitional student or not if request.session.get("student_discount_calculate") == "Yes": from institutional.models import AffiliatedStudent, UnaffiliatedStudent, WaitForInstituteStudent user = User.objects.get(pk=request.user.id) if UnaffiliatedStudent.objects.filter(user=user).exists(): user = UnaffiliatedStudent.objects.get(user=user) if user.free_credits >= total_amount: user.free_credits -= total_amount user.save() context = { "mode": "Institutional User", } return JsonResponse(context) elif user.free_credits < total_amount: total_amount -= user.free_credits user.free_credits = 0 user.save() elif WaitForInstituteStudent.objects.filter(user=user).exists(): user = WaitForInstituteStudent.objects.get(user=user) if user.free_credits >= total_amount: user.free_credits -= total_amount user.save() context = { "mode": "Institutional User", } return JsonResponse(context) elif user.free_credits < total_amount: total_amount -= user.free_credits user.free_credits = 0 user.save() return True elif AffiliatedStudent.objects.filter(user=user).exists(): user = AffiliatedStudent.objects.get(user=user) if user.free_credits >= total_amount: user.free_credits -= total_amount user.save() context = { "mode": "Institutional User", } return JsonResponse(context) elif user.free_credits < total_amount: total_amount -= user.free_credits user.free_credits = 0 user.save() try: print("pay_wallet it is", request.POST.get("pay_wallet")) if request.POST.get("pay_wallet") == "true": request.session["pay_with_wallet"] = "yes" with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: curr = json.load(c) print(curr["rates"]["INR"]) try: rate = curr["rates"]["INR"] except Exception as e: print("checkout error", e) rate = 80 print("Checking Wallet") wall = Wallet.objects.get(user=request.user) print("this is walet", wall.balance) print(wall.balance) if wall.balance >= (total_amount * rate): print("wallet if hai") # wall.balance = wall.balance - (total_amount * rate) # wall.save() request.session["pay_wallet_deduction"] = round(total_amount * rate, 2) total_amount = 0 else: print("wallet else hai") # wall.balance = 0 # wall.save() request.session["pay_wallet_deduction"] = round(wall.balance, 2) total_amount = round((round(total_amount * rate, 2) - round(wall.balance, 2)) / rate, 2) # request.session["fbalance"] = float( # wall.balance) - float(balance*rate) # request.session["amount"] = total_amount # total_amount = request.session["amount"] except Exception as e: print("Error is:",e) pass request.session["amount"] = total_amount services_used = 2 if request.session["want_to_be_vetted"] == "on" else 1 context = create_indent(request, 'Conversion', str( request.session["script_id"]), services_used, '', total_amount1, total_amount, amount_discount) print("Create indent 9987", context) for key, value in request.session.items(): print('{} => {}'.format(key, value)) print(str(request.session["script_id"])) # instance = MNFScriptDatabase.objects.get(script_id=str(request.session["script_id"])) 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 request.session["CurrencyRate"] = rate centralPayment_instance = CentralPayment.objects.get( id=context["central_pay_id"]) # handle razor pay gateway → if "orderId" in context: # instance.payment_order_id = context["orderId"] # instance.central_payment_id = context["central_pay_id"] # instance.save() # save central payment details in your database request.session["payment_order_id"] = context["orderId"] request.session["central_payment_id"] = context["central_pay_id"] pid = centralPayment_instance.order_id amtINR = round(centralPayment_instance.amount_charged * rate, 2) context = { "mode": "RazorPay", "pk": keyID, "amtINR": amtINR, "pid": pid, "amount": centralPayment_instance.amount_charged, } return JsonResponse(context) # return render(request, "conversion/checkoutC_RazorPay.html", context) # handle stripe gateway → elif "client_secret" in context: # save central payment details in your database request.session["payment_order_id"] = context["client_secret"] request.session["central_payment_id"] = context["central_pay_id"] amtINR = round(centralPayment_instance.amount_charged * rate, 2) context = { "mode": "Stripe", "pk": context["pub_key"], "total_amount": centralPayment_instance.amount_charged, "secret_key": context["client_secret"], "amtINR": amtINR, } return JsonResponse(context) # handle corporate profile → elif "monthly_user" in context: # instance.payment_order_id = "corporate profile" # instance.central_payment_id = "corporate profile" # instance.save() # script_id = request.session["script_id"] # script_title = request.session["script_title"] # script_file_path = request.session["script_file_path"] # dial_conv_script = request.session["dial_conv_script"] # nondial_dest_language = request.session["nondial_dest_language"] # dial_dest_language = request.session["dial_dest_language"] # dial_dest_script = request.session["dial_dest_script"] # dial_src_lang = request.session["dial_src_lang"] # non_dial_src_lang = request.session["non_dial_src_lang"] # dial_src_script = request.session["dial_src_script"] # non_dial_src_script = request.session["non_dial_src_script"] # dual_dial_script = request.session["dual_dial_script"] # nondial_dest_script = request.session["nondial_dest_script"] # if request.session.get("want_to_be_vetted") != "NO": # total_amount = request.session["lppamount"] # else: # total_amount = request.session["amount"] # to_be_vetted_by_lpp = request.session["want_to_be_vetted"] # option3 = request.session["option3"] # option4 = request.session["option4"] # option5 = request.session["option5"] # option6 = request.session["option6"] # # payment_intent_id = request.session["payment_intent_id"] # # pi = stripe.PaymentIntent.retrieve(payment_intent_id) # try: # s = MNFScriptDatabase.objects.get(user_id = request.user, script_id = script_id) # except: # s = MNFScriptDatabase() # s.user_id = request.user # s.script_id = script_id # s.script_title = script_title # s.author_name = request.user.first_name # # s.dial_dest_language = dial_dest_language # # s.dial_dest_script = dial_dest_script # # s.nondial_dest_language = nondial_dest_language # # s.dual_dial_script = dual_dial_script # s.script_file_path = script_file_path # # save central payment details in your database # # s.payment_order_id = "monthly_user" # # s.central_payment_id = context["central_pay_id"] # # s.payment_intent_id = payment_intent_id # s.nondial_src_script = non_dial_src_script # s.dial_src_script = dial_src_script # s.dial_src_language = dial_src_lang # s.nondial_src_language = non_dial_src_lang # # s.nondial_dest_script = nondial_dest_script # s.save() # # translation_instance = ScriptTranslations() # translation_instance.user_id = request.user # translation_instance.script_link_id = s # translation_instance.nondial_dest_language = nondial_dest_language # translation_instance.nondial_dest_script = nondial_dest_script # translation_instance.dial_dest_language = language_2_code[str(dial_dest_language)] # translation_instance.dial_dest_script = dial_dest_script # translation_instance.dual_dial_script = dual_dial_script # translation_instance.payment_order_id = "monthly_user" request.session['central_pay_id'] = context["central_pay_id"] context = { "mode": "Corporate User", } # return redirect('conversion') return JsonResponse(context) # return render(request, "conversion/thanksconversion.html", context) # if request.POST.get("country") == "IN": # # # try: -> Old WAy of Getting Conversion Rates between Currencies # # c = CurrencyRates() # # rate = c.get_rate("USD", "INR") # # except: # # rate = 80 # with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: # curr = json.load(c) # print(curr["rates"]["INR"]) # try: # rate = curr["rates"]["INR"] # print(rate, " : Latest rates 30sep") # # c = CurrencyRates() # # rate = c.get_rate("USD", str(currency.upper())) # except Exception as e: # print("checkout error", e) # rate = 80 # # amtINR = round(float(float(total_amount) * rate), 2) # client = razorpay.Client(auth=(keyID, keySecret)) # payment_intent = client.order.create( # { # "amount": int(float(total_amount) * 100 * rate), # "currency": "INR", # "payment": { # "capture": "automatic", # "capture_options": {"refund_speed": "normal"}, # }, # } # ) # else: # try: -> Old WAy of Getting Conversion Rates between Currencies # c = CurrencyRates() # rate = c.get_rate("USD", "INR") # except: # rate = 80 # with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: # curr = json.load(c) # print(curr["rates"]["INR"]) # try: # rate = curr["rates"]["INR"] # print(rate, " : Latest rates 30sep") # # c = CurrencyRates() # # rate = c.get_rate("USD", str(currency.upper())) # except Exception as e: # print("checkout error", e) # rate = 80 # # amtINR = round(float(float(total_amount) * rate), 2) # payment_intent = stripe.PaymentIntent.create( # amount=int(float(total_amount) * 100 * rate), # currency="INR", # payment_method_types=["card"], # ) # request.session["CurrencyRate"] = rate # request.session["payment_intent_id"] = payment_intent.id # context = { # "pk": STRIPE_PUB_KEY, # "total_amount": total_amount, # "amtINR": amtINR, # } # return render(request, "conversion/checkoutC.html", context) # ppt checkout # -> Conversion Checkout def pptCheckout(request): set_payment_token(request) keyID = request.session["keyID"] keySecret = request.session["keySecret"] if request.method == "POST": if request.POST.get("want_to_be_vetted") == "yes": # total_amount = request.session["pptamount"] request.session["want_to_be_vetted"] = "on" else: request.session["want_to_be_vetted"] = "off" total_amount = request.session['amount'] total_amount1 = request.session['subtotal'] amount_discount = request.session["discount"] request.session["pay_with_wallet"] = "no" request.session["amount_before_pay_wallet"] = total_amount try: if request.POST.get("pay_wallet") == "on": request.session["pay_with_wallet"] = "yes" with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: curr = json.load(c) print(curr["rates"]["INR"]) try: rate = curr["rates"]["INR"] except Exception as e: print("checkout error", e) rate = 80 wall = Wallet.objects.get(user=request.user) print("this is walet", wall.balance) print(wall.balance) if wall.balance >= (total_amount * rate): print("wallet if hai") request.session["pay_wallet_deduction"] = round(total_amount * rate, 2) total_amount = 0 else: print("wallet else hai") request.session["pay_wallet_deduction"] = round(wall.balance, 2) total_amount = round((round(total_amount * rate, 2) - round(wall.balance, 2)) / rate, 2) # balance = float(request.POST["balance"]) # payable = float(request.POST["payable"]) # wall = Wallet.objects.get(user=request.user) # request.session["fbalance"] = float( # wall.balance) - float(balance*rate) # wall.save() # request.session["amount"] = payable # total_amount = request.session["amount"] except Exception as e: print("checkout error", e) pass # call central payment function --> create indent # Next follow central payment docs... # if indian --> orderID --> razorpay gateway # non-indian --> client secret --> stripe request.session["amount"] = total_amount # total_amount1 = request.session["total_amount1"] # amount_charged = request.session["amount1"] # amount_discount = request.session["discount1"] services_used = 2 if request.session["want_to_be_vetted"] == "on" else 1 context = create_indent(request, 'Conversion', str(request.session["ppt_id"]), services_used, '', total_amount1, total_amount, amount_discount) print("Create indent bhaalu aa rhaha hai 7878", context) # instance = MNFScriptDatabase.objects.get(script_id=str(request.session["script_id"])) 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 request.session["CurrencyRate"] = rate centralPayment_instance = CentralPayment.objects.get( id=context["central_pay_id"]) # handle razor pay gateway → if "orderId" in context: # instance.payment_order_id = context["orderId"] # instance.central_payment_id = context["central_pay_id"] # instance.save() # save central payment details in your database request.session["payment_order_id"] = context["orderId"] request.session["central_payment_id"] = context["central_pay_id"] pid = centralPayment_instance.order_id amtINR = centralPayment_instance.amount_charged * rate context = { "mode": "RazorPay", "pk": keyID, "amtINR": amtINR, "pid": pid, "amount": centralPayment_instance.amount_charged, } return JsonResponse(context) # return render(request, "conversion/checkoutPPT_RazorPay.html", context) # handle stripe gateway → elif "client_secret" in context: request.session["payment_order_id"] = context[ "client_secret"] # save central payment details in your database request.session["central_payment_id"] = context["central_pay_id"] amtINR = centralPayment_instance.amount_charged * rate context = { "mode": "Stripe", "pk": context["pub_key"], "total_amount": centralPayment_instance.amount_charged, "secret_key": context["client_secret"], "amtINR": amtINR, } return JsonResponse(context) # return render(request, "conversion/checkoutPPT_Stripe.html", context) # handle corporate profile → elif "monthly_user" in context: ppt_instance = pptconversion.objects.get( ppt_id=request.session["ppt_id"]) ppt_instance.central_payment_id = context["central_pay_id"] ppt_instance.payment_order_id = "monthly_user" ppt_instance.save() sendmail(to_email=[ppt_instance.user_id.email], email_code='CP4') sendmail(to_email=[ppt_instance.user_id.email], email_code='CP10') ppt_conversion(request.session["ppt_id"], request).start() sendmail(to_email=[ppt_instance.user_id.email], email_code='CP9') print('line---(1527)') print('is the email working for ppt') context = { "mode": "Corporate User" } return JsonResponse(context) # return render(request, "conversion/thanksppt.html") # instance.payment_order_id = "corporate profile" # instance.central_payment_id = "corporate profile" # instance.save() # return render(request, "conversion/thanksbook.html", {"book_id": request.session["book_id"]}) # context = create_indent(request, 'Convert a ppt', sr.data["ppt_id"], 1, '', amount, sr.data["amount"], sr.data["discount"]) # instance # # if request.POST.get("country") == "IN": # if "orderId" in context: # return render(request, "conversion/checkoutPPT_RazorPay.html", context) # elif "client_secret" in context: # return render(request, "conversion/checkoutPPT_Stripe.html", context) # elif "monthly_user" in context: # pass # else: # return Response({"message": "invalid request!"}, status=status.HTTP_400_BAD_REQUEST) # if request.POST.get("country") == "IN": # # try: -> Old WAy of Getting Conversion Rates between Currencies # # c = CurrencyRates() # # rate = c.get_rate("USD", "INR") # # except: # # rate = 80 # with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: # curr = json.load(c) # print(curr["rates"]["INR"]) # try: # rate = curr["rates"]["INR"] # print(rate, " : Latest rates 30sep") # # c = CurrencyRates() # # rate = c.get_rate("USD", str(currency.upper())) # except Exception as e: # print("checkout error", e) # rate = 80 # amtINR = round(float(float(total_amount) * rate), 2) # client = razorpay.Client(auth=(keyID, keySecret)) # payment_intent = client.order.create( # { # "amount": int(float(total_amount) * 100 * rate), # "currency": "INR", # "payment": { # "capture": "automatic", # "capture_options": {"refund_speed": "normal"}, # }, # } # ) # request.session["CurrencyRate"] = rate # pid = payment_intent["id"] # context = { # "pk": keyID, # "amtINR": amtINR, # "pid": pid, # "amount": total_amount, # } # return render(request, "conversion/checkoutPPT_RazorPay.html", context) # else: # # try: -> Old WAy of Getting Conversion Rates between Currencies # # c = CurrencyRates() # # rate = c.get_rate("USD", "INR") # # except: # # rate = 80 # with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: # curr = json.load(c) # print(curr["rates"]["INR"]) # try: # rate = curr["rates"]["INR"] # print(rate, " : Latest rates 30sep") # # c = CurrencyRates() # # rate = c.get_rate("USD", str(currency.upper())) # except Exception as e: # print("checkout error", e) # rate = 80 # amtINR = round(float(float(total_amount) * rate), 2) # payment_intent = stripe.PaymentIntent.create( # amount=int(float(total_amount) * 100 * rate), # currency="INR", # payment_method_types=["card"], # ) # request.session["CurrencyRate"] = rate # request.session["payment_intent_id"] = payment_intent.id # context = { # "pk": STRIPE_PUB_KEY, # "total_amount": total_amount, # "amtINR": amtINR, # } # return render(request, "conversion/checkoutPPT_Stripe.html", context) # return render(request, "conversion/conversion.html") # "16 Nov file path", output_dir # "16 Nov part 2 inside if" # Path DNE inside if # "Path 16 Nov", output_dir # Class object instantiated # -> Conversion Checkout @login_required(login_url="/PersonalLogin-2") def conversioncard(request): if request.method == "POST": # payment_method_id = request.POST["payment_method_id"] # payment_intent_id = request.session["payment_intent_id"] # # customer = stripe.Customer.create( # email=request.user.email, # payment_method=payment_method_id, # invoice_settings={"default_payment_method": payment_method_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) # if ret.status == "requires_action": customer = stripe.Customer.create( email=request.user.email, ) payment_intent = stripe.PaymentIntent.create( amount=int(float(total_amount) * 100 * rate), currency="INR", automatic_payment_methods={"enabled": True}, customer=customer.id, ) pid = payment_intent.id request.session["payment_intent_id"] = pid context = { "pid": pid, "amtINR": amtINR, "secret_key": payment_intent.client_secret, "total_amount": total_amount, "STRIPE_PUBLISHABLE_KEY": STRIPE_PUB_KEY, "pk": STRIPE_PUB_KEY, } # context = { # "pk": STRIPE_PUB_KEY, # "pid":, # "payment_intent_secret": request.session["payment_order_id"], # } return render(request, "conversion/3dsecuredConversion.html", context) # return render(request, "payments/paymentdone.html") @login_required(login_url="/PersonalLogin-2") def Bookcard(request): if request.method == "POST": payment_method_id = request.POST["payment_method_id"] payment_intent_id = request.session["payment_intent_id"] customer = stripe.Customer.create( email=request.user.email, payment_method=payment_method_id, invoice_settings={"default_payment_method": payment_method_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) if ret.status == "requires_action": context = { "pk": STRIPE_PUB_KEY, "payment_intent_secret": pi.client_secret, } return render(request, "conversion/3dsecuredBook.html", context) return render(request, "payments/paymentdone.html") def paymentDoneC_corporate(request): if request.method == "GET": script_id = request.session["script_id"] s = MNFScriptDatabase.objects.get(user_id=request.user, script_id=script_id) translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = s translation_instance.nondial_dest_language = request.session["nondial_dest_language"] translation_instance.nondial_dest_script = request.session["nondial_dest_script"] translation_instance.dial_dest_language = request.session["dial_dest_language"] translation_instance.dial_dest_script = request.session["dial_dest_script"] # save central payment details in your database translation_instance.payment_order_id = "monthly_user" translation_instance.central_payment_id = request.session["central_pay_id"] # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = request.session["full_dialogue_option_choices"] # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = request.session["sentence_dialogue_option_choices"] # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = request.session["other_option_choices"] if request.session.get("dual_dial_script"): translation_instance.dual_dial_script = request.session["dual_dial_script"] translation_instance.left_dual_dial_lang = request.session["left_dual_dial_lang"] translation_instance.left_dual_dial_script = request.session["left_dual_dial_script"] if request.session.get("lpp"): translation_instance.lpp = request.session["lpp"] translation_instance.save() print("saving") request.session['translation_id'] = str(translation_instance.translation_id) return render(request, "conversion/thanksconversion.html", {}) def paymentDoneC_Institutional(request): if request.method == "GET": script_id = request.session["script_id"] s = MNFScriptDatabase.objects.get(user_id=request.user, script_id=script_id) translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = s translation_instance.nondial_dest_language = request.session["nondial_dest_language"] translation_instance.nondial_dest_script = request.session["nondial_dest_script"] translation_instance.dial_dest_language = request.session["dial_dest_language"] translation_instance.dial_dest_script = request.session["dial_dest_script"] # save central payment details in your database translation_instance.payment_order_id = "Institutional User" # translation_instance.central_payment_id = request.session["central_pay_id"] # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = request.session["full_dialogue_option_choices"] # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = request.session["sentence_dialogue_option_choices"] # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = request.session["other_option_choices"] if request.session.get("dual_dial_script"): translation_instance.dual_dial_script = request.session["dual_dial_script"] translation_instance.left_dual_dial_lang = request.session["left_dual_dial_lang"] translation_instance.left_dual_dial_script = request.session["left_dual_dial_script"] if request.session.get("lpp"): translation_instance.lpp = request.session["lpp"] translation_instance.save() print("saving") request.session['translation_id'] = str(translation_instance.translation_id) return render(request, "conversion/thanksconversion.html", {}) # -> Conversion Stripe Payment Done Message def paymentDoneC(request): if request.method == "GET": script_id = request.session["script_id"] # script_title = request.session["script_title"] # script_file_path = request.session["script_file_path"] # dial_conv_script = request.session["dial_conv_script"] # nondial_dest_language = request.session["nondial_dest_language"] # dial_dest_language = request.session["dial_dest_language"] # dial_dest_script = request.session["dial_dest_script"] # dial_src_lang = request.session["dial_src_lang"] # non_dial_src_lang = request.session["non_dial_src_lang"] # dial_src_script = request.session["dial_src_script"] # non_dial_src_script = request.session["non_dial_src_script"] # dual_dial_script = request.session["dual_dial_script"] # nondial_dest_script = request.session["nondial_dest_script"] # if request.session.get("want_to_be_vetted"): # total_amount = request.session["amount"] # else: # total_amount = request.session["amount"] # to_be_vetted_by_lpp = request.session["want_to_be_vetted"] # option3 = request.session["option3"] # option4 = request.session["option4"] # option5 = request.session["option5"] # option6 = request.session["option6"] # payment_intent_id = request.session["payment_intent_id"] # pi = stripe.PaymentIntent.retrieve(payment_intent_id) print("all get 8989 variables", request.GET.items()) for key, value in request.GET.items(): print(rf'{key}: {value}') response = { "id": request.GET.get("payment_intent"), "client_secret": request.GET.get("payment_intent_client_secret"), "status": request.GET.get("redirect_status"), } callback_content = callback(response, request) if callback_content['payment_status'] == "success": if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) # for key, value in request.session.items(): # print('{} => {}'.format(key, value)) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - ( round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - ( round(request.session["pay_wallet_deduction"], 2)) wall.save() # c = conversionPayment() # try: s = MNFScriptDatabase.objects.get(user_id=request.user, script_id=script_id) # except: # s = MNFScriptDatabase() # s.user_id = request.user # s.script_id = script_id # s.user_id = request.user # s.script_id = script_id # s.script_title = script_title # s.author_name = request.user.first_name # s.dial_dest_language = dial_dest_language # s.dial_dest_script = dial_dest_script # s.nondial_dest_language = nondial_dest_language # s.dual_dial_script = dual_dial_script # s.script_file_path = script_file_path # save central payment details in your database # s.payment_order_id = request.session["payment_order_id"] # s.central_payment_id = request.session["central_payment_id"] # s.payment_intent_id = payment_intent_id # s.nondial_src_script = non_dial_src_script # s.dial_src_script = dial_src_script # s.dial_src_language = dial_src_lang # s.nondial_src_language = non_dial_src_lang # s.nondial_dest_script = nondial_dest_script # try: # if request.session["is_juggernaut_used"]: # s.is_juggernaut_used = True # s.languages_juggernaut = request.session['languages_juggernaut'] # except: # pass # s.save() # try: # if request.session["juggernaut_pages_deduction"]: # update_juggernaut(request, user_id=request.user.id, service_name="conversion", # conversion_pages=int(request.session["juggernaut_pages_deduction"]), associated_project=s, translation_language=str(dial_dest_language)) # except Exception as e: # print("Error is: ", e) translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = s translation_instance.nondial_dest_language = request.session["nondial_dest_language"] translation_instance.nondial_dest_script = request.session["nondial_dest_script"] translation_instance.dial_dest_language = request.session["dial_dest_language"] translation_instance.dial_dest_script = request.session["dial_dest_script"] # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = request.session["full_dialogue_option_choices"] # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = request.session["sentence_dialogue_option_choices"] # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = request.session["other_option_choices"] if request.session.get("dual_dial_script"): translation_instance.dual_dial_script = request.session["dual_dial_script"] translation_instance.left_dual_dial_lang = request.session["left_dual_dial_lang"] translation_instance.left_dual_dial_script = request.session["left_dual_dial_script"] if request.session.get("lpp"): translation_instance.lpp = request.session["lpp"] # save central payment details in your database translation_instance.payment_order_id = request.session["payment_order_id"] translation_instance.central_payment_id = request.session["central_payment_id"] translation_instance.save() print("saving") request.session['translation_id'] = str(translation_instance.translation_id) # -----------Adding Details to payment Details-------------------------- # currencyrate = request.session["CurrencyRate"] # user_id = request.user # payment_id = payment_intent_id # services_used = "Conversion" # script_info = s # number_of_pages = request.session["numPages"] # total_amounts = round( # (request.session["numPages"] * # CONVERSION_PER_PAGE * currencyrate), # 2, # ) # discount = round((request.session["discount"] * currencyrate), 2) # amount_charged = round((total_amount * currencyrate), 2) # gateway_fee = round( # ((STRIPE_PLATFORM_FEE / 100) * amount_charged), 2) # currency = "INR" # pay_method = "Card" # payment_status = "Success" # payment_gateway = "Stripe" # PaymentData.objects.create( # user_id=user_id, # services_used=services_used, # payment_id=payment_id, # script_info=script_info, # amount_charged=amount_charged, # total_amount=total_amounts, # number_of_pages=number_of_pages, # gateway_fee=gateway_fee, # discount=discount, # currency=currency, # pay_method=pay_method, # payment_status=payment_status, # payment_gateway=payment_gateway, # ) # c.pid = privilegedUser1.objects.get(user= request.user) # c.script_title = script_title # c.script_id = script_id # c.to_be_vetted_by_lpp = to_be_vetted_by_lpp # c.payment_intent_id = payment_intent_id # c.total_amount = str(total_amount) # c.script_file_path = script_file_path # c.has_paid = 'yes' # c.save() context = { "script_id": script_id, } to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP19", key_value=key_value) return render(request, "conversion/thanksconversion.html", context) else: subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) to = request.user.email key_value = { "service_name": "Conversion", } sendmail(to_email=[to], email_code="CP11", key_value=key_value) # message = render_to_string('payment/templates/payments/MR24.html', context_2) # # # # password = emails_creadentials.objects.get(email="noreply@mynextfilm.ai") # connection = get_connection(host="smtp.gmail.com", port=587, username="noreply@mynextfilm.ai", # password="iiby yciy jdux fslv", use_tls=True) # to_email = request.user.email # email = EmailMessage(subject, message, to=[to_email], connection=connection) # email.send() return render(request, "payments/failed.html") # -> Conversion Razorpay Payment Done Message def paymentDoneC_RazorPay(request): print("po") print("PAyment Done Razorpay -> ", request.POST) # print("PAyment Done Razorpay -> ", request.POST.data, "444") # keyID = request.session["keyID"] # keySecret = request.session["keySecret"] if request.method == "POST": script_id = request.session["script_id"] # script_title = request.session["script_title"] # script_file_path = request.session["script_file_path"] # dial_conv_script = request.session["dial_conv_script"] # nondial_dest_language = request.session["nondial_dest_language"] # dial_dest_language = request.session["dial_dest_language"] # dial_dest_script = request.session["dial_dest_script"] # dial_src_lang = request.session["dial_src_lang"] # non_dial_src_lang = request.session["non_dial_src_lang"] # dial_src_script = request.session["dial_src_script"] # dual_dial_script = request.session["dual_dial_script"] # non_dial_src_script = request.session["non_dial_src_script"] # nondial_dest_script = request.session["nondial_dest_script"] # if request.session.get("want_to_be_vetted"): # total_amount = request.session["amount"] # else: # total_amount = request.session["amount"] # to_be_vetted_by_lpp = request.session["want_to_be_vetted"] # option3 = request.session["option3"] # option4 = request.session["option4"] # option5 = request.session["option5"] # option6 = request.session["option6"] # razorpay_order_id = request.POST["razorpay_order_id"] # razorpay_payment_id = request.POST["razorpay_payment_id"] # razorpay_signature = request.POST["razorpay_signature"] # client = razorpay.Client(auth=(keyID, keySecret)) # params_dict = { # "razorpay_order_id": razorpay_order_id, # "razorpay_payment_id": razorpay_payment_id, # "razorpay_signature": razorpay_signature, # } # try: # client.utility.verify_payment_signature(params_dict) callback_context = callback(request.POST, request) if callback_context['payment_status'] != 'success': subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to_ema = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # message = render_to_string('payment/templates/payments/MR24.html', context_2) # # # # password = emails_creadentials.objects.get(email="noreply@mynextfilm.ai") # connection = get_connection(host="smtp.gmail.com", port=587, username="noreply@mynextfilm.ai", # password="iiby yciy jdux fslv", use_tls=True) # to_email = email # email = EmailMessage(subject, message, to=[to_email], connection=connection) # email.send() to = request.user.email key_value = { "service_name": "Conversion", } sendmail(to_email=[to], email_code="CP11", key_value=key_value) return render(request, "payments/failed.html") if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) # for key, value in request.session.items(): # print('{} => {}'.format(key, value)) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2)) wall.save() # c = conversionPayment() s = MNFScriptDatabase.objects.get(user_id=request.user, script_id=script_id) # save central payment details in your database # s.payment_order_id = request.session["payment_order_id"] # # save central payment details in your database # s.central_payment_id = request.session["central_payment_id"] # try: # if request.session["is_juggernaut_used"]: # s.is_juggernaut_used = True # s.languages_juggernaut = request.session['languages_juggernaut'] # except: # pass translation_instance = ScriptTranslations() translation_instance.user_id = request.user translation_instance.script_link_id = s translation_instance.nondial_dest_language = request.session["nondial_dest_language"] translation_instance.nondial_dest_script = request.session["nondial_dest_script"] translation_instance.dial_dest_language = request.session["dial_dest_language"] translation_instance.dial_dest_script = request.session["dial_dest_script"] # Getting all choices of user regarding Full Dialogues Translation translation_instance.full_dialogue_option_choices = request.session["full_dialogue_option_choices"] # Getting all choices of user regarding Words of Dialogues Translation translation_instance.sentence_dialogue_option_choices = request.session["sentence_dialogue_option_choices"] # Getting all choices of user regarding translation and transliteration choices of slug, speaker, etc. translation_instance.other_option_choices = request.session["other_option_choices"] if request.session.get("dual_dial_script"): translation_instance.dual_dial_script = request.session["dual_dial_script"] translation_instance.left_dual_dial_lang = request.session["left_dual_dial_lang"] translation_instance.left_dual_dial_script = request.session["left_dual_dial_script"] if request.session.get("lpp"): translation_instance.lpp = request.session["lpp"] # save central payment details in your database translation_instance.payment_order_id = request.session["payment_order_id"] translation_instance.central_payment_id = request.session["central_payment_id"] translation_instance.save() print("saving") request.session['translation_id'] = str(translation_instance.translation_id) # c.pid = privilegedUser1.objects.get(user= request.user) # c.script_title = script_title # c.script_id = script_id # c.to_be_vetted_by_lpp = to_be_vetted_by_lpp # c.payment_intent_id = razorpay_payment_id # c.total_amount = str(total_amount) # c.script_file_path = script_file_path # c.has_paid = 'yes' # c.save() # request.session["payment_order_id"] = context["orderId"] # request.session["central_payment_id"] # payFetch = client.payment.fetch(razorpay_payment_id,({'expand[]':'card'})) # if client.payment.fetch(razorpay_payment_id, {"expand[]": "card"}): # pay_method = "CARD" # else: # pay_method = "NOTCard" # # -----------Adding Details to payment Details-------------------------- # currencyrate = request.session["CurrencyRate"] # user_id = request.user # payment_id = razorpay_payment_id # services_used = "Conversion" # script_info = s # total_amounts = round( # (request.session["numPages"] * CONVERSION_PER_PAGE * currencyrate), # 2, # ) # discount = round((request.session["discount"] * currencyrate), 2) # amount_charged = round((total_amount * currencyrate), 2) # gateway_fee = round( # ((RAZORPAY_PLATFORM_FEE / 100) * amount_charged), 2) # currency = "INR" # # pay_method = 'NOTCard' # payment_status = "Success" # payment_gateway = "RazorPay" # number_of_pages = request.session["numPages"] # print("totalamount:", total_amounts) # print("amountcharge:", amount_charged) # print("discount:", discount) # PaymentData.objects.create( # user_id=user_id, # payment_id=payment_id, # total_amount=total_amounts, # services_used=services_used, # script_info=script_info, # discount=discount, # amount_charged=amount_charged, # gateway_fee=gateway_fee, # currency=currency, # number_of_pages=number_of_pages, # pay_method=pay_method, # payment_status=payment_status, # payment_gateway=payment_gateway, # ) # try: # if request.session["directly_pay_monthly"]: # lasto = privilegedUser1.objects.last() # privilegedUser1.objects.create( # id=int(lasto.id) + 1, # user=user_id, # is_active="yes", # transactionId=payment_id, # memberType="normal", # months=1 # ) # del request.session['directly_pay_monthly'] # except: # pass # try: # if request.session["juggernaut_pages_deduction"]: # update_juggernaut(request, user_id=request.user.id, service_name="conversion", # conversion_pages=int(request.session["juggernaut_pages_deduction"]), # associated_project=s, translation_language=str(dial_dest_language)) # except Exception as e: # print("Error is: ", e) context = { "script_id": script_id, } to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP19", key_value=key_value) return render(request, "conversion/thanksconversion.html", context) else: # print("Get Request after payment is done razorpay1515") # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # return render(request, "payments/failed.html") to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP21", key_value=key_value) return render(request, "payments/failed.html") # -> Conversion Razorpay Payment Done Message def paymentDoneppt_RazorPay(request): keyID = request.session["keyID"] keySecret = request.session["keySecret"] if request.method == "POST": # x = pptconversion.objects.get(ppt_string=request.session["pptstring"]) # if request.session.get("want_to_be_vetted") == "on": # total_amount = x.amount # else: # total_amount = x.amount # razorpay_order_id = request.POST["razorpay_order_id"] # razorpay_payment_id = request.POST["razorpay_payment_id"] # razorpay_signature = request.POST["razorpay_signature"] # client = razorpay.Client(auth=(keyID, keySecret)) # params_dict = { # "razorpay_order_id": razorpay_order_id, # "razorpay_payment_id": razorpay_payment_id, # "razorpay_signature": razorpay_signature, # } # try: # client.utility.verify_payment_signature(params_dict) # except: # x.delete() # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # return render(request, "payments/failed.html") # # if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) # wall = Wallet.objects.get(user=request.user) # wall.balance = request.session["fbalance"] # wall.save() # # # payFetch = client.payment.fetch(razorpay_payment_id,({'expand[]':'card'})) # if client.payment.fetch(razorpay_payment_id, {"expand[]": "card"}): # pay_method = "CARD" # else: # pay_method = "NOTCard" # # -----------Adding Details to payment Details-------------------------- # currencyrate = request.session["CurrencyRate"] # user_id = request.user # payment_id = razorpay_payment_id # services_used = "Conversion" # total_amounts = round( # (x.slide_count * CONVERSION_PER_PAGE * currencyrate), # 2, # ) # discount = round((request.session["pptdiscount"] * currencyrate), 2) # amount_charged = round((total_amount * currencyrate), 2) # gateway_fee = round( # ((RAZORPAY_PLATFORM_FEE / 100) * amount_charged), 2) # currency = "INR" # # pay_method = 'NOTCard' # payment_status = "Success" # payment_gateway = "RazorPay" # number_of_pages = x.slide_count # print("totalamount:", total_amounts) # print("amountcharge:", amount_charged) # print("discount:", discount) # PaymentData.objects.create( # user_id=user_id, # payment_id=payment_id, # total_amount=total_amounts, # services_used=services_used, # discount=discount, # amount_charged=amount_charged, # gateway_fee=gateway_fee, # currency=currency, # number_of_pages=number_of_pages, # pay_method=pay_method, # payment_status=payment_status, # payment_gateway=payment_gateway, # ) # # with open(rf"{basePath}/ideamall/templates/ideamall/body.txt") as f: # body = f.read() # # context_email = { # "Date": date.today(), # "Name": x.user_id.email, # "emailcode": "", # "heading1": "Thank you!", # "heading2": " for using ppt conversion service " # + " you will get notification whenever the conversation completes", # "body": body, # } # # whomtosend, titleofmail, dateofemail, context\ # sendemail( # x.user_id.email, # "Thankyou for using service", # date.today(), # context_email, # EMAIL_HOST_USER, # ).start() # # sdsdsadsadsdsadsadsdsdasdsaaaaaaassss callback_context = callback(request.POST, request) ppt_id = request.session["ppt_id"] if callback_context['payment_status'] != 'success': pptconversion.objects.get(ppt_id=ppt_id).delete() subject = "Something really went wrong" from_email = settings.EMAIL_HOST_USER to = request.user.email context_2 = { "Name": request.user.email, "service_name": "Conversion", } mnfnsendemail( to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # sendmail(to_email=[ppt_instance.user_id.email,email_code='CP5') return render(request, "payments/failed.html") else: total_amount = request.session["amount"] if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) # for key, value in request.session.items(): # print('{} => {}'.format(key, value)) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2)) wall.save() ppt_instance = pptconversion.objects.get(ppt_id=ppt_id) # save central payment details in your database ppt_instance.central_payment_id = request.session["central_payment_id"] ppt_instance.payment_order_id = request.session["payment_order_id"] ppt_instance.save() sendmail(to_email=[ppt_instance.user_id.email], email_code='CP4') sendmail(to_email=[ppt_instance.user_id.email], email_code='CP10') ppt_conversion(ppt_id, request).start() sendmail(to_email=[ppt_instance.user_id.email], email_code='CP9') print('line---(2161)') print('is the email working for ppt') print('ppt_instance.user_id.email', ppt_instance.user_id.email) del request.session["pptstring"] return render(request, "conversion/thanksppt.html") # -> Conversion Stripe Payment Done Message def paymentDoneppt_stripe(request): if request.method == "GET": ppt_id = request.session["ppt_id"] # x = pptconversion.objects.filter( # ppt_string=request.session["pptstring"]) # # total_amount = x.amount # payment_intent_id = request.session["payment_intent_id"] # try: # pi = stripe.PaymentIntent.retrieve(payment_intent_id) # except: # x.delete() # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # return render(request, "payments/failed.html") # # if pi.status == "succeeded": # # if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) # wall = Wallet.objects.get(user=request.user) # wall.balance = request.session["fbalance"] # wall.save() # # # -----------Adding Details to payment Details-------------------------- # currencyrate = request.session["CurrencyRate"] # user_id = request.user # payment_id = payment_intent_id # services_used = "Conversion" # number_of_pages = x.slide_count # total_amounts = round( # (x.slide_count * CONVERSION_PER_PAGE * currencyrate), # 2, # ) # discount = round( # (request.session["pptdiscount"] * currencyrate), 2) # amount_charged = round((total_amount * currencyrate), 2) # gateway_fee = round( # ((STRIPE_PLATFORM_FEE / 100) * amount_charged), 2) # currency = "INR" # pay_method = "Card" # payment_status = "Success" # payment_gateway = "Stripe" # PaymentData.objects.create( # user_id=user_id, # services_used=services_used, # payment_id=payment_id, # amount_charged=amount_charged, # total_amount=total_amounts, # number_of_pages=number_of_pages, # gateway_fee=gateway_fee, # discount=discount, # currency=currency, # pay_method=pay_method, # payment_status=payment_status, # payment_gateway=payment_gateway, # ) # # with open(rf"{basePath}/ideamall/templates/ideamall/body.txt") as f: # body = f.read() # # context_email = { # "Date": date.today(), # "Name": x.user_id.email, # "emailcode": "", # "heading1": "Thank you!", # "heading2": " for using ppt conversion service " # + " you will get notification whenever the conversation completes", # "body": body, # } # # whomtosend, titleofmail, dateofemail, context\ # sendemail( # x.user_id.email, # "Thankyou for using service", # date.today(), # context_email, # EMAIL_HOST_USER, # ).start() # # sdsdsadsadsdsadsadsdsdasdsaaaaaaassss # ppt_conversion(x.ppt_id, request).start() # return render(request, "conversion/thanksppt.html") # else: # x.delete() # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # return render(request, "payments/failed.html") response = { "id": request.GET.get("payment_intent"), "client_secret": request.GET.get("payment_intent_client_secret"), "status": request.GET.get("redirect_status"), } callback_content = callback(response, request) if callback_content['payment_status'] == "success": if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) # for key, value in request.session.items(): # print('{} => {}'.format(key, value)) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - ( round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - ( round(request.session["pay_wallet_deduction"], 2)) wall.save() ppt_instance = pptconversion.objects.get(ppt_id=ppt_id) ppt_instance.central_payment_id = request.session[ "central_payment_id"] # save central payment details in your database ppt_instance.payment_order_id = request.session["payment_order_id"] ppt_instance.save() sendmail(to_email=[ppt_instance.user_id.email], email_code='CP4') sendmail(to_email=[ppt_instance.user_id.email], email_code='CP10') ppt_conversion(ppt_id, request).start() sendmail(to_email=[ppt_instance.user_id.email], email_code='CP9') print('line---(2282)') print('is the email working for ppt') del request.session["pptstring"] return render(request, "conversion/thanksppt.html") else: sendmail(to_email=[ppt_instance.user_id.email], email_code='CP') pptconversion.objects.get(ppt_id=ppt_id).delete() subject = "Something really went wrong" from_email = settings.EMAIL_HOST_USER to = request.user.email context_2 = { "Name": request.user.email, "service_name": "Conversion", } mnfnsendemail( to, subject, "payment/templates/payments/MR24.html", context_2, from_email) return render(request, "payments/failed.html") # -> Actually Running Translation of book def my_book(request): print("Entering My_Book Conversion Function") # -> PArsing the file location from database y = BookConversion.objects.get(book_id=str(request.GET["book_id"])) # -> Creating the directory for storing the extracted contents of docx path = str(y.upload_book) folder_name = (((path.split("/"))[-1]).split("."))[0] if not os.path.exists(f"{basePath}/media/scripts/book/{folder_name}"): os.mkdir(f"{basePath}/media/scripts/book/{folder_name}", mode=0o777) # -> Creating the convert a book instance convertBook_instance = ConvertBook() # -> Alerting User that transaltion has started to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP22", key_value=key_value) # -> Extracting the Docx contents as XML data_docx_list = convertBook_instance.extract_docx_contents( basePath + "/media/" + str(y.upload_book), f"{basePath}/media/scripts/book/{folder_name}") print("I am done till here 7878", data_docx_list) # -> Translating the contents and Recreating the docx book using the translated text convertBook_instance.recreate_translated_book( data_docx_list, f"{basePath}/media/scripts/book/{folder_name}/{str(folder_name)}_translated.docx", y.source_language, y.target_language) # orig_path = "" # for i in range(len(path)): # if i == len(path) - 1: # orig_path = orig_path + str(path[i]) # else: # orig_path = orig_path + str(path[i]) + "/" y.translated_book_docx = f"/media/scripts/book/{folder_name}/{str(folder_name)}_translated.docx" convert_to_pdf(f"{basePath}/media/scripts/book/{folder_name}/{str(folder_name)}_translated.docx", rf"{basePath}/media/scripts/book/{folder_name}/") y.translated_book_pdf = rf"/media/scripts/book/{folder_name}/{str(folder_name)}_translated.pdf" translated_book_pdf = rf"/media/scripts/book/{folder_name}/{str(folder_name)}_translated.pdf" y.save() # bookconversion = {} # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # contex =request.session["original_book"] # hash = uploadDataToIPFSNode(contex) # print("my_hash1",hash) # bookconversion["original_bookFile_hash"] = hash # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # contex =translated_book_pdf # hash = uploadDataToIPFSNode(contex) # print("my_hash2",hash) # bookconversion["translated_bookFile_hash"] = hash # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # UserId = blockchain_obj.user_id # Project = script_id # Data = str(bookconversion) # userPrivateKey =blockchain_obj.privateKey # userkey =decryptionOfPrivate(userPrivateKey) # hash =UploadConversionData(userkey.decode('utf-8'),UserId,Project,Data) to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP23", key_value=key_value) print("Exiting My_Book Conversion Function") return JsonResponse({"status": "success"}, status=200) def book_payment(request): # new payment 8000 set_payment_token(request) keyID = request.session["keyID"] keySecret = request.session["keySecret"] if request.method == "POST": if request.POST.get("want_to_be_vetted") == "yes": # print("amount to be paid", request.session["amount"]) # total_amount = request.session["amount"] # amount_lpp_without_discount = request.session["onlylppfee"] # print(request.session["amount"], " : Final Amount") request.session["want_to_be_vetted"] = "on" else: # print("amount to be paid", request.session["amount"]) # total_amount = request.session["amount"] request.session["want_to_be_vetted"] = request.POST.get( "want_to_be_vetted") # print("amount to be paid", request.session["amount"]) total_amount = request.session["amount"] # request.session["want_to_be_vetted"] = request.POST.get( # "want_to_be_vetted") # request.session["interested_to_be_lpp"] = request.POST.get( # "interested_to_be_lpp" # ) request.session["amount_before_pay_wallet"] = total_amount request.session["pay_with_wallet"] = "no" try: if request.POST.get("pay_wallet") == "on": request.session["pay_with_wallet"] = "yes" with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: curr = json.load(c) print(curr["rates"]["INR"]) try: rate = curr["rates"]["INR"] except Exception as e: print("checkout error", e) rate = 80 # balance = float(request.POST["balance"]) # payable = float(request.POST["payable"]) # wall = Wallet.objects.get(user=request.user) # request.session["fbalance"] = float( # wall.balance) - float(balance * rate) # wall.save() # request.session["amount"] = payable # total_amount = request.session["amount"] print("Checking Wallet") wall = Wallet.objects.get(user=request.user) print("this is walet", wall.balance) print(wall.balance) if wall.balance >= (total_amount * rate): print("wallet if hai") request.session["pay_wallet_deduction"] = round(total_amount * rate, 2) total_amount = 0 else: print("wallet else hai") request.session["pay_wallet_deduction"] = round(wall.balance, 2) total_amount = round((round(total_amount * rate, 2) - round(wall.balance, 2)) / rate, 2) except Exception as e: print("Error is ",e) # total_amount = request.session["amount"] total_amount1 = request.session["subtotal"] # amount_charged = request.session["amount"] # amount_discount = request.session["discount"] # total_amount1 = request.session["subtotal"] # amount_charged = request.session["amount"] amount_discount = request.session["discount"] services_used = 2 if request.POST.get("want_to_be_vetted") == "yes" else 1 context = create_indent(request, 'Conversion', str(request.session["book_id"]), services_used, '', total_amount1, total_amount, amount_discount) print("Create indent 9987", context) for key, value in request.session.items(): print('{} => {}'.format(key, value)) print(str(request.session["book_id"])) # instance = MNFScriptDatabase.objects.get(script_id=str(request.session["script_id"])) 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 request.session["CurrencyRate"] = rate centralPayment_instance = CentralPayment.objects.get( id=context["central_pay_id"]) # handle razor pay gateway → if "orderId" in context: # instance.payment_order_id = context["orderId"] # instance.central_payment_id = context["central_pay_id"] # instance.save() # save central payment details in your database request.session["payment_order_id"] = context["orderId"] request.session["central_payment_id"] = context["central_pay_id"] pid = centralPayment_instance.order_id amtINR = round(centralPayment_instance.amount_charged * rate, 2) context = { "pk": keyID, "amtINR": amtINR, "pid": pid, "amount": round(centralPayment_instance.amount_charged,2), } return render(request, "conversion/checkoutBook_RazorPay.html", context) # handle stripe gateway → elif "client_secret" in context: # save central payment details in your database request.session["payment_order_id"] = context["client_secret"] request.session["central_payment_id"] = context["central_pay_id"] amtINR = round(centralPayment_instance.amount_charged * rate,2) context = { "pk": STRIPE_PUB_KEY, "total_amount": round(centralPayment_instance.amount_charged, 2), "secret_key": context["client_secret"], "amtINR": amtINR, "STRIPE_PUBLISHABLE_KEY": STRIPE_PUB_KEY, } return render(request, "conversion/checkoutBook_Stripe.html", context) # handle corporate profile → elif "monthly_user" in context: book_instance = BookConversion.objects.get( book_id=request.session["book_id"]) book_instance.central_payment_id = context["central_pay_id"] book_instance.payment_order_id = "monthly_user" book_instance.save() # instance.payment_order_id = "corporate profile" # instance.central_payment_id = "corporate profile" # instance.save() return render(request, "conversion/thanksbook.html", {"book_id": request.session["book_id"]}) # -> At 10sec intervals check if book conversion completed def is_book_converted(request): book_id = request.GET["book_id"] obj = StoryConversion.objects.get(story_id=book_id) print("book still converting", obj.translated_book_docx) if obj.translated_book_docx: return JsonResponse({"status": "success"}, status=200) else: return JsonResponse({"status": "pending"}, status=202) # -> Fetching the Source Language and Number of Pages of book def check_book_lang(request): y = BookConversion() y.user_id = request.user now = datetime.datetime.now() rightNow = str(now) dash_splited = rightNow.split("-") str1 = "" for i in dash_splited: str1 += str(i) dash_splited1 = str1.split(" ") str2 = "" for i in dash_splited1: str2 += str(i) dash_splited2 = str2.split(":") str3 = "" for i in dash_splited2: str3 += str(i) dash_splited3 = str3.split(".") str4 = dash_splited3[0] # -> Checking Book Source Language y.book_id = "book_" + str(str4) y.upload_book = request.FILES['my_book'] # request.session["original_book"] = request.FILES['my_book'] y.save() try: number_pages = countPages( str(BASE_DIR) + "/media/" + str(y.upload_book), str(y.upload_book)[13:-4] + "pdf" ) docxx = docx.Document(str(BASE_DIR) + "/media/" + str(y.upload_book)) text = "" for paragraph in docxx.paragraphs: text += paragraph.text if text.strip() == "" or text.strip() == " " or len(text.strip()) < 5: pass else: break print("text is",text) src_language = language_detector(text) BookConversion.objects.get(id=y.id).delete() return JsonResponse({"Detected Language": languages[src_language], "number_pages": number_pages}) except Exception as e: print("Exception for language not getting detected is:", e) BookConversion.objects.get(id=y.id).delete() return JsonResponse({}, status=505) # -> Initital Saving of Book in database and extracting various languages present in that def convert_book(request): print("Request i", request.method) if request.method == "POST": print("Yes i am in here") y = BookConversion() y.user_id = request.user now = datetime.datetime.now() rightNow = str(now) dash_splited = rightNow.split("-") str1 = "" for i in dash_splited: str1 += str(i) dash_splited1 = str1.split(" ") str2 = "" for i in dash_splited1: str2 += str(i) dash_splited2 = str2.split(":") str3 = "" for i in dash_splited2: str3 += str(i) dash_splited3 = str3.split(".") str4 = dash_splited3[0] y.book_id = "book_" + str(str4) if request.POST.get("book_id"): print("Inside sample book if case") # book_sample = SampleBook.objects.get(book_id=request.POST.get("book_id")) # y.upload_book = book_sample.book_path # # print(request.POST.get("header_footer_addition"), "<- checkbox value") # # y.source_language = src_language # y.numPages = book_sample.number_pages # y.source_language = ((list(languages.keys()))[list( # languages.values()).index(book_sample.source_lang)]) # y.target_language = ((list(languages.keys()))[list( # languages.values()).index(request.POST.get("target_lang"))]) # y.header_footer_present = True if request.POST.get( # "header_footer_addition") else False # y.save() else: Book = AScript(request.POST, request.FILES) if Book.is_valid(): y.upload_book = Book.cleaned_data.get("myfile") # print(request.POST.get("header_footer_addition"), "<- checkbox value") # y.source_language = src_language y.numPages = request.POST.get("number_pages_var") y.source_language = ((list(languages.keys()))[list( languages.values()).index(request.POST.get("src_lang"))]) y.target_language = ((list(languages.keys()))[list( languages.values()).index(request.POST.get("target_lang"))]) y.header_footer_present = True if request.POST.get( "header_footer_addition") else False y.save() if int(y.numPages) <= 5 or request.POST.get("book_id"): return render(request, "conversion/thanksbook.html", {"book_id": y.book_id}) else: context = {} if request.POST.get("sample_free") == "on": return render(request, "conversion/thanksbook.html", {"book_id": y.book_id, "restrict_to_five":"yes"}) numPages = int(y.numPages) if request.POST.get("to_be_vetted_by_lpp") == "on": lpp_available = "yes" total_amount = round(int(float(pricing_data('Book Conversion', 4))) * numPages, 2) else: lpp_available = "no" total_amount = round(int(float(pricing_data('Script Conversion', 2))) * numPages, 2) context["subtotal"] = round(total_amount, 2) context["early_bird_discount"] = discount_limit_handler(DISCOUNT["early_bird"]) context["early_bird_calculate"] = round( float((total_amount) * context["early_bird_discount"] / 100), 2) # staff discount if User.objects.get(id=request.user.id).is_staff: # changes done by manoj context["sdiscount"] = discount_limit_handler(DISCOUNT["employ_discount"]) context["staff_discount_calculate"] = round(float( (total_amount - context["early_bird_calculate"]) * context[ "sdiscount"] / 100), 2) else: context["sdiscount"] = 0 context["staff_discount_calculate"] = 0 user = User.objects.get(id=request.user.id) try: memberType = privilegedUser1.objects.filter(user=user, is_active="yes") if memberType: memberType = memberType.first().memberType if memberType == "normal": context["pdiscount"] = 0 context["membership_discount_calculate"] = 0 elif memberType == "yearly": context["pdiscount"] = discount_limit_handler(DISCOUNT["yearly_member_additional"]) context["membership_discount_calculate"] = round(float(( total_amount - context[ "early_bird_calculate"] - context[ "staff_discount_calculate"]) * context["pdiscount"] / 100), 2) elif memberType == "Life Member": context["pdiscount"] = discount_limit_handler(DISCOUNT["life_member_additional"]) context["membership_discount_calculate"] = round(float(( total_amount - context[ "early_bird_calculate"] - context[ "staff_discount_calculate"]) * context["pdiscount"] / 100), 2) if not privilegedUser1.objects.filter(user=request.user, is_active="yes").exists(): context["monthly_membership"] = 1 # context["membershipNarration"] = discount_limit_handler(DISCOUNT["monthly_member"]) context["pdiscount"] = 0 context["membership_discount_calculate"] = 0 except: context["monthly_membership"] = 1 context["pdiscount"] = 0 context["membership_discount_calculate"] = 0 get_student_discount = get_discount(request.user.id, total_amount) if get_student_discount == 0: context["student_discount"] = 0 context["student_discount_calculate"] = 0 else: context["student_discount"] = get_student_discount context["student_discount_calculate"] = round(float((total_amount - context["early_bird_calculate"] - context["staff_discount_calculate"] - context["membership_discount_calculate"]) * context["student_discount"] / 100), 2) context["Total_discount"] = round(float( context["early_bird_calculate"] + context["staff_discount_calculate"] + context["membership_discount_calculate"] + context["student_discount_calculate"]), 2) context["remaining_amount"] = round(float(total_amount - context["Total_discount"]), 2) context["net_service_charge"] = round( float(context["remaining_amount"]), 2) # GST context["gst"] = discount_limit_handler(DISCOUNT["gst"]) context["gst_calculate"] = round(float(context["remaining_amount"] * context["gst"] / 100), 2) context["net_payable"] = round(float(context["remaining_amount"] + context["gst_calculate"]), 2) print(context) # -> OLD Code # context["book_id"] = y.book_id # request.session["book_id"] = y.book_id # payment calculation for book # pdiscount = 1 # sdiscount = 1 # mdiscount = 1 - settings.RUNNING_DISCOUNT_CONVERSION / 100 # # numPages = int(numPages) # # if not privilegedUser1.objects.filter( # user=request.user, is_active="yes" # ).exists(): # # messages.success(request, "Become privileged member") # # return redirect("payment") # request.session["directly_pay_monthly"] = 1 # context = {"directly_pay_monthly": 1} # try: # memberType = privilegedUser1.objects.get( # user=request.user, is_active="yes" # ).memberType # if memberType: # if memberType == "normal": # pdiscount = 1 # context["pdiscount"] = 0 # elif memberType == "yearly": # pdiscount = 1 - settings.YEARLY_MEMBER_ADDITIONAL / 100 # context["pdiscount"] = settings.YEARLY_MEMBER_ADDITIONAL # elif memberType == "Life Member": # pdiscount = 1 - settings.LIFE_MEMBER_ADDITIONAL / 100 # context["pdiscount"] = settings.LIFE_MEMBER_ADDITIONAL # if User.objects.get(id=request.user.id).is_staff: # sdiscount = 1 - settings.EMPLOY_DISCOUNT / 100 # except: # pdiscount = 1 # sdiscount = 1 # context["pdiscount"] = 0 # # pdiscount = 1 # # sdiscount = 1 # # mdiscount = 1 - settings.RUNNING_DISCOUNT_CONVERSION / 100 # # memberType = privilegedUser1.objects.get( # # user=request.user, is_active="yes" # # ).memberType # # if memberType: # # if memberType == "normal": # # pdiscount = 1 # # context["pdiscount"] = 0 # # elif memberType == "yearly": # # pdiscount = 1 - settings.YEARLY_MEMBER_ADDITIONAL / 100 # # context["pdiscount"] = settings.YEARLY_MEMBER_ADDITIONAL # # elif memberType == "Life Member": # # pdiscount = 1 - settings.LIFE_MEMBER_ADDITIONAL / 100 # # context["pdiscount"] = settings.LIFE_MEMBER_ADDITIONAL # if User.objects.get(id=request.user.id).is_staff: # sdiscount = 1 - settings.EMPLOY_DISCOUNT / 100 # # if request.POST.get("to_be_vetted_by_lpp") == "on": # # lpp_available = "yes" # # try: # # lppamt = ( # # (numPages * settings.CONVERSION_PER_PAGE) # # + (numPages * settings.LPP_PER_PAGE) # # + context["directly_pay_monthly"] # # ) # # except: # # lppamt = (numPages * settings.CONVERSION_PER_PAGE) + ( # # numPages * settings.LPP_PER_PAGE # # ) # # context["subtotal"] = round( # # numPages * settings.CONVERSION_PER_PAGE, 2 # # ) # # # amt = numPages * settings.CONVERSION_PER_PAGE # # # context["subtotal"] = round(amt, 2) # # # # # lppamt = (numPages * settings.CONVERSION_PER_PAGE) + ( # # # numPages * settings.LPP_PER_PAGE # # # ) # # context["onlylppfee"] = round((numPages * settings.LPP_PER_PAGE), 2) # # context["sublpptotal"] = round(lppamt, 2) # # context["amount"] = round( # # mdiscount * lppamt * pdiscount * sdiscount, 2 # # ) # # context["discount"] = lppamt - context["amount"] # # request.session["amount"] = context["amount"] # # request.session["onlylppfee"] = context["onlylppfee"] # # request.session["lppamount"] = context["amount"] # # request.session["discount"] = context["discount"] # # request.session["member_discount"] = mdiscount # # request.session["running_discount"] = pdiscount # # request.session["team_discount"] = sdiscount # # request.session["want_to_be_vetted"] = "on" # # else: # lpp_available = "no" # try: # amt = ( # numPages # * settings.CONVERSION_PER_PAGE # + context["directly_pay_monthly"] # ) # except: # amt = numPages * settings.CONVERSION_PER_PAGE # context["subtotal"] = round( # numPages * settings.CONVERSION_PER_PAGE, 2 # ) # context["amount"] = round( # mdiscount * amt * pdiscount * sdiscount, 2 # ) # context["discount"] = amt - context["amount"] # # # try: # request.session["amount"] = context["amount"] # # except: # # request.session["amount"] = context["amount"] # request.session["subtotal"] = context["subtotal"] # request.session["discount"] = context["discount"] # # context["conversion_per_page"] = settings.CONVERSION_PER_PAGE # context["lpp_per_page"] = settings.LPP_PER_PAGE # context[ # "running_discount_conversion" # ] = settings.RUNNING_DISCOUNT_CONVERSION # context["employ_discount"] = settings.EMPLOY_DISCOUNT # context["yearly_member_additional"] = settings.YEARLY_MEMBER_ADDITIONAL # context["life_member_additional"] = settings.LIFE_MEMBER_ADDITIONAL # # context["restrict_to_five"] = "no" # context["lpp_available"] = lpp_available.upper() # context["numPages"] = numPages # context["book_title"] = str(y.upload_book) # request.session["book_id"] = str(y.book_id) # context["src_lang"] = request.POST.get("src_lang") # context["dest_lang"] = request.POST.get("target_lang") # # request.session["script_file_path"] = x.script_file_path context["restrict_to_five"] = "no" context["lpp_available"] = lpp_available.upper() context["numPages"] = numPages context["book_title"] = str(y.upload_book) context["src_lang"] = request.POST.get("src_lang") context["dest_lang"] = request.POST.get("target_lang") request.session["amount"] = context["net_payable"] request.session["subtotal"] = context["subtotal"] request.session["discount"] = context["Total_discount"] request.session["book_id"] = str(y.book_id) request.session["book_title"] = str(y.upload_book) request.session["numPages"] = numPages try: wall = Wallet.objects.get(user=request.user) context["balance"] = round(wall.balance, 2) except: context["balance"] = -1 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 context["rate"] = rate str1 = str(datetime.datetime.now()).split("-") date_at = f'{str1[2][0:2]} - {str1[1]} - {str1[0]}' context['date_at'] = date_at try: cd = centralDatabase.objects.get(user_id=request.user) name = cd.firstName if cd.firstName else user.username email_id = cd.email if cd.email else user.email phone_number = str(cd.countryCode) + str(cd.contact) if cd.contact else "N/A" address = cd.address if cd.address else "N/A" except: name = user.username email_id = user.email phone_number = "N/A" address = "N/A" context["name"] = name context["email_id"] = email_id context["phone_number"] = phone_number context["address"] = address # try: # context["firstdiscount"] = # context["seconddiscount"] = # context["thirddiscount"] = # except Exception as e: # print(e, "<- Error") return render(request, "conversion/invoice_book.html", context) return render(request, "conversion/convertBook.html") # -> For Viewing Your Books # def view_converted_books(request): # number = ReferUser.objects.filter(refferedBy=request.user).count() # obj = BookConversion.objects.filter( # user_id=request.user).order_by("-date_at") # # book_path = [] # pq = 0 # for i in obj: # if i.translated_book_docx != "": # book_path.append(i.translated_book_docx) # pq += 1 # # return render( # request, # "conversion/viewConvertedBooks.html", # {"script_path": obj, "pq": pq, "number": number}, # ) # -> For Deleting your Book def delete_converted_book(request, id): to = request.user.email key_value = { "User": request.user.username, "book_name": (((str(BookConversion.objects.get(id=id).upload_book).split("/"))[-1]).split("."))[0] } sendmail(to_email=[to], email_code="PP25", key_value=key_value) BookConversion.objects.get(id=id).delete() # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): # blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) # userkey =decryptionOfPrivate(blockchain_obj.privateKey) # deleteConversion(userkey.decode('utf-8'),blockchain_obj.user_id,id) return HttpResponseRedirect("/conversion/view_conversion") def paymentDoneBook_RazorPay(request): keyID = request.session["keyID"] keySecret = request.session["keySecret"] if request.method == "POST": book_id = request.session["book_id"] book_title = request.session["book_title"] # if request.session.get("want_to_be_vetted"): # total_amount = request.session["lppamount"] # else: # total_amount = request.session["amount"] # to_be_vetted_by_lpp = request.session["want_to_be_vetted"] # total_amount = request.session["amount"] # razorpay_order_id = request.POST["razorpay_order_id"] # razorpay_payment_id = request.POST["razorpay_payment_id"] # razorpay_signature = request.POST["razorpay_signature"] # client = razorpay.Client(auth=(keyID, keySecret)) # params_dict = { # "razorpay_order_id": razorpay_order_id, # "razorpay_payment_id": razorpay_payment_id, # "razorpay_signature": razorpay_signature, # } callback_context = callback(request.POST, request) if callback_context['payment_status'] != 'success': BookConversion.objects.get(book_id=book_id).delete() # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # -> PAyment UnSuccessfull Email to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP26", key_value=key_value) return render(request, "payments/failed.html") else: # if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) # wall = Wallet.objects.get(user=request.user) # wall.balance = request.session["fbalance"] # wall.save() if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) # for key, value in request.session.items(): # print('{} => {}'.format(key, value)) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2)) wall.save() book_instance = BookConversion.objects.get(book_id=book_id) # save central payment details in your database book_instance.central_payment_id = request.session["central_payment_id"] book_instance.payment_order_id = request.session["payment_order_id"] book_instance.save() # -> PAyment UnSuccessfull Email to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP24", key_value=key_value) return render(request, "conversion/thanksbook.html", {"book_id": book_id}) # c = conversionPayment() # c.pid = privilegedUser1.objects.get(user= request.user) # c.script_title = script_title # c.script_id = script_id # c.to_be_vetted_by_lpp = to_be_vetted_by_lpp # c.payment_intent_id = razorpay_payment_id # c.total_amount = str(total_amount) # c.script_file_path = script_file_path # c.has_paid = 'yes' # c.save() # payFetch = client.payment.fetch(razorpay_payment_id,({'expand[]':'card'})) # if client.payment.fetch(razorpay_payment_id, {"expand[]": "card"}): # pay_method = "CARD" # else: # pay_method = "NOTCard" # # -----------Adding Details to payment Details-------------------------- # currencyrate = request.session["CurrencyRate"] # user_id = request.user # payment_id = razorpay_payment_id # services_used = "Book Conversion" # # script_info = s # total_amounts = round( # (request.session["numPages"] * CONVERSION_PER_PAGE * currencyrate), # 2, # ) # discount = round((request.session["discount"] * currencyrate), 2) # amount_charged = round((total_amount * currencyrate), 2) # gateway_fee = round( # ((RAZORPAY_PLATFORM_FEE / 100) * amount_charged), 2) # currency = "INR" # # pay_method = 'NOTCard' # payment_status = "Success" # payment_gateway = "RazorPay" # number_of_pages = request.session["numPages"] # PaymentData.objects.create( # user_id=user_id, # payment_id=payment_id, # total_amount=total_amounts, # services_used=services_used, # # script_info=script_info, # discount=discount, # amount_charged=amount_charged, # gateway_fee=gateway_fee, # currency=currency, # number_of_pages=number_of_pages, # pay_method=pay_method, # payment_status=payment_status, # payment_gateway=payment_gateway, # ) # try: # if request.session["directly_pay_monthly"]: # lasto = privilegedUser1.objects.last() # privilegedUser1.objects.create( # id=int(lasto.id) + 1, # user=user_id, # is_active="yes", # transactionId=payment_id, # memberType="normal", # months=1 # ) # del request.session['directly_pay_monthly'] # except: # pass # return render(request, "conversion/thanksconversion.html", context) def paymentDoneBook_Stripe(request): # if pi.status == "succeeded": # # if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) # walls = Wallet.objects.get(user=request.user) # walls.balance = request.session["fbalance"] # walls.save() # # # -----------Adding Details to payment Details-------------------------- # currencyrate = request.session["CurrencyRate"] # user_id = request.user # payment_id = payment_intent_id # services_used = "Book Conversion" # # script_info = s # number_of_pages = request.session["numPages"] # total_amounts = round( # (request.session["numPages"] * # CONVERSION_PER_PAGE * currencyrate), # 2, # ) # discount = round((request.session["discount"] * currencyrate), 2) # amount_charged = round((total_amount * currencyrate), 2) # gateway_fee = round( # ((STRIPE_PLATFORM_FEE / 100) * amount_charged), 2) # currency = "INR" # pay_method = "Card" # payment_status = "Success" # payment_gateway = "Stripe" # PaymentData.objects.create( # user_id=user_id, # services_used=services_used, # payment_id=payment_id, # # script_info=script_info, # amount_charged=amount_charged, # total_amount=total_amounts, # number_of_pages=number_of_pages, # gateway_fee=gateway_fee, # discount=discount, # currency=currency, # pay_method=pay_method, # payment_status=payment_status, # payment_gateway=payment_gateway, # ) # try: # if request.session["directly_pay_monthly"]: # lasto = privilegedUser1.objects.last() # privilegedUser1.objects.create( # id=int(lasto.id) + 1, # user=user_id, # is_active="yes", # transactionId=payment_id, # memberType="normal", # months=1 # ) # del request.session['directly_pay_monthly'] # except: # pass # # return render(request, "conversion/thanksbook.html", {"book_id": book_id}) # # # return render(request, "conversion/thanksconversion.html", context) # else: # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # return render(request, "payments/failed.html") if request.method == "GET": book_id = request.session["book_id"] book_title = request.session["book_title"] # if request.session.get("want_to_be_vetted"): # total_amount = request.session["lppamount"] # else: # total_amount = request.session["amount"] # total_amount = request.session["amount"] # to_be_vetted_by_lpp = request.session["want_to_be_vetted"] # payment_intent_id = request.session["payment_intent_id"] # pi = stripe.PaymentIntent.retrieve(payment_intent_id) response = { "id": request.GET.get("payment_intent"), "client_secret": request.GET.get("payment_intent_client_secret"), "status": request.GET.get("redirect_status"), } callback_content = callback(response, request) if callback_content['payment_status'] == "success": # if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) # walls = Wallet.objects.get(user=request.user) # walls.balance = request.session["fbalance"] # walls.save() if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) # for key, value in request.session.items(): # print('{} => {}'.format(key, value)) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2)) wall.save() book_instance = BookConversion.objects.get(book_id=book_id) book_instance.central_payment_id = request.session[ "central_payment_id"] # save central payment details in your database book_instance.payment_order_id = request.session["payment_order_id"] book_instance.save() # -> PAyment Successfull Email to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP24", key_value=key_value) return render(request, "conversion/thanksbook.html", {"book_id": book_id}) else: BookConversion.objects.get(book_id=book_id).delete() # subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = request.user.email # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) # -> PAyment UnSuccessfull Email to = request.user.email key_value = { "User": request.user.username, } sendmail(to_email=[to], email_code="PP26", key_value=key_value) return render(request, "payments/failed.html") # #IPFS # def start_ipfs_daemon(): # try: # # Check if the IPFS daemon is already running # subprocess.check_output(["ipfs", "id"]) # print("IPFS daemon is already running.") # except subprocess.CalledProcessError: # # If the IPFS daemon is not running, start it # print("Starting IPFS daemon...") # subprocess.Popen(["ipfs", "daemon"]) # # Wait for the daemon to start (you can adjust the delay as needed) # time.sleep(5) # print("IPFS daemon is now running.") # #IPFS END # start_ipfs_daemon() # -> For making Translated PPT's class ppt_conversion(threading.Thread): def __init__(self, ppt, request, restrict=False): self.ppt = ppt self.request = request self.restrict = restrict threading.Thread.__init__(self) def run(self): try: x = pptconversion.objects.get(ppt_id=self.ppt) presentation = Presentation(x.upload_ppt) if self.restrict: presentation = Presentation(x.upload_ppt) xml_slides = presentation.slides._sldIdLst slides = list(xml_slides) # Then I loop for all except the first (index 0): for index in range(3, len(slides)): xml_slides.remove(slides[index]) t = random.randint(1, 1000) times = time.time() times = int(times) for key, value in languages.items(): if value == x.target_lang: target = key if value == x.source_lang: source = key print(">:>:>:>:12 translation start") translate_presentation(presentation, source, target, x.target_script, self.restrict) print(">:>:>:>:12 translation end") translated_ppt = f"{x.user_id}-{source}-{target}-{t}-{times}.pptx" paths = f"{basePath}/media/ppt/converted/{translated_ppt}" presentation.save(paths) print(f"presentation convert saved {translated_ppt}") x.translated_ppt = translated_ppt x.save() print('x.user_id.email', x.user_id.email) sendmail(to_email=[x.user_id.email], email_code='CP2') # Blockchain here---> if UserCredentialsForBlockchain.objects.filter(user=self.request.user).exists(): blockchain_obj = UserCredentialsForBlockchain.objects.get( user=self.request.user) privatekey = blockchain_obj.privateKey user_id = blockchain_obj.user_id Project = self.request.session["script_id"] private_Key = decryptionOfPrivate(privatekey) status, getData = getPPTConversion( private_Key.decode('utf-8'), user_id, Project) if status == True: data1 = getData[1] pptconversion1 = eval(data1) with open(f"{basePath}/media/ppt/converted/{translated_ppt}", 'rb') as _file: hash = uploadDataToIPFSNode(_file) pptconversion1["translated_ppt_hash"] = hash pptconversion1["translated_ppt_path"] = paths pptconversion1["translated_ppt"] = translated_ppt original_file_path = pptconversion1.get("ppt_scriptFile_path") user_id = blockchain_obj.user_id project = self.request.session["script_id"] Data = str(pptconversion1) response = UploadPPTConversionData( OWNER_KEY,blockchain_obj.publicKey,user_id, project, Data) print("Response_final :", response) hash = hash_decrypation(hash) certificatepath = certificateGenrate(self.request.user.username,"PPT Conversion",hash) to_email = [self.request.user.email] email_code = 'BL1' key_value = { "service":"PPT Conversion", "hash": hash, "public key":blockchain_obj.publicKey, "private key":private_Key.decode('utf-8'), } print("::::::::::::::",key_value) sendmail(to_email=to_email , email_code=email_code,key_value=key_value, filePath=certificatepath) # For Vetting # if request.session # obj = ppt.objects.get(script_id=script_id) if x.lpp is True: print("Making Vetting Request for ppt") X = LPPTASKDatabase() X.user_id = x.user_id X.usernote = "Kindly check if the translated ppt file is correct as per the Uploaded PPT!" X.translated_ppt = x X.generated_from = "conversion" X.amoutgiventolpp_dialogue = self.request.session["lppamount_after_discount"] # temp_amount = ((request.session['onlylppfee']) * request.session['team_discount'] # * request.session['member_discount'] * request.session['running_discount']) # X.amoutgiventolpp_action = round((temp_amount/2), 2) # X.amoutgiventolpp_dialogue = round((temp_amount/2), 2) X.save() # task_assigner(int(X.task_id), "conversion_ppt") print("Making Vetting task Request for ppt") else: # temp1 = str(x.upload_ppt) # temp = f"{basePath}/media/{temp1}" # data = [temp, paths] # print(self.request.session["originalppt"]) # print(data, x.ppt_string, self.request.user.email, # " : Passed to blockchain") # files, timestamp = upload_multiFile_to_ipfs( # data, x.ppt_string, "convertPPT", self.request.user.email) # x.timestamp = timestamp # x.uploaded_ppt_encoded = files[0] # x.translated_ppt_encoded = files[1] # print(x.timestamp, x.uploaded_ppt_encoded, # x.translated_ppt_encoded, " : Return from Blockchain") x.save() # "heading2": f"To view from blockchain use following details: Timestamp - {x.timestamp}, Key - {x.script_title}, Service - convertScript", with open(rf"{basePath}/ideamall/templates/ideamall/body.txt") as f: body = f.read() context_email = { "Date": date.today(), "Name": x.user_id.email, "emailcode": "", "heading1": "Congratulation! your presentation is converted", "heading2": "Thank you for using our service", "body": body, } # import os # if os.path.exists(f"{basePath}/media/ppt/converted/{translated_ppt}"): # os.remove(f"{basePath}/media/ppt/converted/{translated_ppt}") # else: # print("The file does not exist") # if os.path.exists(original_file_path): # os.remove(original_file_path) # else: # print("The file does not exist") # # whomtosend, titleofmail, dateofemail, context\ # # sendemail( # # x.user_id.email, # # "conversion complete", # # date.today(), # # context_email, # # EMAIL_HOST_USER, # # ).start() # # sendmail(to_email=[x.user_id.email],email_code='CP2') # return True except Exception as e: print("Errorr is", e) # write refund code x = pptconversion.objects.get(ppt_id=self.ppt) auto_refund(x.central_payment_id) class ppt_Files_Download(threading.Thread): def __init__(self, ppt_file, Path): self.ppt_file = ppt_file self.Path = Path threading.Thread.__init__(self) def run(self): download_file_System(self.ppt_file, self.Path) class ppt_Original_Download(threading.Thread): def __init__(self, ppt_file, Path): self.ppt_file = ppt_file self.Path = Path threading.Thread.__init__(self) def run(self): download_file_System(self.ppt_file, self.Path) def get_ppt_script(request): if request.method == "POST": df = pd.read_csv(rf"{basePath}/lpp/scripts.csv") lang1 = request.POST.get("language") print(lang1) if lang1 == "": lang1 = "English" print(lang1, " : languages :: types : ", type(lang1)) list1_d = df.loc[df[lang1] == "D", "Script"].tolist() print("Bakery 20.1: ", list1_d) return JsonResponse({"data": list1_d}) # -> Initital Saving of PPT in database and extracting various languages present in that def pptcovert(request): print("Entered ConversionFunction") # print("MY base path is " ,str(BASE_DIR)) if request.method == "POST": start_time = time.time() restrict = request.POST.get('restrict') print(request.POST) x = pptconversion() x.ppt_string = str(time.time()) + "-ppt" ppt_string = str(time.time()) + "-ppt" script_id = int(time.time()) # request.session["script_id"] = str(script_id) MyURL = "" dial_src_script = "" non_dial_src_lang = "" non_dial_src_script = "" script_title = "" author_name = "" numPages = 0 context = {} print("pptuploadedfn") user_id = request.user x.upload_ppt = request.FILES.get("script") file_path = str(request.FILES.get("script")) request.session["originalppt"] = f"{basePath}/media/ppt/original/{file_path}" x.user_id = request.user request.session["pptstring"] = x.ppt_string author_name = str(request.user.username) script_title = x.upload_ppt.name.split("/")[-1] request.session["slide_title"] = script_title print("pptuploadedfn2") prs = Presentation(x.upload_ppt) numPages = len(prs.slides) if restrict and numPages > 3: numPages = 3 x.slide_count = numPages print("Value of restrict:", restrict) print("Number of pages:", numPages) print(len(prs.slides), "pptuploadedfn3") x.save() MyURL = "/media/scripts/ppt/" + str(script_title) i = 1 # Blockchain pptconversion1 = {} if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user) private_Key = decryptionOfPrivate(blockchain_obj.privateKey) contex = request.FILES.get("script") with open(f"{basePath}/media/{x.upload_ppt}", 'rb') as _file: hash = uploadDataToIPFSNode(_file) pptconversion1["ppt_scriptFile_hash"] = hash print("my_hash1", hash) current_datetime = datetime.datetime.now() pptconversion1["slide_count"] = numPages pptconversion1["ppt_string"] = ppt_string pptconversion1["script_title"] = script_title pptconversion1["non_dial_src_lang"] = non_dial_src_lang pptconversion1["author_name"] = author_name pptconversion1["ppt_scriptFile_path"] = f"{basePath}/media/{x.upload_ppt}" pptconversion1["upload_ppt"] = f"{x.upload_ppt}" pptconversion1["date_at"] = current_datetime.strftime( "%Y-%m-%d %H:%M:%S") hash = hash_decrypation(hash) certificatepath = certificateGenrate(request.user.username,"Original PPT",hash) to_email = [request.user.email] email_code = 'BL1' key_value = { "service":"Original PPT", "hash": hash, "public key":blockchain_obj.publicKey, "private key":private_Key.decode('utf-8') } sendmail(to_email=to_email , email_code=email_code,key_value=key_value,filePath=certificatepath) request.session["pptconversion1"] = str(pptconversion1) for slide in prs.slides: print("slide number %d" % i) i += 1 etc_list = ["", " ", ",", " ,"] sentence = "" non_dial_src_lang = "" script_use = "" print('#9870124555') # if slide.shapes[0].text is not None: # sentence = slide.shapes[0].text if slide.shapes[0].has_text_frame: sentence = slide.shapes[0].text sentence = re.sub( """[!@#$%^&*()+=}{:;"'<>?/_-]""", "", sentence) if len(sentence) < 5: continue non_dial_src_lang = language_detector(sentence) script_use = script_det(sentence) if non_dial_src_lang != "" and script_use != "": print(i, "slidessssssssssssss") print( non_dial_src_lang, script_use, "languagesssssssssssssssssssssss" ) break else: if slide.has_notes_slide: text_frame = slide.notes_slide.notes_text_frame if len(text_frame.text) > 0: try: if text_frame.text in etc_list: continue # print("text", text_frame.text) sentence = text_frame.text translator = Translator() non_dial_src_lang = language_detector(sentence) script_use = script_det(sentence) if non_dial_src_lang != "" and script_use != "": break except: non_dial_src_lang = "" sentence = "" script_use = "" else: break if sentence == "": for shape in slide.shapes: if not shape.has_text_frame: continue for paragraph in shape.text_frame.paragraphs: for index, paragraph_run in enumerate(paragraph.runs): try: if paragraph_run.text in etc_list: continue sentence = paragraph_run.text translator = Translator() non_dial_src_lang = language_detector( sentence) script_use = script_det(sentence) if non_dial_src_lang != "" and script_use != "": break except: non_dial_src_lang = "" sentence = "" script_use = "" else: break # slide = prs.slides[0] # heading = slide.shapes.title.text # translator = Translator() # non_dial_src_lang = translator.detect(heading) # print("00000000000000000000000000000000000000000000000000000000000000000000000000000000000000", # non_dial_src_lang.lang) # script_use = script_det(heading) # print("script used: ", script_use) # print("The Data of formInput is:", formInput) request.session["script_use"] = script_use slang = languages.get(non_dial_src_lang) if slang == None: slang = "abc" context = { "id": user_id, "numPages": numPages, "ppt": x.upload_ppt, "option4": languages, "fileName": MyURL, "non_dial_src_lang": non_dial_src_lang, "non_dial_src_lang_full": slang, "author_name": author_name, "script_title": script_title, "Uppt": prs, } print("-----------------------------------------------") print(context) end_time = time.time() print("-------------Taken Time for input ppt processing->", end_time - start_time) return render(request, "conversion/pptupload.html", context) return render(request, "conversion/pptupload.html") def pptDiscountHandler(): pass # -> Actually Running Translation and Transliteration of PPT def convertppt(request): if request.method == "POST": print("request.session variables", ) for key, value in request.session.items(): print('{} => {}'.format(key, value)) for key, value in request.POST.items(): print('{} => {}'.format(key, value)) try: x = pptconversion.objects.get(ppt_string=request.session["pptstring"]) except: x = pptconversion() x.user_id = request.user print("slides number are",x.slide_count) try: if x.upload_ppt: print("exists ") else: x.upload_ppt = request.POST.get("fileUpload") except: x.upload_ppt = request.POST.get("fileUpload") source_language = request.POST.get("non_dial_src_lang") x.source_lang = languages[source_language] try: x.source_script = request.session["script_use"] except: x.source_script = language_script[str(x.source_lang)] x.target_lang = request.POST.get("nondial_dest_language") x.target_script = request.POST.get("dial_dest_script") restrict = False # x.sample = request.POST.get("restrict") if request.POST.get("restrict") == 'on': x.slide_count = 3 restrict = True print(request.POST.get("to_be_vetted_by_lpp"), "Vetting on or off #787") #sample blockchain try: pptconversion1 = eval(request.session["pptconversion1"]) except: pptconversion1 = {} if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): with open(f"{basePath}/media/{x.upload_ppt}", 'rb') as _file: hash = uploadDataToIPFSNode(_file) pptconversion1["ppt_scriptFile_hash"] = hash print("my_hash1", hash) current_datetime = datetime.datetime.now() pptconversion1["slide_count"] = request.POST.get("numPages") pptconversion1["ppt_string"] = request.POST.get("ppt_string") pptconversion1["script_title"] = request.POST.get("script_title") pptconversion1["non_dial_src_lang"] = request.POST.get("non_dial_src_lang") pptconversion1["author_name"] = request.POST.get("author_name") pptconversion1["ppt_scriptFile_path"] = f"{basePath}/media/{x.upload_ppt}" pptconversion1["upload_ppt"] = f"{x.upload_ppt}" pptconversion1["date_at"] = current_datetime.strftime( "%Y-%m-%d %H:%M:%S") request.session["pptconversion1"] = str(pptconversion1) if request.POST.get("to_be_vetted_by_lpp") == "on": x.lpp = True pptconversion1["lpp"] = True id = x.ppt_id request.session["script_id"] = str(id) try: if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): blockchain_obj = UserCredentialsForBlockchain.objects.get( user=request.user) pptconversion1["source_lang"] = languages[source_language] pptconversion1["target_lang"] = request.POST.get( "nondial_dest_language") pptconversion1["target_script"] = request.POST.get( "dial_dest_script") pptconversion1["ppt_id"] = request.session["script_id"] UserId = blockchain_obj.user_id Project = request.session["script_id"] # Project = id Data = str(pptconversion1) userPrivateKey = blockchain_obj.privateKey userkey = decryptionOfPrivate(userPrivateKey) hash = UploadPPTConversionData( OWNER_KEY,blockchain_obj.publicKey, UserId, Project, Data) print("my_tx_hash", hash) except: pass if x.slide_count <= 3: x.amount = 0 x.save() # with open(rf"{basePath}/ideamall/templates/ideamall/body.txt") as f: # body = f.read() # context_email = { # "Date": date.today(), # "Name": x.user_id.email, # "emailcode": "", # "heading1": "Thank you!", # "heading2": " for using ppt conversion service " # + " you will get notification whenever the conversation completes", # "body": body, # } # whomtosend, titleofmail, dateofemail, context\ # sendemail( # x.user_id.email, # "Thankyou for using service", # date.today(), # context_email, # EMAIL_HOST_USER, # ).start() print("Starting conversion of ppt") print(x.upload_ppt) ppt_conversion(x.ppt_id, request, restrict).start() try: del request.session["pptstring"] except: pass sendmail(to_email=[x.user_id.email], email_code='CP4') sendmail(to_email=[x.user_id.email], email_code='CP9') print('is the email working for ppt') print("ending conversion of ppt") return render(request, "conversion/thanksppt.html") # Blockchain implement if request.POST.get("to_be_vetted_by_lpp") == "on": lpp_available = "yes" total_amount = round(int(float(pricing_data('PPT Conversion', 4))) * x.slide_count, 2) else: lpp_available = "no" total_amount = round(int(float(pricing_data('PPT Conversion', 2))) * x.slide_count, 2) print('All discounts ----------------------', centralPayment_get_discounts(request, total_amount)) pricelist = centralPayment_get_discounts(request, total_amount) context = {} context["ppt_id"] = id request.session["ppt_id"] = str(id) context["sub_total"] = round(total_amount, 2) context["membership_discount"] = pricelist["membership_discount_calculate"] context["staff_discount"] = pricelist["staff_discount_calculate"] context["student_discount"] = pricelist["student_discount_calculate"] context["early_bird_discount"] = pricelist["early_bird_calculate"] context['total_discount'] = pricelist['total_discount'] context['net_service_charge'] = pricelist['net_service_charge'] context["total_payable"] = pricelist["total_payable"] context["gst_calculate"] = pricelist["gst_calculate"] context["gross_payable"] = pricelist["gross_payable"] if request.POST.get("to_be_vetted_by_lpp") == "on": calc = round(float((float(pricing_data("PPT Conversion", 4)) - float(pricing_data("PPT Conversion", 2))) / float(pricing_data("PPT Conversion", 4))) * pricelist["total_payable"], 2) request.session['lppamount_after_discount'] = calc if not privilegedUser1.objects.filter(user=request.user, is_active="yes").exists(): context["monthly_membership"] = 1 #old code to be destoyed # context = {} # context["ppt_id"] = id # request.session["ppt_id"] = str(id) # print("ending conversion of ppt1") # # payment calculation for presentation # pdiscount = 1 # sdiscount = 1 # mdiscount = 1 - RUNNING_DISCOUNT_CONVERSION / 100 # # if not privilegedUser1.objects.filter( # # user=request.user, is_active="yes" # # ).exists(): # # messages.success(request, "Become privileged member") # # return redirect("payment") # # return True # if not privilegedUser1.objects.filter( # user=request.user, is_active="yes" # ).exists(): # # messages.success(request, "Become privileged member") # # return redirect("payment") # # request.session["directly_pay_monthly"] = 1 # context = {"directly_pay_monthly": 1} # try: # memberType = privilegedUser1.objects.get( # user=request.user, is_active="yes" # ).memberType # print("ending conversion of ppt2") # if memberType: # if memberType == "normal": # pdiscount = 1 # context["pdiscount"] = 0 # elif memberType == "yearly": # pdiscount = 1 - YEARLY_MEMBER_ADDITIONAL / 100 # context["pdiscount"] = YEARLY_MEMBER_ADDITIONAL # elif memberType == "Life Member": # pdiscount = 1 - LIFE_MEMBER_ADDITIONAL / 100 # context["pdiscount"] = LIFE_MEMBER_ADDITIONAL # except: # pdiscount = 1 # # sdiscount = 1 # context["pdiscount"] = 0 # print("ending conversion of ppt3") # if User.objects.get(id=request.user.id).is_staff: # sdiscount = 1 - EMPLOY_DISCOUNT / 100 # else: # sdiscount = 1 # if request.POST.get("to_be_vetted_by_lpp") == "on": # lpp_available = "yes" # amt = x.slide_count * CONVERSION_PER_PAGE # context["total"] = round(amt, 2) # lppamt = (x.slide_count * CONVERSION_PER_PAGE) + ( # x.slide_count * LPP_PER_PAGE # ) # context["onlylppfee"] = round((x.slide_count * LPP_PER_PAGE), 2) # amount_to_be_given_to_lpp = round( # mdiscount * context["onlylppfee"] * pdiscount * sdiscount, 2 # ) # context["subtotal"] = round(lppamt, 2) # context["amount"] = round( # mdiscount * lppamt * pdiscount * sdiscount, 2) # x.amount = context["amount"] # request.session["pptamount"] = context["amount"] # context["discount"] = lppamt - context["amount"] # request.session["pptdiscount"] = lppamt - context["amount"] # request.session["lppamount_after_discount"] = amount_to_be_given_to_lpp # request.session["total_amount1"] = context["subtotal"] # request.session["amount1"] = context["amount"] # request.session["discount1"] = context["discount"] # print("ending conversion of ppt4") # else: # print("ending conversion of ppt5") # lpp_available = "no" # amt = x.slide_count * CONVERSION_PER_PAGE # context["total"] = round(amt, 2) # context["subtotal"] = round(amt, 2) # context["amount"] = round( # mdiscount * amt * pdiscount * sdiscount, 2) # context["discount"] = amt - context["amount"] # x.amount = context["amount"] # request.session["total_amount1"] = context["total"] # request.session["amount1"] = context["amount"] # request.session["discount1"] = context["discount"] # request.session["pptamount"] = context["amount"] # request.session["pptdiscount"] = amt - context["amount"] # print("ending conversion of ppt6") # context["conversion_per_page"] = CONVERSION_PER_PAGE # context["lpp_per_page"] = LPP_PER_PAGE # context["running_discount_conversion"] = RUNNING_DISCOUNT_CONVERSION # context["employ_discount"] = EMPLOY_DISCOUNT # context["yearly_member_additional"] = YEARLY_MEMBER_ADDITIONAL # context["life_member_additional"] = LIFE_MEMBER_ADDITIONAL # context["value_after_rd"] = round( # ((context["running_discount_conversion"] / 100)) * context["subtotal"], 2) # context["value_after_td"] = round(((context["employ_discount"] / 100)) * ( # 1 - (context["running_discount_conversion"] / 100)) * context["subtotal"], 2) # context["value_after_md"] = round(((context["pdiscount"] / 100)) * (1 - (context["employ_discount"] / 100)) * ( # 1 - (context["running_discount_conversion"] / 100)) * context["subtotal"], 2) context["restrict_to_five"] = "no" context["lpp_available"] = lpp_available.upper() context["numPages"] = x.slide_count # context["script_title"] = x.script_title context["ndial_src"] = x.source_lang context["ndial_dest"] = x.target_lang context["dial_dest_script"] = x.target_script context["dial_src_script"] = x.source_script context["ppt_title"] = request.session["slide_title"].split(".")[0] print("ending conversion of ppt7") x.save() print("ending conversion of ppt8") print("kuch na kaho3456") try: wall = Wallet.objects.get(user=request.user) context["balance"] = round(wall.balance, 2) print('Kya na kaho3456') except: context["balance"] = -1 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())) print("kuch na kaho3456789") except Exception as e: print("checkout error", e) rate = 80 context["rate"] = rate user = User.objects.get(id=request.user.id) str1 = str(datetime.datetime.now()).split("-") date_at = f'{str1[2][0:2]} - {str1[1]} - {str1[0]}' context['date_at'] = date_at try: cd = centralDatabase.objects.get(user_id=request.user) name = cd.firstName if cd.firstName else user.username email_id = cd.email if cd.email else user.email # phone_number = str(cd.countryCode) + str(cd.contact) if cd.contact else "N/A" # address = cd.address if cd.address else "N/A" except: user = User.objects.get(id=request.user.id) name = user.username email_id = user.email # phone_number = "N/A" # address = "N/A" context["name"] = name context["email_id"] = email_id context["phone_number"] = pricelist['contact'] if pricelist['contact'] else "N/A" context["address"] = pricelist['address'] if pricelist['address'] else "N/A" request.session['amount'] = context['gross_payable'] request.session["discount"] = context["total_discount"] request.session["subtotal"] = context["sub_total"] print("kuch na kaho34560000") return render(request, "conversion/invoice_pptconversion.html", context) # -> For Deleting your PPT def delete_ppt(request, id): # if request.method == "POST": # x = pptconversion.objects.get(ppt_id=request.POST.get("pptid")) # print(x, 'did i do that or what?') # sendmail(to_email=[request.user.email],email_code='CP7') sendmail(to_email=[request.user.email], email_code='CP7') # pptconversion.objects.get(ppt_id=id).delete() if UserCredentialsForBlockchain.objects.filter(user=request.user).exists(): try: blockchain_obj = UserCredentialsForBlockchain.objects.get( user=request.user) userkey = decryptionOfPrivate(blockchain_obj.privateKey) print("funcation is calling.......", userkey.decode( 'utf-8'), blockchain_obj.user_id, id) deletePPTConversion(OWNER_KEY,blockchain_obj.publicKey, blockchain_obj.user_id, id) print("funcation called......", userkey.decode( 'utf-8'), blockchain_obj.user_id, id) pptconversion.objects.get(ppt_id=id).delete() return HttpResponseRedirect("/conversion/view_conversion") except: pptconversion.objects.get(ppt_id=id).delete() return HttpResponseRedirect("/conversion/view_conversion") else: pptconversion.objects.get(ppt_id=id).delete() return HttpResponseRedirect("/conversion/view_conversion") # -> Feedback on Conversion of PPT by User def feedback_ppt(request): if request.method == "POST": x = pptconversion.objects.get(ppt_id=request.POST.get("pptid")) if ( str(request.POST.get("error_text")) == " " or str(request.POST.get("error_text")) == "" ): x.error_faced_feedback = "" else: x.error_faced_feedback = str(request.POST.get("error_text")) if request.POST.get("rating") == " " or request.POST.get("rating") == "": x.translation_accuracy_rate = 0 else: x.translation_accuracy_rate = int(request.POST.get("rating")) x.improvement_feedback = str(request.POST.get("improvement")) x.attention_feedback = str(request.POST.get("text")) try: x.exp_rate = int(request.POST.get("accurate")) except: pass try: x.content_accuracy_rate = int(request.POST.get("language")) except: pass x.save() with open(rf"{basePath}/ideamall/templates/ideamall/body.txt") as f: body = f.read() context_email = { "Date": date.today(), "Name": x.user_id.email, "emailcode": "", "heading1": "Thank you!", "heading2": " your feedback is very important for us, thankyou for feedback ", "body": body, } # whomtosend, titleofmail, dateofemail, context\ # sendemail( # x.user_id.email, # "Feedback recieved", # date.today(), # context_email, # EMAIL_HOST_USER, # ).start() sendmail(to_email=[x.user_id.email], email_code='CP8') print("feedback of ppt mail") return redirect("view_conversion") def ppt_tutorial(request): return render(request,"conversion/Tutorial_video.html") @login_required(login_url="/PersonalLogin-2") def Get_Existing_Scripts(request): scripts = MNFScriptDatabase.objects.filter(user_id = request.user.id).values_list('script_id', 'script_file_path') if len(scripts) == 0: return JsonResponse({"status":"Success", }) existing_scripts = {} for script in scripts: existing_scripts[str((((str(script[1]).split("/"))[-1]).split("."))[0])] = str(script[0]) return JsonResponse(existing_scripts) @login_required(login_url="/PersonalLogin-2") def load_existing_script(request, id): # -> Loading Script script = MNFScriptDatabase.objects.get(user_id = request.user, script_id = id) context = { "id": script.id, "numPages": script.numPages, "author_name": script.author_name, "script_title": script.script_title, "dial_src_script": script.dial_src_script, "dial_src_lang_full": languages.get(script.dial_src_language), "non_dial_src_script": script.nondial_src_script, "non_dial_src_lang_full": languages.get(script.nondial_src_language), "existing_script": True, } print("Redirecting to 2nd Page", context) return render(request, "conversion2/conversion_processing.html", context) def lpp_after_conversion_payment(request): obj = ScriptTranslations.objects.get(translation_id=request.POST.get('translation_id')) total_amount = round(int(float(pricing_data('Script Conversion', 4)) - float(pricing_data('Script Conversion', 2))) * obj.script_link_id.numPages, 2) request.session['translation_id'] = request.POST.get('translation_id') pricelist = centralPayment_get_discounts(request, total_amount) print("pricelist", pricelist) context = {} context['script_title'] = (((obj.script_link_id.script_file_path.split("/"))[-1]).split("."))[0] context['numPages'] = obj.script_link_id.numPages context['ndial_src'] = languages[obj.script_link_id.nondial_src_language] context['dial_src'] = languages[obj.script_link_id.nondial_src_language] context["ndial_dest"] = languages[obj.nondial_dest_language] context["dial_dest"] = languages[obj.dial_dest_language] context["dial_dest_script"] = obj.dial_dest_script if not privilegedUser1.objects.filter(user=request.user, is_active="yes").exists(): context["monthly_membership"] = 1 context["subtotal"] = round(total_amount, 2) context["early_bird_calculate"] = pricelist["early_bird_calculate"] context["staff_discount_calculate"] = pricelist["staff_discount_calculate"] context["membership_discount_calculate"] = pricelist["membership_discount_calculate"] context["student_discount_calculate"] = pricelist["student_discount_calculate"] if int(pricelist['student_discount_calculate']) > 0: request.session['student_discount_calculate'] = "Yes" else: request.session['student_discount_calculate'] = "No" context['Total_discount'] = pricelist['total_discount'] context['remaining_amount'] = pricelist['total_payable'] context["net_service_charge"] = pricelist["net_service_charge"] context["gst_calculate"] = pricelist["gst_calculate"] context["net_payable"] = pricelist["gross_payable"] request.session['amount'] = context["net_payable"] request.session['subtotal'] = context["subtotal"] request.session['discount'] = context["Total_discount"] try: wall = Wallet.objects.get(user=request.user) context["balance"] = round(wall.balance, 2) except: context["balance"] = -1 with open(f"{basePath}/MNF/json_keys/conversionRates.json") as c: curr = json.load(c) try: rate = curr["rates"]["INR"] except Exception as e: print("checkout error", e) rate = 80 context["rate"] = rate str1 = str(datetime.datetime.now()).split("-") date_at = f'{str1[2][0:2]} - {str1[1]} - {str1[0]}' context['date_at'] = date_at user = User.objects.get(id=request.user.id) try: cd = centralDatabase.objects.get(user_id=request.user) name = cd.firstName if cd.firstName else user.username email_id = cd.email if cd.email else user.email phone_number = str(cd.countryCode) + str(cd.contact) if cd.contact else "N/A" address = cd.address if cd.address else "N/A" except: name = user.username email_id = user.email phone_number = "N/A" address = "N/A" context["name"] = name context["email_id"] = email_id context["phone_number"] = phone_number context["address"] = address print("7878Context is :", context) return render(request, "conversion/invoice_lpp.html", context) def paymentDoneLpp(request, gateway): if not request.session['translation_id'] or (gateway != "stripe" and gateway != "razorpay"): return HttpResponseBadRequest() if gateway == "stripe": response = { "id": request.GET.get("payment_intent"), "client_secret": request.GET.get("payment_intent_client_secret"), "status": request.GET.get("redirect_status"), } callback_content = callback(response, request) if callback_content['payment_status'] != "success": return render(request, "payments/failed.html") if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) print("final balance", round(wall.balance, 2) - ( round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - ( round(request.session["pay_wallet_deduction"], 2)) wall.save() elif gateway == "razorpay": callback_context = callback(request.POST, request) if callback_context['payment_status'] != 'success': subject = "Something really went wrong" # from_email = settings.EMAIL_HOST_USER # to = to = request.user.email key_value = { "service_name": "Conversion", } sendmail(to_email=[to], email_code="CP11", key_value=key_value) # context_2 = { # "Name": request.user.email, # "service_name": "Conversion", # } # message = render_to_string('payment/templates/payments/MR24.html', context_2) # # # # password = emails_creadentials.objects.get(email="noreply@mynextfilm.ai") # connection = get_connection(host="smtp.gmail.com", port=587, username="noreply@mynextfilm.ai", # password="iiby yciy jdux fslv", use_tls=True) # to_email = request.user.email # email = EmailMessage(subject, message, to=[to_email], connection=connection) # email.send() # mnfnsendemail( # to, subject, "payment/templates/payments/MR24.html", context_2, from_email) return render(request, "payments/failed.html") if request.session["pay_with_wallet"] == "yes": # deduction_for_sep_wall(request) wall = Wallet.objects.get(user=request.user) print("----------------amount", request.session["pay_wallet_deduction"]) print("----------------rate", request.session["CurrencyRate"]) print("final balance", round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2))) wall.balance = round(wall.balance, 2) - (round(request.session["pay_wallet_deduction"], 2)) wall.save() obj = ScriptTranslations.objects.get(translation_id=request.session.get('translation_id', None)) obj.lpp = True obj.save() X = LPPTASKDatabase() X.user_id = obj.user_id X.usernote = "Kindly check if the translated file is correct as per the Uploaded Document!" X.translated_script = obj X.generated_from = "conversion" temp_amount = request.session["amount"] X.amoutgiventolpp_action = round((temp_amount / 2), 2) X.amoutgiventolpp_dialogue = round((temp_amount / 2), 2) X.save() # task_assigner(int(X.task_id), "conversion") return redirect('view_conversion') def paymentIntentlpp(request): if request.method == "POST": set_payment_token(request) keyID = request.session["keyID"] for key, value in request.session.items(): print('{} => {}'.format(key, value)) total_amount = request.session["amount"] total_amount1 = request.session["subtotal"] # amount_charged = request.session["amount"] amount_discount = request.session["discount"] request.session["pay_with_wallet"] = "no" request.session["amount_before_pay_wallet"] = total_amount # is he instituitional student or not if request.session.get("student_discount_calculate") == "Yes": from institutional.models import AffiliatedStudent, UnaffiliatedStudent, WaitForInstituteStudent user = User.objects.get(pk=request.user.id) if UnaffiliatedStudent.objects.filter(user=user).exists(): user = UnaffiliatedStudent.objects.get(user=user) if user.free_credits >= total_amount: user.free_credits -= total_amount user.save() context = { "mode": "Institutional User", } return JsonResponse(context) elif user.free_credits < total_amount: total_amount -= user.free_credits user.free_credits = 0 user.save() elif WaitForInstituteStudent.objects.filter(user=user).exists(): user = WaitForInstituteStudent.objects.get(user=user) if user.free_credits >= total_amount: user.free_credits -= total_amount user.save() context = { "mode": "Institutional User", } return JsonResponse(context) elif user.free_credits < total_amount: total_amount -= user.free_credits user.free_credits = 0 user.save() return True elif AffiliatedStudent.objects.filter(user=user).exists(): user = AffiliatedStudent.objects.get(user=user) if user.free_credits >= total_amount: user.free_credits -= total_amount user.save() context = { "mode": "Institutional User", } return JsonResponse(context) elif user.free_credits < total_amount: total_amount -= user.free_credits user.free_credits = 0 user.save() try: print("pay_wallet it is", request.POST.get("pay_wallet")) if request.POST.get("pay_wallet") == "true": request.session["pay_with_wallet"] = "yes" 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 print("Checking Wallet") wall = Wallet.objects.get(user=request.user) if wall.balance >= (total_amount * rate): print("wallet if hai") request.session["pay_wallet_deduction"] = round(total_amount * rate, 2) total_amount = 0 else: print("wallet else hai") request.session["pay_wallet_deduction"] = round(wall.balance, 2) total_amount = round((round(total_amount * rate, 2) - round(wall.balance, 2)) / rate, 2) except Exception as e: print("Error is:",e) pass request.session["amount"] = total_amount services_used = 1 context = create_indent(request, 'LPP', str( request.session['translation_id']), services_used, '', total_amount1, total_amount, amount_discount) for key, value in request.session.items(): print('{} => {}'.format(key, value)) 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 request.session["CurrencyRate"] = rate centralPayment_instance = CentralPayment.objects.get( id=context["central_pay_id"]) # handle razor pay gateway → if "orderId" in context: request.session["payment_order_id"] = context["orderId"] request.session["central_payment_id"] = context["central_pay_id"] pid = centralPayment_instance.order_id amtINR = round(centralPayment_instance.amount_charged * rate, 2) context = { "mode": "RazorPay", "pk": keyID, "amtINR": amtINR, "pid": pid, "amount": centralPayment_instance.amount_charged, } return JsonResponse(context) # handle stripe gateway → elif "client_secret" in context: # save central payment details in your database request.session["payment_order_id"] = context["client_secret"] request.session["central_payment_id"] = context["central_pay_id"] amtINR = round(centralPayment_instance.amount_charged * rate, 2) context = { "mode": "Stripe", "pk": context["pub_key"], "total_amount": centralPayment_instance.amount_charged, "secret_key": context["client_secret"], "amtINR": amtINR, } return JsonResponse(context) # handle corporate profile → elif "monthly_user" in context: request.session['central_pay_id'] = context["central_pay_id"] context = { "mode": "Corporate User", } return JsonResponse(context)