# from tkinter.messagebox import NO
# import phonenumbers
# from project.MNF.narration.views import character_list
# from tkinter import E
import concurrent.futures
import datetime
import io
import json
import logging
import os
import random
import re  # added import
import select
import subprocess
import sys
import time
from centralizePayment.models import CentralPayment

import traceback
import zipfile  # added import
from io import StringIO
from itertools import zip_longest
from pathlib import Path
from queue import Queue
from subprocess import Popen

import razorpay
import requests
import stripe
from asgiref.sync import async_to_sync
from bs4 import BeautifulSoup
from bs4.element import Comment
from channels.generic.websocket import (AsyncWebsocketConsumer,
                                        WebsocketConsumer)
from channels.layers import get_channel_layer
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.sites.shortcuts import get_current_site
from django.core.files.base import ContentFile
from django.core.mail import EmailMessage, EmailMultiAlternatives
from django.db.models.signals import post_save
from django.dispatch import Signal, receiver
from django.forms import ValidationError as FormValidationError
# sse
from django.http import (HttpResponse, HttpResponseRedirect, JsonResponse,
                         StreamingHttpResponse)
from django.shortcuts import redirect, render
from django.template import loader
# Multiligule
from django.template.loader import render_to_string
from django.urls import reverse
from django.utils.encoding import force_bytes
from django.utils.html import strip_tags
from django.views import View
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_GET
from forex_python.converter import CurrencyRates
from google.cloud import texttospeech
from google.cloud import translate_v2 as Translate
from PyPDF2 import PdfFileReader
from pytz import timezone
from tqdm import tqdm
from urllib3 import HTTPResponse

# Websocket
from auto_email.views import sendmail
from users.models import UserCredentialsForBlockchain
from Blockchain2.decryption import decryptionOfPrivate, decryptionOfUrl, download_file_System
from Blockchain2.DataStorage import uploadDataToIPFSNode
from Blockchain2.Narration import getUserprojectIds,NarrationData,getNarrationData
import tempfile
from Blockchain2.blockchainsetting import (GET_OWNER, SET_ONLY_OWNER,
                                           UPLOAD_FILES)
# from Blockchain2.GetFromBlockChain import getUserprojectIds
from Blockchain2.WalletCreation import walletCreation
from blockchain.submitIPFS import upload_zipfile_to_ipfs
from centralizePayment.views import callback, create_indent
from conversion.forms import CScript, NScript
from conversion.models import UploadScript
from conversion.translation.detection import getInputs
from conversion.translation.translation_function import translate_comparison
from MNF.email import mnfnsendemail
# from neutralAudit import mnf_script_subset_v2 as mnf_ss  # 2
# from neutralAudit import sa_functions as sf  # 9
# from neutralAudit import sa_functions_english as sf_eng
from MNF.settings import BasePath, GetMongoDBUrl
from mnfapp.models import (Author, MNFScriptDatabase, Notifications,
                           PaymentData, PitchVector, SampleScript,
                           centralDatabase)
from narration.vectorcode.code import vector_generation
from neutralAudit_old import mnf_script_subset_v2 as mnf_ss  # 2
from neutralAudit_old import sa_functions as sf  # 9
from neutralAudit_old import sa_functions_english as sf_eng
from payment.models import privilegedUser1
from Pitchdeck.models import Name, PitchVectorMultiAuthor
# from .models import ProgressBar
from scriptAudit.mnf_script_audit import NeutralAudit
from scriptAudit.models import ScriptAuditModel
from scriptAudit.utils import (check_status_and_trigger_vector,
                               generate_script_id_for_pitchdeck)
from scriptpage.forms import userForm
from users.models import *
from users.views import deduction_for_sep_wall
from utils import filesystem
from utils.scripts_functions import script_upload

from . import linebyline_narration
# from .Pitchdeck.Character_Introduction import TestingC, Char_function
from .Pitchdeck.Character_Introduction import (Char_audio_class, Char_function,
                                               TestingC, audio_video)
from .Pitchdeck.ElevatorPitch import pitch_function
from .Pitchdeck.onepager import Pager_function
from .Pitchdeck.screenplay import screenplay_main

# from narration.Narration_Code import linebyline_narration





basePath = BasePath()

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = rf"{basePath}/narration/Narration_Code/authentication.json"
client = texttospeech.TextToSpeechClient()
translate_client = Translate.Client()
#end

PROGRESS = 10
progress_dict = {}
old_progress_dict = {}

from pymongo import MongoClient

# from Character_Introduction.char_function import char_function
# Commented as audit app changed - mohit
# from scriptAudit.script_audit_codes.script_audit import do_script_audit
# from videos.models import Video
logging.basicConfig(filename="./yameen.log",
                    format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',level=logging.DEBUG,filemode="a")


# from rest_framework.decorators import (api_view, authentication_classes,
#                                        permission_classes)
# from django.core.mail import EmailMultiAlternatives


# from django.utils.html import strip_tags
# from . import global_database


# from .Narration_Code import narration_generation   # see here
# this has been imported by rohit on 26th December 2021


# from .Pitchdeck.Character_Introduction import TestingC

# removed version numbers from blow imports - Amulya 22/12/22

# from neutralAudit import mnf_script_subset_v1 as



MongoDBUrl = GetMongoDBUrl()
# MongoDBUrl="mongodb+srv://mnfv:1234@cluster0.h09hcrq.mongodb.net/?retryWrites=true&w=majority"

print("narration MongodbUrl", MongoDBUrl)


# Create your views here.
#
stripe.api_key = settings.STRIPE_SECRET_KEY
STRIPE_PUB_KEY = settings.STRIPE_PUBLISHABLE_KEY
# keyID = settings.RAZORPAY_KEY_ID
# keySecret = settings.RAZORPAY_KEY_SECRET
UsdConversionRate = 80


# keyID = "rzp_test_6U9A7gZuno8Qz1"
# keySecret = "SrhczTH4dmrxW8SrzeqOdBSP"

progress_updated = Signal()


def set_payment_token(request):
    if request.user.is_superuser:
        request.session["keyID"] = settings.T_RAZORPAY_KEY_ID
        request.session["keySecret"] = settings.T_RAZORPAY_KEY_SECRET
    else:
        request.session["keyID"] = settings.RAZORPAY_KEY_ID
        request.session["keySecret"] = settings.RAZORPAY_KEY_SECRET

# Multiligule
def multilingual_render(req, templateName: str, context: dict):
    t = loader.get_template(templateName)
    rendered_html = t.render(context, req)

    soup = BeautifulSoup(rendered_html, 'html.parser')

    def translate_and_replace_text(text):
        if "multi_language" in req.session:
            trans_text = translate_client.translate(text, source_language="en", target_language=req.session["multi_language"])
            return trans_text["translatedText"]
        return text

    def find_and_replace_text_in_element(element):
        with concurrent.futures.ThreadPoolExecutor() as executor:
            futures = [executor.submit(translate_and_replace_text, text) for text in element.find_all(text=is_user_visible)]
            for future, text in zip(futures, element.find_all(text=is_user_visible)):
                if text != '\n':
                    translated_text = future.result()
                    text.replace_with(translated_text)

    if "multi_language" in req.session:
        if req.session["multi_language"] != "en":
            target_element = soup.find(id="mulitligule")
            if target_element:
                find_and_replace_text_in_element(target_element)

            target_element_nav = soup.find(id="nav_mulitligual")
            if target_element_nav:
                find_and_replace_text_in_element(target_element_nav)

            footer_elements = soup.find_all('footer')
            for footer in footer_elements:
                find_and_replace_text_in_element(footer)

    modified_html = soup.prettify(encoding="UTF-8")
   
    with open("/home/user/mnf/project/MNF/Pitchdeck/test2024.html", "wb") as file:
        file.write(modified_html)

    return HttpResponse(modified_html, content_type='text/html; charset=utf-8')

## caution : in case of a variant interpertition the english version will take priority. 

def set_language(request):
    if request.method == 'POST':
        selected_language = request.POST.get('selected_language')
        if selected_language:
            request.session['multi_language'] = selected_language
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("multi_language:-" + str(request.session['multi_language']) + str(selected_language)+"\n")
    return HttpResponse(status=200)

def is_user_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'meta', '[document]']:
        return False
    elif isinstance(element, Comment):
        return False
    return True 
#end

BASE_DIR = Path(__file__).resolve().parent.parent


demo_files ={
    "en":[
        ["sample_english",rf"{basePath}/media/NarrationDemoVideos/sample_english_pitchdeck.webm", rf"{basePath}/media/NarrationDemoVideos/sample_english.pdf", rf"{basePath}/media/NarrationDemoVideos/sample_english_screenplay.webm", rf"{basePath}/media/NarrationDemoVideos/Character_Introduction.webm",{"characterName":["pravesh","yameen"],"filepath":["pravesh.mp4","yameen.mp4"],}],
    ],
    "hi":[
        ["yameenHI.docx","/home/user/mnf/project/MNF/media/NarrationDemoVideos/xyz_neha12_line.webm","/home/user/mnf/project/MNF/media/NarrationDemoVideos/newEnglis549_Ra7WQGc.pdf", "/home/user/mnf/project/MNF/media/NarrationDemoVideos/Character_Introduction.webm", "/home/user/mnf/project/MNF/media/NarrationDemoVideos/Character_Introduction.webm", "/home/user/mnf/project/MNF/media/NarrationDemoVideos/AroundYa4_Vuazii8.webm",],
        ["parveshHi.docx","/home/user/mnf/project/MNF/media/NarrationDemoVideos/xyz_neha12_line.webm","/home/user/mnf/project/MNF/media/NarrationDemoVideos/newEnglis549_Ra7WQGc.pdf", "/home/user/mnf/project/MNF/media/NarrationDemoVideos/Character_Introduction.webm", "/home/user/mnf/project/MNF/media/NarrationDemoVideos/Character_Introduction.webm", "/home/user/mnf/project/MNF/media/NarrationDemoVideos/AroundYa4_Vuazii8.webm",],
    ],

    "fr":[
        ["sample_french",rf"{basePath}/media/NarrationDemoVideos/sample_french_pitchdeck.webm", rf"{basePath}/media/NarrationDemoVideos/sample_french.pdf", rf"{basePath}/media/NarrationDemoVideos/sample_french_screenplay.webm", rf"{basePath}/media/NarrationDemoVideos/Character_Introduction.webm", " ",],
    ],
    "mr":[
        ["Sample_Marathi Script", rf"{basePath}/media/NarrationDemoVideos/Sample_Marathi_Script_pitchdeck.webm", rf"{basePath}/media/NarrationDemoVideos/Sample_Marathi_Script.pdf", rf"{basePath}/media/NarrationDemoVideos/Sample_Marathi_Script_screenplay.webm", rf"{basePath}/media/NarrationDemoVideos/Character_Introduction.webm", " ",],
    ],
    
}



languages = {
    "hi": "Hindi",
    "en": "English",
    "ur": "Urdu",
    "ar": "Arabic",
    "bn": "Bengali",
    "kn": "Kannada",
    "ta": "Tamil",
    "bg": "Bulgarian",
    "bn": "Bangla",
    "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": "Gujrati",
    "or": "Odia",
    "zh": "Chinese",
    "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": "Kazak",
    "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",
}

CURRENCY_SYMBOLS_MAP = {
    "AED": "د.إ",
    "AFN": "؋",
    "ALL": "L",
    "AMD": "֏",
    "ANG": "ƒ",
    "AOA": "Kz",
    "ARS": "$",
    "AUD": "$",
    "AWG": "ƒ",
    "AZN": "₼",
    "BAM": "KM",
    "BBD": "$",
    "BDT": "৳",
    "BGN": "лв",
    "BHD": ".د.ب",
    "BIF": "FBu",
    "BMD": "$",
    "BND": "$",
    "BOB": "$b",
    "BRL": "R$",
    "BSD": "$",
    "BTC": "฿",
    "BTN": "Nu.",
    "BWP": "P",
    "BYR": "Br",
    "BYN": "Br",
    "BZD": "BZ$",
    "CAD": "$",
    "CDF": "FC",
    "CHF": "CHF",
    "CLP": "$",
    "CNY": "¥",
    "COP": "$",
    "CRC": "₡",
    "CUC": "$",
    "CUP": "₱",
    "CVE": "$",
    "CZK": "Kč",
    "DJF": "Fdj",
    "DKK": "kr",
    "DOP": "RD$",
    "DZD": "دج",
    "EEK": "kr",
    "EGP": "£",
    "ERN": "Nfk",
    "ETB": "Br",
    "ETH": "Ξ",
    "EUR": "€",
    "FJD": "$",
    "FKP": "£",
    "GBP": "£",
    "GEL": "₾",
    "GGP": "£",
    "GHC": "₵",
    "GHS": "GH₵",
    "GIP": "£",
    "GMD": "D",
    "GNF": "FG",
    "GTQ": "Q",
    "GYD": "$",
    "HKD": "$",
    "HNL": "L",
    "HRK": "kn",
    "HTG": "G",
    "HUF": "Ft",
    "IDR": "Rp",
    "ILS": "₪",
    "IMP": "£",
    "INR": "₹",
    "IQD": "ع.د",
    "IRR": "﷼",
    "ISK": "kr",
    "JEP": "£",
    "JMD": "J$",
    "JOD": "JD",
    "JPY": "¥",
    "KES": "KSh",
    "KGS": "лв",
    "KHR": "៛",
    "KMF": "CF",
    "KPW": "₩",
    "KRW": "₩",
    "KWD": "KD",
    "KYD": "$",
    "KZT": "₸",
    "LAK": "₭",
    "LBP": "£",
    "LKR": "₨",
    "LRD": "$",
    "LSL": "M",
    "LTC": "Ł",
    "LTL": "Lt",
    "LVL": "Ls",
    "LYD": "LD",
    "MAD": "MAD",
    "MDL": "lei",
    "MGA": "Ar",
    "MKD": "ден",
    "MMK": "K",
    "MNT": "₮",
    "MOP": "MOP$",
    "MRO": "UM",
    "MRU": "UM",
    "MUR": "₨",
    "MVR": "Rf",
    "MWK": "MK",
    "MXN": "$",
    "MYR": "RM",
    "MZN": "MT",
    "NAD": "$",
    "NGN": "₦",
    "NIO": "C$",
    "NOK": "kr",
    "NPR": "₨",
    "NZD": "$",
    "OMR": "﷼",
    "PAB": "B/.",
    "PEN": "S/.",
    "PGK": "K",
    "PHP": "₱",
    "PKR": "₨",
    "PLN": "zł",
    "PYG": "Gs",
    "QAR": "﷼",
    "RMB": "¥",
    "RON": "lei",
    "RSD": "Дин.",
    "RUB": "₽",
    "RWF": "R₣",
    "SAR": "﷼",
    "SBD": "$",
    "SCR": "₨",
    "SDG": "ج.س.",
    "SEK": "kr",
    "SGD": "$",
    "SHP": "£",
    "SLL": "Le",
    "SOS": "S",
    "SRD": "$",
    "SSP": "£",
    "STD": "Db",
    "STN": "Db",
    "SVC": "$",
    "SYP": "£",
    "SZL": "E",
    "THB": "฿",
    "TJS": "SM",
    "TMT": "T",
    "TND": "د.ت",
    "TOP": "T$",
    "TRL": "₤",
    "TRY": "₺",
    "TTD": "TT$",
    "TVD": "$",
    "TWD": "NT$",
    "TZS": "TSh",
    "UAH": "₴",
    "UGX": "USh",
    "USD": "$",
    "UYU": "$U",
    "UZS": "лв",
    "VEF": "Bs",
    "VND": "₫",
    "VUV": "VT",
    "WST": "WS$",
    "XAF": "FCFA",
    "XBT": "Ƀ",
    "XCD": "$",
    "XOF": "CFA",
    "XPF": "₣",
    "YER": "﷼",
    "ZAR": "R",
    "ZWD": "Z$",
    "XPD": "Pd",
    "ZMK": "ZK",
    "VEB": "Bs",
    "SDD": "SD",
    "ESP": "Pt",
    "SKK": "Sk",
    "RUR": "₽",
    "ROL": "RON",
    "PLZ": "zł",
    "XPD": "Pd oz",
    "NLG": "ƒ",
    "MXP": "$",
    "LUF": "F",
    "ITL": "ITL",
    "IEP": "£",
    "GRD": "₯",
    "XAU": "XAU",
    "DEM": "DEM",
    "FRF": "Fr",
    "FIM": "Mk",
    "NLG": "ƒ",
    "CSK": "Kčs",
    "CYP": "C£",
    "BGL": "лв",
    "BEF": "ƒ",
    "ATS": "ATS",
    "ARP": "$",
    "XPT": "XPT",
    "PTE": "₠",
    "XDR": "XDR",
    "XAG": "XAG",
    "XPD": "XPD",
}


# from .serializers import ProgressBarSerializer
# from rest_framework.response import Response

# @api_view(['GET'])
# def progressBar(request,userid):
#     if request.method == "GET":
#         if id is not None:
#             main = ProgressBar.objects.all().filter(id=userid)
#             serializer = ProgressBarSerializer(main, many=True)
#             return Response(serializer.data)
#         main = ProgressBar.objects.all().filter(id = userid)
#         serializer = ProgressBarSerializer(main, many=True)
#     return Response(serializer.data)


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()


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


def narration(request):
    number = ReferUser.objects.filter(refferedBy=request.user).count()
    file_pk = request.GET.get("file_detail")
    if file_pk:
        file_qry = MNFScriptDatabase.objects.filter(script_id=file_pk).first()
    else:
        file_qry = None
    M = MNFScriptDatabase()
    sampleList = SampleScript.objects.filter(status="N")
    MyURL = ""
    dial_src_script = ""
    dial_src_lang = ""
    non_dial_src_lang = ""
    non_dial_src_script = ""
    script_title = ""
    author_name = ""
    numPages = 0
    UScript = CScript()
    id = ""
    x = datetime.datetime.now(timezone("UTC")).astimezone(
        timezone("Asia/Kolkata"))
    # print("MY base path is " ,str(BASE_DIR))
    UploadedScript = UploadScript()
    print(" Upar Aaa rha hai")
    if request.method == "POST":

        M.script = request.FILES["script"]
        if request.POST.get("linebyline"):
            M.linebyline = "True"
        if request.POST.get("characterintro"):
            M.character_intro = "True"
        if request.POST.get("screenplayanalysis"):
            M.screenplay_analysis = "True"

        M.save()
        MyURL = M.script.url

        # UScript = CScript(request.POST, request.FILES)
        # if UScript.is_valid():
        #     UploadedScript.script = UScript.cleaned_data.get("script")
        #     MyURL = UploadedScript.script.url
        print(MyURL)
        print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" * 4)
        # UploadedScript.save()
        # script_title = MyURL[7:-5] + str(x.strftime("%d"))+ "_"+ str(x.strftime("%b"))+ "_"+ str(x.strftime("%H"))+ str(x.strftime("%I"))
        author_name = str(request.user.username)
        # ------------------neha
        request.session["script_name"] = M.script.name

        script_title = request.session["script_name"]
        # script_title = script_title[8:]
        if script_title[-3:] == "pdf":
            print(
                "This do_script_audit start->",
                datetime.datetime.now(timezone("UTC")).astimezone(
                    timezone("Asia/Kolkata")
                ),
            )
            # print(do_script_audit(basePath + MyURL, "1234", "scripts"))
            print(
                "This do_script_audit end->",
                datetime.datetime.now(timezone("UTC")).astimezone(
                    timezone("Asia/Kolkata")
                ),
            )
            pdf = PdfFileReader(open(rf"{basePath}/{MyURL}", "rb"))
            numPages = pdf.getNumPages()
            # MyURL = MyURL[:-3]+"docx"
        else:
            numPages = countPages(str(BASE_DIR) + MyURL,
                                  script_title[7:-4] + "pdf")
        print(
            "This do_script_audit start->",
            datetime.datetime.now(timezone("UTC")).astimezone(
                timezone("Asia/Kolkata")),
        )
        formInput = getInputs(str(BASE_DIR) + MyURL)
        print(
            "This do_script_audit end->",
            datetime.datetime.now(timezone("UTC")).astimezone(
                timezone("Asia/Kolkata")),
        )
        dial_src_script = formInput[2]
        dial_src_lang = formInput[1]
        non_dial_src_lang = formInput[0]
        non_dial_src_script = formInput[3]
        print("done")

    return render(
        request,
        "narration/narration.html",
        {
            "numPages": numPages,
            "id": M.id,
            "list": sampleList,
            "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,
            "file": file_qry,
            "number": number,
        },
    )


def get_page_count(file):

    archive = zipfile.ZipFile(file, "r")
    ms_data = archive.read("doc/docx")
    archive.close()
    app_xml = ms_data.decode("utf-8")
    regex = r"<(Pages|Slides)>(\d)</(Pages|Slides)>"
    matches = re.findall(regex, app_xml, re.MULTILINE)
    match = matches[0] if matches[0:] else [0, 0]
    page_count = match[1]
    return page_count


def characterNarrate(request):
    print("characterNarrate starting here")
    if request.method == "POST":
        print("characterNarrate POST starting here")

        selected_character = request.POST.getlist("character_check")
        print(f" selected characters {selected_character}")
        # Pitchvector--  Add a field for selected Character list and save
        input_dir = request.session.get("script_dir_url")
        print(f"input dir {input_dir}")
        # input_filename=request.session["script_name"]
        input_filename = request.session["script_name"]

        print("enter subset characters")
        dic_of_chr_path = mnf_ss.get_subset_character_script(
            input_dir, input_filename, selected_character
        )
        print(dic_of_chr_path)
        print("exit subset characters")
        return render(
            request,
            "Pitchdeck/Pitchnarrate2.html",
            {"script": request.session["script_name"][:-5]},
        )

    return render(
        request,
        "Pitchdeck/characterNarration.html",
        {"character_list": request.session["saved_characters_list"]},
    )

# @login_required(login_url="/")


def pitchnarrate_view(request):

    number = ReferUser.objects.filter(refferedBy=request.user).count()
    print("Delhi India: 0")
    screenplay_form = userForm(request.POST, request.FILES)

    if request.method == "POST":
        logging.debug("in pitchnarrate_view")

        if not screenplay_form.is_valid():
            raise screenplay_form.error_class

        logging.debug(screenplay_form.changed_data)

        screenplay_name = screenplay_form.cleaned_data["screenplay"]
        author = screenplay_form.cleaned_data["author"]
        language = screenplay_form.cleaned_data["language"]
        script_file = screenplay_form.cleaned_data["file"]
        # script_file = screenplay_form.cleaned_data["file"]
        script_ext = script_file.name.split(".")[-1]
        script_file_name = screenplay_name + "." + script_ext

        file = ContentFile(
            script_file.read(),
            script_file_name,
        )

        script_data = filesystem.new_screenplay(
            request.user,
            author,
            screenplay_name,
            file,
            "script-original",
            language,
        )
        request.session["script_name"] = script_data.get("name")

        request.session["line_by_line_narration"] = request.POST.get(
            "line_by_line_narration"
        )
        request.session["character_introduction"] = request.POST.get(
            "character_introduction"
        )
        request.session["screenplay_analysis"] = request.POST.get(
            "screenplay_analysis")
        request.session["one_pager"] = request.POST.get("one_pager")
        request.session["elevator_pitch"] = request.POST.get("elevator_pitch")
        request.session["character_narration"] = request.POST.get(
            "character_narration")

        script_id = script_data.get("script").get("id")

        print("new Delhi India: 1")
        z = PitchVector()

        while True:
            audit_model = ScriptAuditModel.objects.get(script__id=script_id)
            if audit_model.status == "SUCCESS":
                break
            elif audit_model.status == "FAILURE":
                raise Exception("Audit Failed")

        print("apple100")
        file = filesystem.get_script(script_id, "script-docx", create=True)
        z.choosescript = file
        z.save()

        request.session["script_url"] = file.path

        print(
            "apple101 _______________________________________________________________________________\n\n",
            file.path,
        )

        request.session["script_dir_url"] = str(BASE_DIR) + "/media/scripts/"
        print("harsh")

        formInput = getInputs(file.path)
        dial_src_script = formInput[2]
        dial_src_lang = formInput[1]
        non_dial_src_lang = formInput[0]
        non_dial_src_script = formInput[3]

        print("done")

        request.session["dial_src_script"] = dial_src_script
        request.session["dial_src_lang"] = dial_src_lang
        request.session["non_dial_src_lang"] = non_dial_src_lang
        request.session["non_dial_src_script"] = non_dial_src_script

        print("character started")

        request.session["line_by_line_narration"] = request.POST.get(
            "line_by_line_narration"
        )
        request.session["character_introduction"] = request.POST.get(
            "character_introduction"
        )
        request.session["screenplay_analysis"] = request.POST.get(
            "screenplay_analysis")
        request.session["one_pager"] = request.POST.get("one_pager")
        request.session["elevator_pitch"] = request.POST.get("elevator_pitch")
        request.session["character_narration"] = request.POST.get(
            "character_narration")

        print("checklbl", request.session["line_by_line_narration"])
        print("checkci", request.session["character_introduction"])
        print("checksa", request.session["screenplay_analysis"])
        print("checkop", request.session["one_pager"])
        print("checkep", request.session["elevator_pitch"])
        print("checkcn", request.session["character_narration"])

        input_dir = str(BASE_DIR) + "/media/scripts/"
        input_filename = request.session["script_name"]
        print("----------OM----------view")
        print(input_dir)

        # char_list = mnf_ss.get_character_list(input_dir, input_filename)

        audit = NeutralAudit(script_id)
        char_list = audit.get_character_list()

        request.session["saved_characters_list"] = list(char_list)
        print("get_character_list done")

        char_list1 = list(char_list)
        script_upload(file, request.user)
        if len(char_list1) > 2:
            newlist = char_list1[0:2]
        else:
            newlist = char_list1
        no_of_char = len(newlist)

        print(
            "\n\n\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n"
        )
        print("checkcn", request.session.items())
        print(
            "\n\n\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n\n"
        )

        # if no_of_char == 1:
        #     return render(
        #         request,
        #         "Pitchdeck/Pitchnarrate2.html",
        #         {
        #             "script": request.session["script_name"],
        #             "character_list": char_list1,
        #             "firstcharacter": newlist[0],
        #             "five_character": newlist,
        #             "cd": centralDatabase.objects.get(user_id=request.user),
        #         },
        #     )
        # else:
        #     return render(
        #         request,
        #         "Pitchdeck/Pitchnarrate2.html",
        #         {
        #             "script": request.session["script_name"],
        #             "character_list": char_list1,
        #             "firstcharacter": newlist[0],
        #             "secondcharacter": newlist[1],
        #             "five_character": newlist,
        #             "cd": centralDatabase.objects.get(user_id=request.user),
        #         },
        #     )

    return render(
        request,
        "Pitchdeck/pitchnarratefile.html",
        {"number": number, "formInput": screenplay_form},
    )


@login_required(login_url="/")
def Pitchnarrate_yameen(request):
    # print("request",request)
    print("request.user",request.user)
    number = ReferUser.objects.filter(refferedBy=request.user).count()
    # print("Delhi India: 1")
    z = PitchVector()

    if request.method == "POST":
        #     UScript = NScript(request.POST, request.FILES)
        #     print("request.FILES", request.FILES)
        #     print('UScript',UScript)
        #     if UScript.is_valid():
        #         z.choosescript = UScript.cleaned_data.get("scriptss")
        #        # print("****************************777777777778888888889999999999999**************************")
        #         print('z.choosescript', z.choosescript)
        #         z.save()

        #     # filename = UScript.cleaned_data.get("scriptss")
        #     aa = re.sub("[^A-Za-z0-9 /._]+", "", str(z.choosescript))
        #     print("aa",aa)
        #     # bb = aa.replace(" ", "_")
        #     # print(bb)
        #     filename = str(aa).replace(" ", "_")
        #     filename = filename[8:]
        id = request.POST.get("Nscript_id")
        print("Iddddddddd", type(id))
        x = SampleScript.objects.get(id=id)
        filePath = x.script_file_path
        filename = filePath.split('/')[-1]
        print("filenamessssssssssssssssssss", filename)

        z.choosescript = filename
        z.save()

        request.session["script_name"] = filename
        file_url = str(BASE_DIR) + "/media/scripts/" + filename
        print("file_urlss", file_url)

        request.session["script_url"] = file_url
        # used because get_subset_character_script needs file dir
        request.session["script_dir_url"] = str(BASE_DIR) + "/media/scripts/"
        print("harsh")
        formInput = getInputs(file_url)
        dial_src_script = formInput[2]
        dial_src_lang = formInput[1]
        non_dial_src_lang = formInput[0]
        non_dial_src_script = formInput[3]
        print("done")
        request.session["dial_src_script"] = dial_src_script
        request.session["dial_src_lang"] = dial_src_lang
        request.session["non_dial_src_lang"] = non_dial_src_lang
        request.session["non_dial_src_script"] = non_dial_src_script
        print("character started")
        checkedopt = []
        print(request.POST.get("line_by_line_narration"))

        request.session["line_by_line_narration"] = request.POST.get(
            "line_by_line_narration"
        )
        request.session["character_introduction"] = request.POST.get(
            "character_introduction"
        )
        request.session["screenplay_analysis"] = request.POST.get(
            "screenplay_analysis")
        request.session["one_pager"] = request.POST.get("one_pager")
        request.session["elevator_pitch"] = request.POST.get("elevator_pitch")
        request.session["character_narration"] = request.POST.get(
            "character_narration")

        input_dir = str(BASE_DIR) + "/media/scripts/"
        input_filename = filename
        print("----------OM----------yameen")
        print(input_dir)

        char_list = mnf_ss.get_character_list(input_dir, input_filename)
        print(char_list)
        request.session["saved_characters_list"] = list(char_list)
        print("get_character_list done")
        numPages = countPages(file_url, file_url.rsplit(
            "/", 1)[1].rsplit(".", 1)[0] + ".pdf")
        print("no of page", numPages)
        if numPages > 5:
            try:
                membertype = privilegedUser1.objects.get(
                    user=request.user, is_active="yes")
                print("neha privalige", membertype)
                char_list1 = list(char_list)
                # script_upload(filePat, request.user)
                if len(char_list1) > 2:
                    newlist = char_list1[0:2]
                else:
                    newlist = char_list1
                no_of_char = len(newlist)
                if no_of_char == 1:
                    return render(
                        request,
                        "Pitchdeck/Pitchnarrate2.html",
                        {
                            "script": filename[:-5],
                            "character_list": char_list1,
                            "firstcharacter": newlist[0],
                            "five_character": newlist,
                            "cd": centralDatabase.objects.get(user_id=request.user),
                            "numPages": numPages,
                        },
                    )
                else:
                    return render(
                        request,
                        "Pitchdeck/Pitchnarrate2.html",
                        {
                            "script": filename[:-5],
                            "character_list": char_list1,
                            "firstcharacter": newlist[0],
                            "secondcharacter": newlist[1],
                            "five_character": newlist,
                            "cd": centralDatabase.objects.get(user_id=request.user),
                            "numPages": numPages,
                        },
                    )

            except:
                messages.error(request, "You are not a privileged member.")
                return render(request, "Pitchdeck/Pitchnarrate1.html")
                # return redirect("payment")
        else:
            char_list1 = list(char_list)
            # script_upload(filePath, request.user)
            if len(char_list1) > 2:
                newlist = char_list1[0:2]
            else:
                newlist = char_list1
            no_of_char = len(newlist)
            if no_of_char == 1:
                return render(
                    request,
                    "Pitchdeck/Pitchnarrate2.html",
                    {
                        "script": filename[:-5],
                        "character_list": char_list1,
                        "firstcharacter": newlist[0],
                        "five_character": newlist,
                        "cd": centralDatabase.objects.get(user_id=request.user),
                        "numPages": numPages,
                    },
                )
            else:
                return render(
                    request,
                    "Pitchdeck/Pitchnarrate2.html",
                    {
                        "script": filename[:-5],
                        "character_list": char_list1,
                        "firstcharacter": newlist[0],
                        "secondcharacter": newlist[1],
                        "five_character": newlist,
                        "cd": centralDatabase.objects.get(user_id=request.user),
                        "numPages": numPages,
                    },
                )

    return render(request, "Pitchdeck/Pitchnarrate1.html", {"number": number})


@login_required(login_url="/")
def Pitchnarrate1(request, id=None):

    print("request", request)
    print("request.user", request.user.email)

    number = ReferUser.objects.filter(refferedBy=request.user).count()
    print("Delhi India: 1")
    Module= "narration"
    servicesName = "PitchdeckCreation"



    z = PitchVector()

    if request.method == "POST":
        # if 'form_identifier' in request.POST:
        #     print("############################# TRUE ###################################################")
        #     print('request.FILES["scriptss"]',request.FILES["scriptss"])
        #     fileExists = script_upload(request.FILES["scriptss"], request.user, 1)
        #     print("fileExists",fileExists)
        #     return render(request, "Pitchdeck/Pitchnarrate1.html")
             
        # MongoDBUrl = "mongodb+srv://MNF:root@cluster0.gbkxi.gcp.mongodb.net/DB?retryWrites=true&w=majority"
        MongoDBUrl = "mongodb+srv://mynextfilm:mnf123@cluster0.ojasb.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
        client = MongoClient(MongoDBUrl)
        db = client.DB
        
        # try:
        
        try:
            # script_upload(request.FILES["scriptss"], request.user)
            fileExists = script_upload(request.FILES["scriptss"], request.user, 1)
            if fileExists:
                # pitch_data = db["mnfapp_pitchvector"].find_one({"script_id": str(script_id)})
                print("scriptName########////", str(request.FILES["scriptss"].name))
                s_name=str(request.FILES["scriptss"].name)
                # numPages = countPages(s_name, s_name.rsplit("/", 1)[1].rsplit(".", 1)[0] + ".pdf")
                # print("with file exist",numPages)
                sript_title=s_name.split(".")[0]
                user_script_data = db["mnfapp_mnfscriptdatabase"].find_one({"script_title": sript_title})
                print("user_script_data ##########################",user_script_data)
                if user_script_data:
                    recent_id=user_script_data.get('script_id')
                    if user_script_data['characterwise_narration']=='True'or user_script_data['linebyline']=='True'or user_script_data['screenplay_analysis']=='True'or user_script_data['character_intro']=='True' or user_script_data['onepager']=='True'or user_script_data['elevator_pitch']=='True':
                        script_database = db["mnfapp_pitchvector"].find_one({"script_id":recent_id})
                        print(script_database)
                else:
                    pass

            else:
                pass        
        except Exception as e:
            error = e
            return render(request, "Pitchdeck/Pitchnarrate1.html", {"error":error})
        
        UScript = NScript(request.POST, request.FILES)
        print("request.FILES", request.FILES)
        print('UScript', UScript)
        if UScript.is_valid():
            z.choosescript = UScript.cleaned_data.get("scriptss")
            print('z.choosescript', z.choosescript)
            z.save()
        # filename = UScript.cleaned_data.get("scriptss")
        # aa = re.sub("[^A-Za-z0-9 /._]+", "", str(z.choosescript))
        # print("aa", aa)
        # # bb = aa.replace(" ", "_")
        # # print(bb)
        # filename = str(aa).replace(" ", "_")
        filename = str(z.choosescript)
        filename = filename[8:]

        #Blockchain 
        if UserCredentialsForBlockchain.objects.filter(user=request.user).exists():
            blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user)
            contex = z.choosescript
            hash = uploadDataToIPFSNode(contex)
            print("hash;;;;;;;;>>",hash)
            request.session["original_script_file_hash"] = hash
        # :::::::::::::

        # print("filename................................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...................>>>>>>>>>>>>>>>>..", filename)
        # print(filename.name)
        request.session["script_name"] = filename
        file_url = str(BASE_DIR) + "/media/scripts/" + filename
        print("file_url", file_url)
        request.session["script_url"] = file_url
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("f: " + str(file_url) + "\n")
        # used because get_subset_character_script needs file dir
        request.session["script_dir_url"] = str(BASE_DIR) + "/media/scripts/"
        print("harsh")
        try:
        	# print("Entered Try *&*&*&*&*&")
            # formInput = getInputs(file_url)
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("In Try block" + "\n")
            print("entered Try :::::::::::::::")
            formInput = getInputs(file_url)
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("form data: " + str(formInput ) + "\n")
            dial_src_script = formInput[2]
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("dial_src_script data: " + str(dial_src_script ) + "\n")
            dial_src_lang = formInput[1]
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("dial_src_langa: " + str(dial_src_lang ) + "\n")
            non_dial_src_lang = formInput[0]
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("non_dial_src_lang: " + str(non_dial_src_lang ) + "\n")
            non_dial_src_script = formInput[3]
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("non_dial_src_script: " + str(non_dial_src_script ) + "\n")
            print("done")

            request.session["dial_src_script"] = dial_src_script
            request.session["dial_src_lang"] = dial_src_lang
            request.session["non_dial_src_lang"] = non_dial_src_lang
            request.session["non_dial_src_script"] = non_dial_src_script
        except:
            error = "Could not process this type of file"
            return render(request, "Pitchdeck/Pitchnarrate1.html", {"error": error})
            

        print("character started")
        checkedopt = []
        # print(request.POST.get("line_by_line_narration"))

        request.session["line_by_line_narration"] = request.POST.get(
            "line_by_line_narration"
        )
        request.session["character_introduction"] = request.POST.get(
            "character_introduction"
        )
        request.session["screenplay_analysis"] = request.POST.get(
            "screenplay_analysis")
        request.session["one_pager"] = request.POST.get("one_pager")
        request.session["elevator_pitch"] = request.POST.get("elevator_pitch")
        request.session["character_narration"] = request.POST.get(
            "character_narration")

        print("charWise")
        print(request.session["character_narration"])

        services_use = []

        if request.session["line_by_line_narration"] == "Line by Line Narration(Video)":
            print(request.session["line_by_line_narration"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Line by line1: " + str(request.session["line_by_line_narration"]) + "\n")
            services_use.append("Line by Line Narration")
        if request.session["character_introduction"] == "Character Introduction(Video)":
            print(request.session["character_introduction"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Character introduction1: " + str(request.session["character_introduction"]) + "\n")
            services_use.append("Character Introduction")
        if request.session["screenplay_analysis"] == "Screenplay Analysis(Video)":
            print(request.session["screenplay_analysis"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Screenplay analysis1: " + str(request.session["screenplay_analysis"]) + "\n")
            services_use.append("Screenplay Analysis")
        if request.session["elevator_pitch"] == "Elevator Pitch(Video)":
            print(request.session["elevator_pitch"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Elevator pitch1: " + str(request.session["elevator_pitch"]) + "\n")
            services_use.append("Elevator Pitch")
        if request.session["one_pager"] == "One Pager(PDF)":
            print(request.session["one_pager"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("One pager1: " + str(request.session["one_pager"]) + "\n")
            services_use.append("One Pager")
        if request.session["character_narration"] == "Characterwise Narration(Video)":
            print(request.session["character_narration"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Character narration1: " + str(request.session["character_narration"]) + "\n")
            services_use.append("Characterwise Narration")


        input_dir = str(BASE_DIR) + "/media/scripts/"
        input_filename = filename
        print("----------OM----------")
        print(input_dir)
        #----------------------modified audit part
        input_script_path = os.path.join(input_dir,input_filename)  #paveen
        print("input_script_path:::::::::::", input_script_path)
        script_id_audit = generate_script_id_for_pitchdeck(input_script_path,request)

        request.session["script_id_audit"] = script_id_audit

        print('Yameenmrequest.session["script_id_audit"]', request.session["script_id_audit"])
        print("neutral audit started---------------")
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            file01.write("1.neutral audit started---------------" + "\n")

        try: 
            neutral_aud = NeutralAudit(script_id_audit)
            print("neutral audit ended-----------")
            char_lst = neutral_aud.get_character_list()

        except:
            char_lst = None
            error = "Our Services are currently not available"
            return render(request, "Pitchdeck/Pitchnarrate1.html", {"error": error})
        
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            file01.write("char list ended-------------------------" + "\n")
        print("2.neutral audit ended-------------------------")
        

        print("HERE IS THE CHARACTER SUBSET",str(char_lst))
        # dist_audit_character_subset = script_audit_obj.get_character_subset(char_list)
        char_list = char_lst
        #---------------------------------------------end--------------------------
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            file01.write("3.LIST of CHARACTERS: " + str(char_list) + "\n")
        # print("dist_audit_character_subsetyameen",dist_audit_character_subset)

        # request.session["dist_audit_character_subset"] = dist_audit_character_subset


        # char_list = mnf_ss.get_character_list(input_dir, input_filename)
        print("char_list________________________________________________",char_list)
        request.session["saved_characters_list"] = list(char_list)
        print("get_character_list done")
        numPages = countPages(file_url, file_url.rsplit(
            "/", 1)[1].rsplit(".", 1)[0] + ".pdf")
        print("no of page", numPages)
        # if numPages > 5:
        #     try:
        #         membertype = privilegedUser1.objects.filter(user=request.user, is_active="yes")
        #         print("neha privalige", membertype)
        #         char_list1 = list(char_list)

        #         if len(char_list1) > 2:
        #             newlist = char_list1[0:2]
        #         else:
        #             newlist = char_list1
        #         no_of_char = len(newlist)
        #         print("........",newlist)
        #         print(">>>>>>>>>>>>>charlenght",no_of_char)
        #         if no_of_char == 1:
        #             return render(
        #                 request,
        #                 "Pitchdeck/Pitchnarrate2.html",
        #                 {
        #                     "script": filename[:-5],
        #                     "character_list": char_list1,
        #                     "numberofcharacter": len(char_list1),
        #                     "firstcharacter": newlist[0],
        #                     "five_character": newlist,
        #                     "cd": centralDatabase.objects.get(user_id=request.user),
        #                     "numPages": numPages,
        #                     "user_name": request.user.username,
        #                     "user_email": request.user.email,
        #                     "services_use": services_use,
        #                     "services_len": len(services_use),
        #                     # "script_database": script_database
        #                 },
        #             )
        #         else:
        #             return render(
        #                 request,
        #                 "Pitchdeck/Pitchnarrate2.html",
        #                 {
        #                     "script": filename[:-5],
        #                     "character_list": char_list1,
        #                     "numberofcharacter": len(char_list1),
        #                     "firstcharacter": newlist[0],
        #                     "secondcharacter": newlist[1],
        #                     "five_character": newlist,
        #                     "cd": centralDatabase.objects.get(user_id=request.user),
        #                     "numPages": numPages,
        #                     "user_name": request.user.username,
        #                     "user_email": request.user.email,
        #                     "services_use": services_use,
        #                     "services_len": len(services_use),
        #                     # "script_database": script_database
        #                 },
        #             )

        #     except:
        #         messages.error(request, "You are not a privileged member.")
        #         print("@@@@@@@@ privileged member nahi hai hai @@@@@@@@@@@@@@@@")
        #         return render(request, "Pitchdeck/Pitchnarrate1.html")
        #         # return redirect("payment")
        # else:
        char_list1 = list(char_list)
        print("char_list", char_list1)

        if len(char_list1) > 2:
            newlist = char_list1[0:2]
        else:
            newlist = char_list1

        no_of_char = len(newlist)
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Number of char pitchnarrate1: " + str(no_of_char) + "\n")

        print("characater lenght ",no_of_char)
        if no_of_char != 0:
            if no_of_char == 1:
                print("no_of_char == 1")
                return render(
                    request,
                    "Pitchdeck/Pitchnarrate2.html",
                    {
                        "script": filename[:-5],
                        "character_list": char_list1,
                        "firstcharacter": newlist[0],
                        "numberofcharacter": len(char_list1),
                        "five_character": newlist,
                        "cd": centralDatabase.objects.get(user_id=request.user),
                        "numPages": numPages,
                        "user_name": request.user.username,
                        "user_email": request.user.email,
                        "services_use": services_use,
                        "services_len": len(services_use),
                        # "script_database": script_database

                    },
                )
            else:
                print("no_of_char, else",)
                return render(
                    request,
                    "Pitchdeck/Pitchnarrate2.html",
                    {
                        "script": filename[:-5],
                        "character_list": char_list1,
                        "numberofcharacter": len(char_list1),
                        "firstcharacter": newlist[0],
                        "secondcharacter": newlist[1],
                        "five_character": newlist,
                        "cd": centralDatabase.objects.get(user_id=request.user),
                        "numPages": numPages,
                        "user_name": request.user.username,
                        "user_email": request.user.email,
                        "services_use": services_use,
                        "services_len": len(services_use),
                        # "script_database": script_database
                    },
                )
        else:
            error = "Sorry something went wrong while fetching The characters from script"
            return render(request, "Pitchdeck/Pitchnarrate1.html", {"error": error})

    print("Return to page one")
   
    return render(request,"Pitchdeck/Pitchnarrate1.html",{"context":number})


@login_required(login_url="/")
def Pitchnarrate2(request):
    # number  = ReferUser.objects.filter(refferedy=request.user).count()
    print("Delhi India****************************************: 2")
    print(request.session)
    print(request.session.items())
    MNFScriptDatabase1 = {}
    if request.method == "GET":
        print("Delhigetting")
    if request.method == "POST":

        l = request.session["saved_characters_list"]
        print(f"saved characters: {l}")


        y = MNFScriptDatabase()
        y.script_id = "scr_" + str(int(time.time()))
        blockchainscript_id = int(time.time())
        request.session["blockchainscript_id"]=blockchainscript_id 
        print("we are printing script id",y.script_id)
        y.connecting_id = ""
        connecting_id = ""
        # y.author_name = request.POST.get('author_name')
        y.script_title = request.POST.get("scriptname")
        script_title = request.POST.get("scriptname")
        url = request.session.get("script_url")
        script_filename = request.session["script_name"]  # get the filename
        y.document_name = script_filename  # save the filename
        document_name = script_filename
        print(script_filename)
        script_page_count = countPages(
            url, (((script_filename.split("/"))[-1]).split("."))[0] + ".pdf"
        )  # get the page count
        print("neha1155op")
        print(script_page_count)
        y.numPages = script_page_count  # save the page count
        # y.script_title = request.POST['script_title']
        numPages = script_page_count
        y.script_file_path = url
        script_file_path = url
        y.actionline_language = request.session["non_dial_src_lang"]
        actionline_language = request.session["non_dial_src_lang"]
        y.actionline_script_language = request.session["non_dial_src_script"]
        actionline_script_language = request.session["non_dial_src_script"]
        y.dialogues_script_language = request.session["dial_src_script"]
        dialogues_script_language = request.session["dial_src_script"]
        y.dialogues_language = request.session["dial_src_lang"]
        dialogues_language = request.session["dial_src_lang"]
        


        request.session["line_by_line_narration"] = request.POST.get(
            "line_by_line_narration"
        )
        request.session["character_introduction"] = request.POST.get(
            "character_introduction"
        )
        request.session["screenplay_analysis"] = request.POST.get(
            "screenplay_analysis")
        request.session["one_pager"] = request.POST.get("one_pager")
        request.session["elevator_pitch"] = request.POST.get("elevator_pitch")
        request.session["character_narration"] = request.POST.get(
            "character_narration")

        print(request.session["character_narration"])
        print(request.session["line_by_line_narration"])
        print(request.session["screenplay_analysis"])
        print(request.session["one_pager"])
        print(request.session["elevator_pitch"])

        service_use = []

        if request.session["line_by_line_narration"] == "Line by Line Narration(Video)":
            print(request.session["line_by_line_narration"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Line by Line narration: " + str(request.session["line_by_line_narration"]) + "\n")
            y.linebyline = "True"
            MNFScriptDatabase1["linebyline"] = "True"
            service_use.append("Line by Line Narration")
        if request.session["character_introduction"] == "Character Introduction(Video)":
            print(request.session["character_introduction"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Character introduction: " + str(request.session["character_introduction"]) + "\n")
            y.character_intro = "True"
            MNFScriptDatabase1["character_intro"] = "True"
            service_use.append("Character Introduction")
        if request.session["screenplay_analysis"] == "Screenplay Analysis(Video)":
            print(request.session["screenplay_analysis"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Screenplay analysis: " + str(request.session["screenplay_analysis"]) + "\n")
            y.screenplay_analysis = "True"
            MNFScriptDatabase1["screenplay_analysis"] = "True"
            service_use.append("Screenplay Analysis")
        if request.session["elevator_pitch"] == "Elevator Pitch(Video)":
            print(request.session["elevator_pitch"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Elevator Pitch: " + str(request.session["elevator_pitch"]) + "\n")
            y.elevator_pitch = "True"
            MNFScriptDatabase1["elevator_pitch"] = "True"
            service_use.append("Elevator Pitch")
        if request.session["one_pager"] == "One Pager(PDF)":
            print(request.session["one_pager"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("One pager: " + str(request.session["one_pager"]) + "\n")
            y.onepager = "True"
            MNFScriptDatabase1["one_pager"] = "True"
            service_use.append("One Pager")
        if request.session["character_narration"] == "Characterwise Narration(Video)":
            print(request.session["character_narration"])
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Character narration: " + str(request.session["character_narration"]) + "\n")
            y.characterwise_narration = "True"
            MNFScriptDatabase1["characterwise_narration"] = "True"
            service_use.append("Characterwise Narration")


        y.user_id = request.user
        user_id = request.user
        # print("userid session")
        # y.progress = 10
        request.session["service_use"]=len(service_use)


        y.save()
        MNFScriptDatabase1["user_id_id"] = str(user_id)
        MNFScriptDatabase1["blockchainscript_id"] =  blockchainscript_id
        MNFScriptDatabase1["script_title"] = script_title 
        MNFScriptDatabase1["script_filename"]= script_filename
        MNFScriptDatabase1["actionline_language"] = actionline_language
        MNFScriptDatabase1["actionline_script_language"] = actionline_script_language
        MNFScriptDatabase1["dialogues_language"] = dialogues_language
        MNFScriptDatabase1["dialogues_script_language"] = dialogues_script_language
        MNFScriptDatabase1["document_name"] = document_name
        MNFScriptDatabase1["script_file_path"] = script_file_path
        MNFScriptDatabase1["original_script_file_hash"] = request.session["original_script_file_hash"]


        

        


        # xx = PitchVectorMultiAuthor()
        pitchvector1={}
        x = PitchVector()
        x.choosescript = request.session["script_name"]
        x.scriptDetails = y
        x.script_id = y.script_id
        x.scriptname = y.script
        scriptname = y.script
        x.genre = request.POST.get("genre")
        genre = request.POST.get("genre")
        x.subGenre = request.POST.get("subgenre")
        subGenre = request.POST.get("subgenre")
        x.projecttype = request.POST.get("projecttype")
        projecttype = request.POST.get("projecttype")
        x.noepisodes = request.POST.get("nepisode")
        noepisodes = request.POST.get("nepisode")
        x.eachepisodes = request.POST.get("eachepisode")
        eachepisodes = request.POST.get("eachepisode")
        x.other = request.POST.get("other")
        other = request.POST.get("other")
        x.language = request.POST.get("language")
        language = request.POST.get("language")
        x.dialect_language = request.POST.get(
            "dialect_language")  # ---------changes
        dialect_language = request.POST.get(
            "dialect_language")

        x.platformproposed = request.POST.get("proposed")
        platformproposed = request.POST.get("proposed")
        x.country = request.POST.get("country")
        country = request.POST.get("country")
        x.countryCode = request.POST.get("code")
        countryCode = request.POST.get("code")
        x.state = request.POST.get("state")
        state = request.POST.get("state")
        x.city = request.POST.get("city")
        city = request.POST.get("city")
        x.languagebelt = request.POST.get("langugebelt")
        languagebelt = request.POST.get("langugebelt")
        x.target_audience = request.POST.get("target")
        target_audience = request.POST.get("target")
        x.target_field = request.POST.get("field")
        target_field = request.POST.get("field")
        x.timeperiod = request.POST.get("period")
        timeperiod = request.POST.get("period")
        x.geography = request.POST.get("geography")
        geography = request.POST.get("geography")
        x.dialogue_reference = request.POST.get("dialogue")
        dialogue_reference = request.POST.get("dialogue")
        x.premise = request.POST.get("premise")
        premise = request.POST.get("premise")
        x.logline = request.POST.get("logline")
        logline = request.POST.get("logline")
        x.save()

        # y.progress = 20
        # y.save()
        # manoj - store data to central database
        cd = centralDatabase.objects.get(user_id=request.user)
        cd.country = x.country
        cd.state = x.state
        cd.city = x.city
        cd.project_type = x.projecttype
        cd.genre = x.genre
        cd.subgenre = x.subGenre
        cd.language = x.language
        cd.set_in_time = x.timeperiod
        cd.set_in_geography = x.geography
        cd.logline = x.logline
        
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            file01.write("disct "+ str(pitchvector1)+ "\n")


        # #CharacterWise Narration
        print(request.POST.getlist("`character_check`"))
        if request.POST.get("characterwise"):
            selected_characters = request.POST.getlist("character_check")

            # replace " " with "_" as uncove docx to pdf conversion was given error
            # for i in range(len(selected_characters)):
            #     if " " in selected_characters[i]:
            #         selected_characters[i] = selected_characters[i].replace(" ","_")

            x.set_selected_characters(selected_characters)
            y.set_selected_characters(selected_characters)
            print(
                f"selected characters: {x.get_selected_characters()} type: {type(x.get_selected_characters())}"
            )

        # # Author details
        if request.POST.get("author"):
            # authorss = []
            # # xx.script_id = y.script_id
            # # xx.save()
            # print("request.POST.getlist('name')",request.POST.getlist('name'))
            # print("request.POST.getlist('auth_name')",request.POST.getlist('auth_name'))
            # print("request.POST.getlist('auth_name') len", len(request.POST.getlist('auth_name')))
            # print("request.FILES.getlist('uploadimage1')[i]",request.FILES.getlist('uploadimage1'))

            # zips = zip_longest(request.POST.getlist('name'), request.POST.getlist('email'),request.POST.getlist('number'),request.POST.getlist('link'),request.FILES.getlist('uploadimage1'),request.POST.getlist('about'))
            # print("::::::::::::::zip:::::::::::",set(zips))
            # # for i in range(len(request.POST.getlist('name'))):
            # #     author = {
            # #         'name': request.POST.getlist('name')[i],
            # #         'email': request.POST.getlist('email')[i],
            # #         'phone': request.POST.getlist('number')[i],
            # #         'link': request.POST.getlist('link')[i],
            # #         'image': request.FILES.getlist('uploadimage1')[i],
            # #         'about': request.POST.getlist('about')[i],
            # #     }
            # #     authorss.append(author)

            # for name, email, number, link, img, about in zip_longest(request.POST.getlist('name'), request.POST.getlist('email'),request.POST.getlist('number'),request.POST.getlist('link'),request.FILES.getlist('uploadimage1'),request.POST.getlist('about')):
            #     author = {
            #         'name': name,
            #         'email': email,
            #         'phone': number,
            #         'link': link,
            #         'image': img,
            #         'about': about,
            #     }

            #     authorss.append(author)
            # #     name_obj = Name.objects.create(name=name)
            # #     xx.names.add(name_obj)

            # # xx.save()

            # print("::::::::::::::::::--> authorss <--::::::::::::::::::",authorss)
            # # l = request.FILES.getlist('uploadimage')[5]

            # # lst = global_database.DB['mnfapp_pitchvector']
            x.author = True
            author = True
            x.name = request.POST.get("auth_name")
            name = request.POST.get("auth_name")
            y.author_name = request.POST.get("auth_name")
            author_name = request.POST.get("auth_name")
            y.save()
            x.author_profile = request.FILES.get("uploadimage")
            x.author_email = request.POST.get("email")
            x.phonenumber = request.POST.get("number")
            x.author_about = request.POST.get("about")
            x.author_link = request.POST.get("link")
            x.save()
            # Blockchain Data

            MNFScriptDatabase1["author_name"] = author_name
            # central database
            cd.about = x.author_about

            x.author1 = [
                x.author_profile,
                request.POST.get("auth_name"),
                request.POST.get("about"),
                request.POST.get("number"),
                request.POST.get("email"),
                request.POST.get("link"),
            ]

            auth_name = request.POST.get("auth_name")
            # store session variable
            request.session["author_name"] = auth_name
            auth_img = request.FILES.get("uploadimage")
            auth_email = request.POST.get("email")
            auth_phone = request.POST.get("number")
            auth_about = request.POST.get("about")
            auth_link = request.POST.get("link")

            print(
                auth_email,
                auth_about,
                auth_img,
                auth_link,
                auth_name,
                auth_phone,
                "====================Author Details Here===========================",
            )
            created_author = Author.objects.create(
                author_profile=auth_img,
                name=auth_name,
                author_about=auth_about,
                author_email=auth_email,
                phonenumber=auth_phone,
                author_link=auth_link,
            )
            # if auth_img:
            #     created_author.author_profile = request.FILES.get("uploadimage")
            #     created_author.save()
            x.author_details.add(created_author)
            print(created_author, "000000000000000000000000000000000")

            x.save()

        # # Plot and story flow
        if request.POST.get("plot_story_flow"):
            x.plot_story_flow = True
            plot_story_flow = True
            x.protagonist = request.POST.get("protagonist")
            x.barrier = request.POST.get("barrier")
            x.midpoint = request.POST.get("midpoint")
            x.climax = request.POST.get("climax")
            x.conflictresolved = request.POST.get("resolved")
            x.minute_protogonist = request.POST.get("minute_pro")
            x.conflict_reaches_climax = request.POST.get("conflict")
            x.save()
            # Blockchain

        # # About shooting
        if request.POST.get("shooting"):
            x.shooting = True
            x.special_preperation = request.POST.get("specialpre")
            x.days_shoot_required = request.POST.get("shoot")
            x.percentage_location = request.POST.get("location")
            x.percentage_scene = request.POST.get(
                "scene"
            )  # percentage of scenes having stunts
            percentage_scene = request.POST.get(
                "scene"
            )
            x.major_prosthetic = request.POST.get("major")
            x.during_production = request.POST.get("during_pro")

            x.save()

        # Dream cast & Locations
        if request.POST.get("dream_cast_locations"):

            x.dream_cast_locations = True
            dream_cast_locations = True
            x.upload_image1 = request.FILES.get("uploadimage1")
            upload_image1 = request.FILES.get("uploadimage1")
            x.leadcharacter = [
                request.POST.get("leadcharacter"),
                request.POST.get("proposedactor1"),
                x.upload_image1,
            ]

            leadcharacter = [
                request.POST.get("leadcharacter"),
                request.POST.get("proposedactor1"),
                upload_image1,
            ]

            # x.leadcharacter = request.POST.get('leadcharacter')
            # x.proposedactor1 = request.POST.get('proposedactor1')
            x.upload_image2 = request.FILES.get("uploadimage2")
            upload_image2 = request.FILES.get("uploadimage2")
            x.secondleadcharacter = [
                request.POST.get("secondleadcharacter"),
                request.POST.get("proposedactor2"),
                x.upload_image2,
            ]
            secondleadcharacter = [
                request.POST.get("secondleadcharacter"),
                request.POST.get("proposedactor2"),
                upload_image2,
            ]

            # x.secondleadcharacter = request.POST.get('secondleadcharacter')
            # x.proposedactor2 = request.POST.get('proposedactor2')

            x.upload_image3 = request.FILES.get("uploadimage3")
            upload_image3 = request.FILES.get("uploadimage3")
            x.mainvillan = [
                request.POST.get("mainvillan"),
                request.POST.get("proposedactor3"),
                x.upload_image3,
            ]
            mainvillan = [
                request.POST.get("mainvillan"),
                request.POST.get("proposedactor3"),
                upload_image3,
            ]

            # x.mainvillan = request.POST.get('mainvillan')
            # x.proposedactor3 = request.POST.get('proposedactor3')

            x.upload_image4 = request.FILES.get("uploadimage4")
            upload_image4 = request.FILES.get("uploadimage4")
            x.associatecharacter = [
                request.POST.get("associatecharacter"),
                request.POST.get("proposedactor4"),
                x.upload_image4,
            ]
            associatecharacter = [
                request.POST.get("associatecharacter"),
                request.POST.get("proposedactor4"),
                upload_image4,
            ]

            # x.proposedactor4 = request.POST.get('proposedactor4')

            x.upload_image5 = request.FILES.get("uploadimage5")
            upload_image5 = request.FILES.get("uploadimage5")
            x.associatevillan = [
                request.POST.get("associatevillan"),
                request.POST.get("proposedactor5"),
                x.upload_image5,
            ]
            associatevillan = [
                request.POST.get("associatevillan"),
                request.POST.get("proposedactor5"),
                upload_image5,
            ]

            # x.proposedactor5 = request.POST.get('proposedactor5')

            x.upload_image6 = request.FILES.get("uploadimage6")
            upload_image6 = request.FILES.get("uploadimage6")
            x.firstlocation = [
                request.POST.get("firstlocation"),
                request.POST.get("proposedactor6"),
                x.upload_image6,
            ]
            firstlocation = [
                request.POST.get("firstlocation"),
                request.POST.get("proposedactor6"),
                upload_image6,
            ]

            x.upload_image7 = request.FILES.get("uploadimage7")
            upload_image7 = request.FILES.get("uploadimage7")
            x.secondlocation = [
                request.POST.get("secondlocation"),
                request.POST.get("proposedactor7"),
                x.upload_image7,
            ]
            secondlocation = [
                request.POST.get("secondlocation"),
                request.POST.get("proposedactor7"),
                upload_image7,
            ]
# Pager_function
            # x.proposedactor7 = request.POST.get('proposedactor7')

            x.upload_image8 = request.FILES.get("uploadimage8")
            upload_image8 = request.FILES.get("uploadimage8")
            x.thirdlocation = [
                request.POST.get("thirdlocation"),
                request.POST.get("proposedactor8"),
                x.upload_image8,
            ]


            if request.session["character_introduction"] == "Character Introduction(Video)":

                extraCharData = []
                for charName, purposeActor, image in zip_longest(request.POST.getlist('character_list'), request.POST.getlist('proposed_actor_list'),request.FILES.getlist('upload_image_list')):
                    charData = {
                        "name": charName,
                        "purpose_actor": purposeActor,
                        "image": str(image)
                    }
                    extraCharData.append(charData)
                
                print("$$$$$$$$$$$$$$______extraCharData______$$$$$$$$$$$$$$", extraCharData)
                
                x.upload_image6 = str(extraCharData)
                upload_image6 = str(extraCharData)
                pitchvector1["upload_image6 "]=upload_image6 

                x.save()

            # x.proposedactor8 = request.POST.get('proposedactor8')
            x.save()

        # # About Film budget
        if request.POST.get("film_budget"):
            x.film_budget = True
            film_budget = True
            # x.making_expenses = request.POST.get("expense")
            x.percentage_scenes_required = request.POST.get("percentage_vfx")
            # x.vfx_expenses = request.POST.get("vfx")
            x.approx_budget_required = request.POST.get("approx_budget")
            # ---------------------changes by neha 18/03/23
            # x.making_expenses_currency = request.POST.get("projectbudget1")
            # x.vfx_expenses_currency = request.POST.get("projectbudget2")
            x.approx_budget_currency = request.POST.get("projectbudget3")

            # --------end
            x.save()
            # cd.budget_amount = x.approx_budget_required
        # # Strengths & Expectations
        if request.POST.get("strengths_and_expectation"):
            x.strengths_and_expectation = True
            x.script_succed = request.POST.get("succed")
            x.produced_now = request.POST.get("produce_now")
            x.monetary_non_monetary_expectation = request.POST.get(
                "expectations")

        x.save()
        cd.save()
        # return render(request,"Pitchdeck/PitchnarratedVideos.html",{"script_id": y.script_id,"script_file_path": "","restrict_to_five": "Yes",},)  # altered line
        # -----BY HARSH

        # try:
        #     membertype = privilegedUser1.objects.get(
        #         user=request.user, is_active="yes"
        #     ).memberType
        # except:
        #     messages.error(request, "You are not a privileged member.")
        #     return render(request, "Pitchdeck/Pitchnarrate1.html")

        request.session["script_id"] = y.script_id
        script_id=request.session["script_id"]
        request.session["numPages"] = y.numPages
        request.session["actionline_language"] = y.actionline_language
        request.session["actionline_script_language"] = y.actionline_script_language
        request.session["dialogues_language"] = y.dialogues_language
        request.session["dialogues_script_language"] = y.dialogues_script_language
        request.session["languages"] = [
            y.actionline_language, y.dialogues_language]
        request.session["document_name"] = y.document_name
        request.session["script_title"] = y.script_title
        request.session["script_file_path"] = y.script_file_path

        context = {
            "script_id": y.script_id,
            "script_file_path": y.script_file_path,

        }
        context["restrict_to_five"] = "yes"
        context["numPages"] = y.numPages
        context['script_title'] = y.script_title
        context["ndial_src"] = y.actionline_language
        context["dial_src"] = y.dialogues_language
        context["ndial_script"] = y.actionline_script_language
        context["dial_script"] = y.dialogues_script_language

        # y.progress = 40
        y.save()

        # Blockchain code by Asha..       

        request.session["pitchvector1"] = str(pitchvector1)
        request.session["MNFScriptDatabase1"] = str(MNFScriptDatabase1)

        # :::::::::::::
        # x = User.objects.get(id=request.user)
        # id = x.id

        id = request.user.id

        num_pages = request.session["numPages"]

        print("did lil chanps1", num_pages)
        # ---------------------------------------changes
        if num_pages > 5:
            # check user is priviledged member or not
            if not privilegedUser1.objects.filter(user=request.user,is_active="yes").exists():

                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                     file01.write("Not a privilage user"+ str(privilegedUser1.objects.filter(user=request.user,is_active="yes"))+ "\n")

                context["membershipNarration"] = int(settings.MONTHLY_MEMBER)
                request.session["UpdatePriviledgedUser"] = True
                
                # try:
                #     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
                #     )
                # except:
                #     pass

                pricelist = NarrationPricing(y.script_id, l, id) 
                print("pricelist in pre",pricelist)

                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                     file01.write("4."+ str(pricelist)+ "\n")

                request.session["total_amount"] = pricelist["total_amount"]
                context["total_amount"] = pricelist["total_amount"]
                context["amount_charged"] = pricelist["amount_charged"] + int(settings.MONTHLY_MEMBER)
                request.session["amount_charged"] = pricelist["amount_charged"] + int(settings.MONTHLY_MEMBER)
                # context["discount"] = context["total_amount"] + context["membershipNarration"] - context["amount_charged"]
                
                # request.session["discount"]=round(context["discount"], 2)
                # context["discount"] = request.session["discount"]

                pdiscount= 0
                
                context["pdiscount"] = pdiscount
               
                context["sdiscount"] = pricelist["sdiscount"]
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                      file01.write("5.stafff discount-------------------" + str(context["sdiscount"]) + "\n")
                if pricelist["sdiscount"]==0:
                    context["staff_discount_calculate"] = 0
                else:
                    staff_discount_calculate = float((pricelist["sdiscount"] / 100) * pricelist["total_amount"])
                    context["staff_discount_calculate"] = staff_discount_calculate

                p_discount_calculate = float((context["total_amount"]-context["staff_discount_calculate"])*pricelist["pdiscount"] / 100)
                context["p_discount_calculate"] = p_discount_calculate

                context["rdiscount"] = pricelist["rdiscount"]

                running_discount_calculate = float((context["total_amount"]-context["staff_discount_calculate"]-context["p_discount_calculate"])*context["rdiscount"]/ 100)
                
                context["running_discount_calculate"] = running_discount_calculate

                context["imdiscount"] = pricelist["imdiscount"]

                im_discount_calculate = float((context["total_amount"]-context["staff_discount_calculate"]-context["p_discount_calculate"]-context["running_discount_calculate"])*pricelist["imdiscount"]/ 100)
                context["im_discount_calculate"] =round(im_discount_calculate,2)
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                      file01.write("5.student discount-------------------" + str(context["im_discount_calculate"]) + "\n")
                # context["discount"] = context["total_amount"] - \
                #     context["amount_charged"]
                # context["discount"]= context["amount_charged"]+ context["p_discount_calculate"]+ context["staff_discount_calculate"]+ context["running_discount_calculate"]+ context["im_discount_calculate"]
                
                
                context["discount"] = float(context["staff_discount_calculate"]+context["p_discount_calculate"]+context["running_discount_calculate"]+context["im_discount_calculate"])
                
                request.session["discount"]=round(context["discount"], 2)
                context["discount"] = request.session["discount"]


                print("did lil chanps0")

                try:
                    wall = Wallet.objects.get(user=request.user)
                    context["balance"] = wall.balance
                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
                
                

                print("did lil chanps2")
                request.session["pages_greater_than_five"] = "true"

                indent_context = create_indent(request,"Pitchdeck",script_id,len(service_use), "",pricelist["total_amount"], pricelist["amount_charged"],context["discount"])
                request.session["indent_context"] = indent_context
                return render(request, "Pitchdeck/narration_checkoutnew.html", context)
                
            else:
                request.session["UpdatePriviledgedUser"] = False
                pricelist = NarrationPricing(y.script_id, l, id)  # changes done by manoj
                print("pricelist in post",pricelist)
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                     file01.write("5." + str(pricelist) + "\n")
                request.session["total_amount"] = pricelist["total_amount"]
                context["total_amount"] = pricelist["total_amount"]
                context["membershipNarration"] = 0
                context["amount_charged"] = pricelist["amount_charged"]
                request.session["amount_charged"] = pricelist["amount_charged"]
                
                
                context["pdiscount"] = pricelist["pdiscount"]

               
                context["sdiscount"] = pricelist["sdiscount"]
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                      file01.write("5.stafff discount-------------------" + str(context["sdiscount"]) + "\n")
                if pricelist["sdiscount"]==0:
                    context["staff_discount_calculate"] = 0
                else:
                    staff_discount_calculate = float((pricelist["sdiscount"] / 100) * pricelist["total_amount"])
                    context["staff_discount_calculate"] = staff_discount_calculate

                p_discount_calculate = float((context["total_amount"]-context["staff_discount_calculate"])*pricelist["pdiscount"] / 100)
                context["p_discount_calculate"] = p_discount_calculate

                context["rdiscount"] = pricelist["rdiscount"]

                running_discount_calculate = float((context["total_amount"]-context["staff_discount_calculate"]-context["p_discount_calculate"])*context["rdiscount"]/ 100)
                
                context["running_discount_calculate"] = running_discount_calculate

                context["imdiscount"] = pricelist["imdiscount"]

                im_discount_calculate = float((context["total_amount"]-context["staff_discount_calculate"]-context["p_discount_calculate"]-context["running_discount_calculate"])*pricelist["imdiscount"]/ 100)
                context["im_discount_calculate"] =round(im_discount_calculate,2)
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                      file01.write("5.student discount-------------------" + str(context["im_discount_calculate"]) + "\n")
                # context["discount"] = context["total_amount"] - \
                #     context["amount_charged"]
                # context["discount"]= context["amount_charged"]+ context["p_discount_calculate"]+ context["staff_discount_calculate"]+ context["running_discount_calculate"]+ context["im_discount_calculate"]
                
                
                context["discount"] = float(context["staff_discount_calculate"]+context["p_discount_calculate"]+context["running_discount_calculate"]+context["im_discount_calculate"])
                
                request.session["discount"]=round(context["discount"], 2)
                context["discount"] = request.session["discount"]

                
                try:
                    wall = Wallet.objects.get(user=request.user)
                    context["balance"] = wall.balance
                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
                
                

                print("did lil chanps2")
                request.session["pages_greater_than_five"] = "true"
                indent_context = create_indent(request,"Pitchdeck",script_id,len(service_use), "",pricelist["total_amount"], pricelist["amount_charged"],context["discount"])
                request.session["indent_context"] = indent_context
                return render(request, "Pitchdeck/narration_checkoutnew.html", context)
                

        else:
            print("did lil chanps3")
            request.session["pages_greater_than_five"] = "false"
            context = {
                "script_id": request.session["script_id"],
                "script_file_path": request.session["script_file_path"],
                "restrict_to_five": "no",
                "servies_user":service_use,
                "servies_user_length" : len(service_use),
                

            }
            return render(request, "Pitchdeck/PitchnarratedVideos.html", context)
    # ---------------------------------end change
    return render(
        request,
        "Pitchdeck/Pitchnarrate2.html",
        {"cd": centralDatabase.objects.get(user_id=request.user)},
    )


def NarrationPricing(script_id, l, u):

    script_info = MNFScriptDatabase.objects.get(script_id=script_id)
    vector_info = PitchVector.objects.get(script_id=script_id)
    numPages = script_info.numPages
    amt_linebyline = 0
    amt_character_intro = 0
    amt_screenplay_analysis = 0
    amt_elevator_pitch = 0
    amt_onepager = 0
    amt_characterwise_narration = 0

    if script_info.linebyline == "True":
        amt_linebyline = settings.LINE_BY_LINE * numPages

    if script_info.onepager == "True":
        # amt_onepager = settings.ONE_PAGER
        if numPages > 0 and numPages <= 15:
            amt_onepager = settings.ONE_PAGER1
        if numPages >= 16 and numPages <= 50:
            amt_onepager = settings.ONE_PAGER2
        if numPages >= 51 and numPages <= 100:
            amt_onepager = settings.ONE_PAGER3
        if numPages > 100:
            amt_onepager = settings.ONE_PAGER4

    if script_info.elevator_pitch == "True":
        # amt_elevator_pitch = settings.ELEVATOR_PITCH
        if numPages > 0 and numPages <= 15:
            amt_elevator_pitch = settings.ELEVATOR_PITCH1
        if numPages >= 16 and numPages <= 50:
            amt_elevator_pitch = settings.ELEVATOR_PITCH2
        if numPages >= 51 and numPages <= 100:
            amt_elevator_pitch = settings.ELEVATOR_PITCH3
        if numPages > 100:
            amt_elevator_pitch = settings.ELEVATOR_PITCH4

    if script_info.screenplay_analysis == "True":
        if numPages > 0 and numPages <= 15:
            amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS1
        if numPages >= 16 and numPages <= 50:
            amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS2
        if numPages >= 51 and numPages <= 100:
            amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS3
        if numPages > 100:
            amt_screenplay_analysis = settings.SCREENPLAY_ANALYSIS4

    if script_info.character_intro == "True":
        # amt_character_intro = len(l) * settings.CHARACTER_INTRODUCTION
        if numPages > 0 and numPages <= 15:
            amt_character_intro = settings.CHARACTER_INTRODUCTION1
        if numPages >= 16 and numPages <= 50:
            amt_character_intro = settings.CHARACTER_INTRODUCTION2
        if numPages >= 51 and numPages <= 100:
            amt_character_intro = settings.CHARACTER_INTRODUCTION3
        if numPages > 100:
            amt_character_intro = settings.CHARACTER_INTRODUCTION4

    if script_info.characterwise_narration == "True":
        # selected_character = vector_info.selected_characters
        # selected_character = json.loads(selected_character)
        # amt_characterwise_narration = (
        #     len(selected_character) * settings.CHARACTERWISE_NARATION
        # )
        amt_characterwise_narration = settings.CHARACTERWISE_NARATION * numPages

    total_amount = (
        amt_linebyline
        + amt_onepager
        + amt_elevator_pitch
        + amt_screenplay_analysis
        + amt_character_intro
        + amt_characterwise_narration
    )
    amount_charged = total_amount
    # ----To calculate if package discount is available
    if (
        script_info.linebyline == "True"
        and script_info.onepager == "True"
        and script_info.elevator_pitch == "True"
        and script_info.screenplay_analysis == "True"
        and script_info.character_intro == "True"
        and script_info.characterwise_narration == "True"
    ):
        amount_charged = total_amount - (
            total_amount * settings.COMPLETE_PITCHDECK / 100
        )
    if (
        script_info.linebyline != "True"
        and script_info.onepager == "True"
        and script_info.elevator_pitch == "True"
        and script_info.screenplay_analysis != "True"
        and script_info.character_intro != "True"
        and script_info.characterwise_narration != "True"
    ):
        amount_charged = total_amount - (
            total_amount * settings.ONEPAGER_ELEVATORPITCH / 100
        )
    if (
        script_info.linebyline != "True"
        and script_info.onepager != "True"
        and script_info.elevator_pitch != "True"
        and script_info.screenplay_analysis == "True"
        and script_info.character_intro == "True"
        and script_info.characterwise_narration != "True"
    ):
        amount_charged = total_amount - (
            total_amount * settings.SCREENPLAY_CHARACTERINTRO / 100
        )
    if (
        script_info.linebyline == "True"
        and script_info.onepager != "True"
        and script_info.elevator_pitch != "True"
        and script_info.screenplay_analysis == "True"
        and script_info.character_intro == "True"
        and script_info.characterwise_narration != "True"
    ):
        amount_charged = total_amount - (
            total_amount * settings.LBL_SCREENPLAY_CHARACTERINTRO / 100
        )
 
    pricelist = {
        "total_amount": total_amount,
        "amt_linebyline": amt_linebyline,
        "amt_character_intro": amt_character_intro,
        "amt_screenplay_analysis": amt_screenplay_analysis,
        "amt_elevator_pitch": amt_elevator_pitch,
        "amt_onepager": amt_onepager,
        "amt_characterwise_narration": amt_characterwise_narration,
        "pdiscount":int(0),
    }
    # ------To calculate priviledge discount
    user = User.objects.get(id=u)

    # manoj updated code for priviledged user
    
    try:
        memberType = privilegedUser1.objects.filter(user=user, is_active="yes") # changes done by manoj
        if memberType:
            memberType = memberType.first().memberType
            if memberType == "normal":
                pricelist["pdiscount"] = 0
                
            elif memberType == "yearly":
                pricelist["pdiscount"] = settings.YEARLY_MEMBER_ADDITIONAL
                amount_charged = amount_charged - (
                    settings.YEARLY_MEMBER_ADDITIONAL * amount_charged / 100
                )
            elif memberType == "Life Member":
                pricelist["pdiscount"] = settings.LIFE_MEMBER_ADDITIONAL
                amount_charged = amount_charged - (
                    settings.LIFE_MEMBER_ADDITIONAL * amount_charged / 100
                )
    except:
        pricelist["pdiscount"] = 0
        
    pricelist["sdiscount"] = 0
    if User.objects.get(id=u).is_staff:  # changes done by manoj
        pricelist["sdiscount"] = settings.EMPLOY_DISCOUNT
        amount_charged = amount_charged - (
            settings.EMPLOY_DISCOUNT * amount_charged / 100
        )

    pricelist["rdiscount"] = settings.RUNNING_DISCOUNT_PITCHDECK
    amount_charged = amount_charged - (
        settings.RUNNING_DISCOUNT_PITCHDECK * amount_charged / 100
    )

    pricelist["imdiscount"] = 0
    # changes done by manoj
    if Institutional_user.objects.filter(user=user, status="verified").exists():
        pricelist["imdiscount"] = settings.IM_DISCOUNT
        amount_charged = amount_charged - \
            (settings.IM_DISCOUNT * amount_charged / 100)

    pricelist["amount_charged"] = float(round(amount_charged, 2))

    return pricelist

# @csrf_exempt
# @require_GET


# def Pitch_creation(request):

#     reset_progress_dict(userId=request.user.id)

#     script_id = request.GET["script_id"]

#     from pymongo import MongoClient

#     # MongoDBUrl = "mongodb+srv://mynextfilm:mnf123@cluster0.ojasb.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
#     client = MongoClient(MongoDBUrl)
#     db = client.DB
#     ScriptDatabase = "mnfapp_mnfscriptdatabase"
#     script_info = db[ScriptDatabase].find_one({"script_id": script_id})
   
#     script_file_path = script_info.get("script_file_path")
#     # try:
#     data_for_blockchain = []
#     data_for_blockchain.append(script_file_path)
#     # raise ValueError #-----to test for payment refund commentout
#     update_progress(userId=request.user.id, progress=30)

#     try:
#         print("vector started in pitchcretatio")
#         vector_generation.vector_gen(script_file_path, script_id)
#         print("Vectors generated succesfully")
  
#         update_progress(userId=request.user.id, progress=50)

#     except Exception as e:
#         update_progress(userId=request.user.id, progress=0)
#         time.sleep(20)
#         delet_user_progress(userId=request.user.id)
#         sys.exit(e)


#     script_info = db[ScriptDatabase].find_one({"script_id": script_id})

#     VectorDatabase = "mnfapp_pitchvector"
#     vector_info = db[VectorDatabase].find_one({"script_id": script_id})

#     # try:
#     if script_info != None:
#         # Code to convert docx to pdf
#         """
#         str1 = "unoconv -f pdf"
#         str2 = script_info.get("script_file_path")
#         str3 = str1 + " " + str2
#         print("Filpath:", script_info.get("script_file_path"))
#         os.system(str3)
#         print("File converted")
#         temp = script_info.get("script_file_path").split("/")
#         temp = temp[-1].split(".")
#         # print(rf"{basePath}/MNF/media/PdfFiles/{temp} + '.pdf'")
#         """
#         document_name = script_info["document_name"][0:-5]
#         script_info[
#             "script_file_pdf_path"
#         ] = rf"{basePath}/media/PdfFiles/{document_name}.pdf"
#         print("Pitch Creation", script_info)
#         script_info["narration_video_path"] = ""
#         script_info["line_by_line_narration_video_path"] = ""
#         script_info["script_genre"] = ""
#         # pdf = PdfFileReader(open(script_info.get("script_file_pdf_path"), "rb"))
#         # number_of_pages = pdf.getNumPages()
#         # print("No. of pages in PDF:", number_of_pages)
#         # script_info["number_of_pages"] = int(number_of_pages)
#         db[ScriptDatabase].save(script_info)
#     else:
#         print(" Entry for script id not found")

#     # restrict = request.GET["restrict_to_five"]
#     # narration_generation.narration_function(script_id, restrict)
#     # narration_generation.narration_function(script_id)
#     # linebyline_narration.line_by_line_narration(script_id) #changed 12th March
#     print(
#         "**************************************************************************************************************"
#     )
#     print(
#         "******************************_______*************************************************************************"
#     )
#     # screenplay_main.screenplay_function(script_id)
#     # pitch_function.pitch_function(script_id)
#     print("________start here______")
#     script_title = script_info.get("script_title")
#     print("$$")

#     if script_info["characterwise_narration"] == "True":
#         """
#         access selected_characters here from database
#         run characterwise script generation function
#         """
#         try:
#             print("________characterwise_narration______")

#             selected_character = vector_info["selected_characters"]
#             # selected_character = script_info["selected_characters"]

#             input_dir = request.session.get("script_dir_url")
#             input_filename = request.session["script_name"]
#             selected_character = json.loads(
#                 selected_character)  # json string to list

#             dic_of_chr_path = mnf_ss.get_subset_character_script(
#                 input_dir, input_filename, selected_character
#             )

#             print("Out of Mohit Function")
#             path_list = []
#             # character_pagecount=[]
#             for i in selected_character:
#                 print("Entering loop of character ,", i)
#                 c = MNFScriptDatabase()
#                 c.script_id = "scr_" + str(int(time.time()))
#                 # c.main_script_id = script_info["main"]
#                 print("script_info connecting_id",
#                       script_info["connecting_id"])
#                 # c.connecting_id = script_id
#                 c.connecting_id = script_info

#                 print("Printing Script id of first character", c.script_id)
#                 c.script_title = script_title + \
#                     "_" + str(i)  # session variable
#                 url = dic_of_chr_path[i]
#                 pdfname = url.split("/")[-1][0:-5] + ".pdf"
#                 c.script_file_path = url
#                 str1 = "unoconv -f pdf"
#                 # str2 = script_info.get("script_file_path")

#                 # str2 = url.replace(" ","_")
#                 str2 = url

#                 str3 = str1 + " " + '"' + str2 + '"'
#                 print("Filpath:", url)
#                 os.system(str3)
#                 print("File converted")
#                 temp = url.split("/")
#                 # name.docx
#                 temp = temp[-1].split(".")
#                 # c.script_file_pdf_path = rf"{basePath}/media/PdfFiles/{temp[0]}"+ ".pdf"

#                 c.script_file_pdf_path = rf"{url[:-5]}" + ".pdf"

#                 print("printing script path", c.script_file_pdf_path)
#                 print("printing url", url)
#                 print(
#                     "************************",
#                     rf"{basePath}/media/PdfFiles/{temp[0]}" + ".pdf",
#                 )
#                 # pdf = PdfFileReader(open(rf"{basePath}/media/PdfFiles/{temp[0]}"+ ".pdf", "rb"))
#                 pdf = PdfFileReader(open(rf"{c.script_file_pdf_path}", "rb"))

#                 # number_of_pages = countPages(
#                 # url, pdfname)  # get the page count
#                 print("1")
#                 number_of_pages = pdf.getNumPages()

#                 # character_pagecount.append(number_of_pages)
#                 print("1")
#                 c.numPages = number_of_pages
#                 # print("1")
#                 # c.script_file_path = url
#                 print("1")
#                 c.actionline_language = request.session["non_dial_src_lang"]
#                 print("1")
#                 c.actionline_script_language = request.session["non_dial_src_script"]
#                 print("1")
#                 c.dialogues_script_language = request.session["dial_src_script"]
#                 print("1")
#                 c.dialogues_language = request.session["dial_src_lang"]
#                 c.author_name = request.session["author_name"]
#                 print("1")
#                 # c.user_id = script_info["user_id_id"]
#                 # c.user_id = request.user
#                 print("1")
#                 c.save()
#                 print("Vector Creating for Character")
#                 print("script path", c.script_file_path)
#                 print("script id", c.script_id)

#                 vector_generation.vector_gen(c.script_file_path, c.script_id)
#                 print(f"Vector Created for {script_title}")
#                 # c.save()
#                 linebyline_narration.line_by_line_narration(
#                     c.script_id)  # error here
#                 print("Characterwise Video Created")
#                 c.line_by_line_narration_video_path = (
#                     rf"{basePath}/media/videos/Narrated_Videos/{c.script_title}.webm"
#                 )
#                 # lst.append()
#                 path_list.append(
#                     rf"{basePath}/media/videos/Narrated_Videos/{c.script_title}.webm"
#                 )

#                 # exit()

#             # script_info["character_pagecount"]   = json.dumps(character_pagecount)
#             script_info["characterwise_video_path"] = json.dumps(path_list)
#             data_for_blockchain.append(json.dumps(path_list))
#             db[ScriptDatabase].save(script_info)
#         except Exception as e:
            
#             update_progress(userId=request.user.id, progress=0)
#             time.sleep(10)
#             delet_user_progress(userId=request.user.id)
#             sys.exit(e)

#         # print("will this work",dic_of_chr_path)

#     if script_info["onepager"] == "True":
#         try:
#             print("Before pager_function", script_id)
#             Pager_function.pager_function(script_id)
#             script_info[
#                 "onepager_pdf_path"
#             ] = rf"{basePath}/media/Onepager/{script_title}.pdf"
#             data_for_blockchain.append(
#                 rf"{basePath}/media/Onepager/{script_title}.pdf")
#             db[ScriptDatabase].save(script_info)
#             print("One Pager generated sucessfully")
#         except Exception as e:
            
#             update_progress(userId=request.user.id, progress=0)
#             time.sleep(10)
#             delet_user_progress(userId=request.user.id)
#             sys.exit(e)

#     if script_info["screenplay_analysis"] == "True":
#         try:
#             print("Rohit before")
#             screenplay_main.screenplay_function(script_id)
#             print("Rohit after")
#             script_info[
#                 "screenplay_analysis_video_path"
#             ] = rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
#             data_for_blockchain.append(
#                 rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
#             )
#             db[ScriptDatabase].save(script_info)
#             print("Screenplay generated sucessfully")
#         except Exception as e:
#             update_progress(userId=request.user.id, progress=0)
#             time.sleep(10)
#             delet_user_progress(userId=request.user.id)
#             sys.exit(e)

#     if script_info["elevator_pitch"] == "True":
#         try:
#             print("Entering ElevatorPitch: ")
#             pitch_function.pitch_function(script_id)
#             script_info["elevator_pitch_video_path"] = (
#                 rf"{basePath}/media/Pitch/" +
#                 str(script_title) + "_pitchdeck.webm"
#             )
#             data_for_blockchain.append(
#                 rf"{basePath}/media/Pitch/" +
#                 str(script_title) + "_pitchdeck.webm"
#             )
#             print("ElevatorPitch generated sucessfully")
#             db[ScriptDatabase].save(script_info)
#             print("Rohit2")
#         except Exception as e:
#             update_progress(userId=request.user.id, progress=0)
#             time.sleep(10)
#             delet_user_progress(userId=request.user.id)
#             sys.exit(e)

#     if script_info["character_intro"] == "True":
#         try:
#             print("----Entering character introduction-----")
#             # obj = TestingC.Char_video_class(script_id)
#             # characterdata = obj.char_data_written()
#             # for i in characterdata:
#             #     obj.first_intro_page(i)
#             Char_function.char_function(script_id)

#             script_info["character_intro_video_path"] = rf'{basePath}/media/character_Intro/{str(script_title)}.webm'
            
#             # # # data_for_blockchain.append(rf"{basePath}/media/Pitch/" + str(script_title) + "_pitchdeck.webm")
#             print("character introduction generated sucessfully")
#             db[ScriptDatabase].save(script_info)
#             print("Rohit2")
#         except Exception as e:
#             update_progress(userId=request.user.id, progress=0)
#             time.sleep(10)
#             delet_user_progress(userId=request.user.id)
#             sys.exit(e)

#     if script_info["linebyline"] == "True":
#         try:
#             print("Rohit3")
#             linebyline_narration.line_by_line_narration(script_id)

#             print("Narration generated sucessfully")
#             script_title = script_info.get("script_title")
#             # script_info[
#             #     'narration_video_path'] = rf"{basePath}/media/videos/Narrated_Videos/{script_title}.webm"
#             script_info[
#                 "line_by_line_narration_video_path"
#             ] = rf"{basePath}/media/videos/Narrated_Videos/{script_title}.webm"

#             script_info["narration_video_path"] = script_info[
#                 "line_by_line_narration_video_path"
#             ]
#         except Exception as e:
#             update_progress(userId=request.user.id, progress=0)
#             time.sleep(10)
#             delet_user_progress(userId=request.user.id)
#             sys.exit(e)
#     # data_for_blockchain.append(script_info["narration_video_path"])

#     context = {
#         "status": "Success",
#     }
#     user = request.user
#     email = user.email
#     # ------------------------------------------------------blockchain
#     # script_path = str(rf"{basePath}/media/scripts/{script_title}")

#     print("list ", data_for_blockchain)
#     # data = [script_path, data_for_blockchain ]
#     # print("All Files ",data)
#     print("Function 11")

#     update_progress(userId=request.user.id, progress=85)

#     try:
#         files, timestamp = upload_zipfile_to_ipfs(
#             data_for_blockchain, str(script_title), "pitchdeck", email
#         )
#         script_info["timestamp"] = timestamp
#         print("timestamp of blockchain", files, timestamp)
#         script_info["uploaded_script_encoded"] = files
#         # script_info["translated_script_encoded"] = files[1]
#         db[ScriptDatabase].save(script_info)
#     except Exception as e:
#         update_progress(userId=request.user.id, progress=0)
#         time.sleep(10)
#         delet_user_progress(userId=request.user.id)
#         sys.exit(e)
#     # ---------------------------------------------------------------------------
#     current_site = get_current_site(request)
#     context = {
#         "domain": current_site.domain,
#         "serviceName": "Pitch Creation",
#         "name": email,
#         "amount": request.POST.get("total_amount"),
#         # "timestamp":timestamp,
#         # "key":script_title
#     }
#     num_pages = request.session["numPages"]
#     if num_pages > 5:  # ----------------neha
#         request.session["pages_greater_than_five"] == "true"
#         message = render_to_string("narration/MR31.html", context)
#         text_content = strip_tags(message)
#         msg = EmailMultiAlternatives(
#             "Successfully Narrated",
#             text_content,
#             settings.EMAIL_HOST_USER,
#             [email],
#         )
#         msg.attach_alternative(message, "text/html")
#         msg.send()
#     else:
#         # send mail only for confirmation hjgjh
#         request.session["pages_greater_than_five"] = "false"  # --------neha
#         message = render_to_string("narration/MR31.html", context)
#         text_content = strip_tags(message)
#         msg = EmailMultiAlternatives(
#             "Successfully Narrated",
#             text_content,
#             settings.EMAIL_HOST_USER,
#             [email],
#         )
#         msg.attach_alternative(message, "text/html")
#         msg.send()

#     del request.session["pages_greater_than_five"]

#     var = Notifications(
#         user_id=request.user,
#         notification=str(
#             "Narration generated successfully for " + script_title),
#     )
#     var.save()
#     update_progress(userId=request.user.id, progress=100)
#     time.sleep(10)
#     delet_user_progress(userId=request.user.id)
#     return JsonResponse(context)

def Pitch_creation(request):

    reset_progress_dict(userId=request.user.id)

    script_id = request.GET["script_id"]

    from pymongo import MongoClient

    # MongoDBUrl = "mongodb+srv://mynextfilm:mnf123@cluster0.ojasb.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
    client = MongoClient(MongoDBUrl)
    db = client.DB
    ScriptDatabase = "mnfapp_mnfscriptdatabase"
    script_info = db[ScriptDatabase].find_one({"script_id": script_id})
    print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",script_info)
   
    script_file_path = script_info.get("script_file_path")
    print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>",script_file_path)
    
    

    data_for_blockchain = []
    data_for_blockchain.append(script_file_path)
    # raise ValueError #-----to test for payment refund commentout
    update_progress(userId=request.user.id, progress=30)

    with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
        file01.write("6.INSIDE pitch_creation function : vector id is -->" + str(script_id)+ "\n")
    #-----------------modified audit
    script_id_audit = request.session["script_id_audit"] 

    check_status_and_trigger_vector(script_id_audit,script_id)
    # audit_vector_integration_pitchdeck(script_id_audit,script_id)
    print(":>:>:>complete")
    # audit_vector_integration(script_file_path,script_id,request)


    with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
        file01.write("7.Vectors generated succesfully" + "\n")

    # try:
    #     print("vector started in pitchcretatio")
    #     # from scriptAudit.views import generate_script_id
    #     # generate_script_id(script_file_path, request)
    #     print("vector:",script_id)
    #     # vector_generation.vector_gen(script_file_path, script_id)
    #     audit_vector_integration(script_file_path,script_id,request) 
    #     print("vector:","Vectors generated succesfully")
    #     with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","w+") as file01:
    #         file01.write("Vectors generated succesfully")
    #     # audit_vector_integration(script_file_path,script_id,request) 
    #     update_progress(userId=request.user.id, progress=50)

    # except Exception as e:
    #     update_progress(userId=request.user.id, progress=0)
    #     time.sleep(20)
    #     delet_user_progress(userId=request.user.id)
    #     sys.exit(e)

    # print("vector:","outside vector generation")
    script_info = db[ScriptDatabase].find_one({"script_id": script_id})

    VectorDatabase = "mnfapp_pitchvector"
    vector_info = db[VectorDatabase].find_one({"script_id": script_id})
#    Blockchain data
    # script_info1 = converted_dict["MNFScriptDatabase1"]
    # vector_info1 =  converted_dict["pitchvector1"]
    # try:
    print("vector:","outside vector generation")
    MNFScriptDatabase1 = eval(request.session["MNFScriptDatabase1"])
    pitchvector1 = eval(request.session["pitchvector1"])
    
    if script_info != None:
        # Code to convert docx to pdf
        """
        str1 = "unoconv -f pdf"
        str2 = script_info.get("script_file_path")
        str3 = str1 + " " + str2
        print("Filpath:", script_info.get("script_file_path"))
        os.system(str3)
        print("File converted")
        temp = script_info.get("script_file_path").split("/")
        temp = temp[-1].split(".")
        # print(rf"{basePath}/MNF/media/PdfFiles/{temp} + '.pdf'")
        """
        document_name = script_info["document_name"][0:-5]
        script_info[
            "script_file_pdf_path"
        ] = rf"{basePath}/media/PdfFiles/{document_name}.pdf"
        print("Pitch Creation", script_info)
        script_info["narration_video_path"] = ""
        script_info["line_by_line_narration_video_path"] = ""
        script_info["script_genre"] = ""
        # MNFScriptDatabase1["script_file_pdf_path"] = rf"{basePath}/media/PdfFiles/{document_name}.pdf"




        # Blockchain 

        # pdf = PdfFileReader(open(script_info.get("script_file_pdf_path"), "rb"))
        # number_of_pages = pdf.getNumPages()
        # print("No. of pages in PDF:", number_of_pages)
        # script_info["number_of_pages"] = int(number_of_pages)
        # /////////////
        db[ScriptDatabase].save(script_info)
    else:
        print(" Entry for script id not found")

    # restrict = request.GET["restrict_to_five"]
    # narration_generation.narration_function(script_id, restrict)
    # narration_generation.narration_function(script_id)
    # linebyline_narration.line_by_line_narration(script_id) #changed 12th March
    print(
        "**************************************************************************************************************"
    )
    print(
        "******************************_______*************************************************************************"
    )
    # screenplay_main.screenplay_function(script_id)
    # pitch_function.pitch_function(script_id)
    print("________start here______")
    script_title = script_info.get("script_title")
    print("$$")
    
    # manoj
    service_name_list = []
    videopath_for_email=[]
    


    if script_info["characterwise_narration"] == "True":
        """
        access selected_characters here from database
        run characterwise script generation function
        """
        try:
            print("________characterwise_narration______")

            selected_character = vector_info["selected_characters"]
            # selected_character = script_info["selected_characters"]

            input_dir = request.session.get("script_dir_url")
            input_filename = request.session["script_name"]
            selected_character = json.loads(
                selected_character)  # json string to list
            #-----------------------------------------------------------modified audit
            print("SELECTED CHARACTER",selected_character)
            script_id_audit = request.session["script_id_audit"]
            print("yameen script_id_audit",script_id_audit)
            
            # script_audit_obj = NeutralAudit(script_id_audit)
            # dic_of_chr_path = script_audit_obj.get_character_subset(selected_character)
            neutral_aud = NeutralAudit(script_id_audit)
            char_sub = neutral_aud.get_character_subset(selected_character)
            print("CHARACTER SUBSET",char_sub)
            # dic_of_chr_path = mnf_ss.get_subset_character_script(
            #     input_dir, input_filename, selected_character
            # )
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("8." +str(char_sub) + "\n")

            dic_of_chr_path = char_sub
            #-------------------------------------------------------------------end
            logging.debug(f"slected_charcter {selected_character}")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("selected characters list----------" +str(selected_character) + "\n")
            print("Out of Mohit Function")
            path_list = []
            # character_pagecount=[]
            for i in selected_character:
                
                print("Entering loop of character ,", i)
                c = MNFScriptDatabase()
                c.script_id = "scr_" + str(int(time.time()))
                print("script neha","scr_" + str(int(time.time())))
                # logging.debug(f"slected_charcter {f"script neha scr_{str(int(time.time()))}")
                # c.main_script_id = script_info["main"]
                print("script_info connecting_id",
                      script_info["connecting_id"])
                # c.connecting_id = script_id
                c.connecting_id = script_info

                print("Printing Script id of first character", c.script_id)
                c.script_title = script_title + \
                    "_" + str(i)  # session variable
                url = dic_of_chr_path[i]
                pdfname = url.split("/")[-1][0:-5] + ".pdf"
                c.script_file_path = url
                str1 = "unoconv -f pdf"
                # str2 = script_info.get("script_file_path")

                # str2 = url.replace(" ","_")
                str2 = url

                str3 = str1 + " " + '"' + str2 + '"'
                print("Filpath:", url)
                os.system(str3)
                print("File converted")
                temp = url.split("/")
                # name.docx
                temp = temp[-1].split(".")
                # c.script_file_pdf_path = rf"{basePath}/media/PdfFiles/{temp[0]}"+ ".pdf"

                c.script_file_pdf_path = rf"{url[:-5]}" + ".pdf"
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                        file01.write("9. script file pdf path"+ str(c.script_file_pdf_path) + "\n") 
                print("printing script path", c.script_file_pdf_path)
                print("printing url", url)
                print(
                    "************************",
                    rf"{basePath}/media/PdfFiles/{temp[0]}" + ".pdf",
                )
                # pdf = PdfFileReader(open(rf"{basePath}/media/PdfFiles/{temp[0]}"+ ".pdf", "rb"))
                pdf = PdfFileReader(open(rf"{c.script_file_pdf_path}", "rb"))

                # number_of_pages = countPages(
                # url, pdfname)  # get the page count
                print("1")
                number_of_pages = pdf.getNumPages()

                # character_pagecount.append(number_of_pages)
                print("1")
                c.numPages = number_of_pages
                # print("1")
                # c.script_file_path = url
                print("1")
                c.actionline_language = request.session["non_dial_src_lang"]
                print("1")
                c.actionline_script_language = request.session["non_dial_src_script"]
                print("1")
                c.dialogues_script_language = request.session["dial_src_script"]
                print("1")
                c.dialogues_language = request.session["dial_src_lang"]
                if "author_name" in request.session:
                    c.author_name = request.session["author_name"]
                print("1")
                # c.user_id = script_info["user_id_id"]
                # c.user_id = request.user
                print("1")
                c.save()
                print("Vector Creating for Character")
                print("script path", c.script_file_path)
                print("script id", c.script_id)


                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("9." + str(i) + str(c.script_file_path)+str(c.script_id) + "\n") 
                
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("10.generated vectors for" + str(i) + "\n")

                vector_generation.vector_gen(c.script_file_path, c.script_id)
                print(f"Vector Created for {script_title}")
                # c.save()
                print(i)
                path = char_function(script_id,i)
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("11.path of character " + str(path) + "\n")
                print("path neehhhhaa",path)
                linebyline_narration.line_by_line_narration(
                    c.script_id,True, path)  # error here
                with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("12. line by line complete " + "\n")
                print("Characterwise Video Created")
                c.line_by_line_narration_video_path = (
                    rf"{basePath}/media/videos/Narrated_Videos/{c.script_title}.webm"
                )
                # lst.append()
                path_list.append(
                    rf"{basePath}/media/videos/Narrated_Videos/{c.script_title}.webm"
                )
                print(path_list,"######################## path list ########################")
                data_for_blockchain.append(rf"{basePath}/media/videos/Narrated_Videos/{c.script_title}.webm")


                # exit()

                script_info["selected_characters"]   = json.dumps(selected_character)
                script_info["characterwise_video_path"] = json.dumps(path_list)
                MNFScriptDatabase1["selected_characters"] = json.dumps(selected_character)
                MNFScriptDatabase1["characterwise_video_path"] = json.dumps(path_list)

                # data_for_blockchain.append(json.dumps(path_list))
                db[ScriptDatabase].save(script_info)
                print("Characterwise Narration Video Created")
                #----------use for email path
                email_path=script_info["characterwise_video_path"]
                videopath_for_email.append(email_path)
                # manoj
                service_name_list.append("Characterwise Narration")

            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("11.END of characterwise Narration" +"\n")

        except Exception as e:
            
            update_progress(userId=request.user.id, progress=0)
            time.sleep(10)
            delet_user_progress(userId=request.user.id)
            sys.exit(e)

        # print("will this work",dic_of_chr_path)

    if script_info["onepager"] == "True":
        try:
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                    file01.write("one pager started" +"\n")
            print("Before pager_function", script_id)
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt1","a") as file01:
                    file01.write("one pager started" +str(script_id)+"\n")
            Pager_function.pager_function(script_id)
            script_info[
                "onepager_pdf_path"
            ] = rf"{basePath}/media/Onepager/{script_title}.pdf"
            data_for_blockchain.append(
                rf"{basePath}/media/Onepager/{script_title}.pdf")
            # db[ScriptDatabase].save(script_info)
            print("One Pager generated sucessfully")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                    file01.write("One Pager generated sucessfully" + str(script_info["onepager_pdf_path"]) + "\n")
           
        #    Blockchain

            MNFScriptDatabase1["onepager_pdf_path"] = rf"{basePath}/media/Onepager/{script_title}.pdf"

            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                file01.write("After mnfblockchain" + "\n")

            temp_dir = tempfile.mkdtemp()
            short_path = os.path.join(temp_dir, "file.pdf")
            Onepagerfile = rf"{basePath}/media/Onepager/{script_title}.pdf"
            with open(Onepagerfile, 'rb') as source_file, open(short_path, 'wb') as target_file:
                target_file.write(source_file.read())
                hash = uploadDataToIPFSNode(short_path)
                os.remove(short_path)
                os.rmdir(temp_dir)
                MNFScriptDatabase1["Onepager_Script_fileHash"] = hash
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                file01.write("After mnfblockchain" +hash+ "\n")
                # hash = response.json()["hash"]
               
                
            # with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
            #     file01.write("Blockchainfile: " + str(hash) + "\n")
            # #use for email path
            email_path=script_info["onepager_pdf_path"]
            videopath_for_email.append(email_path)

            # manoj
            service_name_list.append("One Pager")
        except Exception as e:
            
            update_progress(userId=request.user.id, progress=0)
            time.sleep(10)
            delet_user_progress(userId=request.user.id)
            sys.exit(e)

    if script_info["screenplay_analysis"] == "True":
        try:
            print("Rohit before")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("Screenplay started" + "\n")
            screenplay_main.screenplay_function(script_id)
            print("Rohit after")
            script_info[
                "screenplay_analysis_video_path"
            ] = rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"

            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write('path of screenplay'+str(script_info["screenplay_analysis_video_path"])+"\n")
            data_for_blockchain.append(
                rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
            )
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write('blockchain'+"\n")
            db[ScriptDatabase].save(script_info)
            print("Screenplay generated sucessfully")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write('screenplay generated'+"\n")

            # blockchain
            temp_dir = tempfile.mkdtemp()
            short_path = os.path.join(temp_dir, "file.pdf")
            MNFScriptDatabase1["screenplay_analysis_video_path"] = rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
            Screenplayfile = rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
            with open(Screenplayfile, 'rb') as source_file, open(short_path, 'wb') as target_file:
                target_file.write(source_file.read())
                hash = uploadDataToIPFSNode(short_path)
                os.remove(short_path)
                os.rmdir(temp_dir)
                print("HASH>>>",hash)
                MNFScriptDatabase1["Screenplayh_Script_fileHash"] = hash

            #use for email path
            email_path= script_info["screenplay_analysis_video_path"]
            videopath_for_email.append(email_path)

            # manoj
            service_name_list.append("Screenplay Analysis")
            
        except Exception as e:
            update_progress(userId=request.user.id, progress=0)
            time.sleep(10)
            delet_user_progress(userId=request.user.id)
            sys.exit(e)

    if script_info["elevator_pitch"] == "True":
        try:
            print("Entering ElevatorPitch: ")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("Elevator started" + "\n")
            pitch_function.pitch_function(script_id)
            script_info["elevator_pitch_video_path"] = (
                rf"{basePath}/media/Pitch/" +
                str(script_title) + "_pitchdeck.webm"
            )
            
            #Blockchain
            temp_dir = tempfile.mkdtemp()
            short_path = os.path.join(temp_dir, "file.pdf")
            MNFScriptDatabase1["elevator_pitch_video_path"] = rf"{basePath}/media/Pitch/" +str(script_title) + "_pitchdeck.webm"
            ElevatorPitchfile = rf"{basePath}/media/Pitch/" +str(script_title) + "_pitchdeck.webm"
            with open(ElevatorPitchfile, 'rb') as source_file, open(short_path, 'wb') as target_file:
                target_file.write(source_file.read())
                hash = uploadDataToIPFSNode(short_path)
                os.remove(short_path)
                os.rmdir(temp_dir)
                MNFScriptDatabase1["ElevatorPitch_Script_fileHash"] = hash

            data_for_blockchain.append(
                rf"{basePath}/media/Pitch/" +
                str(script_title) + "_pitchdeck.webm"
            )
            print("ElevatorPitch generated sucessfully")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("ElevatorPitch  generated sucessfully" + str(script_info["elevator_pitch_video_path"]) + "\n")
            db[ScriptDatabase].save(script_info)
            print("Rohit2")
            
            #use for email path
            email_path= script_info["elevator_pitch_video_path"]
            videopath_for_email.append(email_path)

            # manoj
            service_name_list.append("Elevator Pitch")
        except Exception as e:
            update_progress(userId=request.user.id, progress=0)
            time.sleep(10)
            delet_user_progress(userId=request.user.id)
            sys.exit(e)

    if script_info["character_intro"] == "True":
        try:
            print("----Entering character introduction-----")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("character introduction started" + "\n")
            # obj = TestingC.Char_video_class(script_id)
            # characterdata = obj.char_data_written()
            # for i in characterdata:
            #     obj.first_intro_page(i)
            Char_function.char_function(script_id)

            script_info["character_intro_video_path"] = rf'{basePath}/media/character_Intro/{str(script_title)}.webm'
            
            # # # data_for_blockchain.append(rf"{basePath}/media/Pitch/" + str(script_title) + "_pitchdeck.webm")
            print("character introduction generated sucessfully")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("Character introduction generated sucessfully" + str(script_info["character_intro_video_path"]) + "\n")
            db[ScriptDatabase].save(script_info)
            print("Rohit2")

            #Blockchain
            temp_dir = tempfile.mkdtemp()
            short_path = os.path.join(temp_dir, "file.pdf")
            MNFScriptDatabase1["character_intro_video_path"] = rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
            Characterfile = rf'{basePath}/media/character_Intro/{str(script_title)}.webm'
            with open(Characterfile, 'rb') as source_file, open(short_path, 'wb') as target_file:
                target_file.write(source_file.read())
                hash = uploadDataToIPFSNode(short_path)
                os.remove(short_path)
                os.rmdir(temp_dir)
                MNFScriptDatabase1["Characterfile_Script_fileHash"] = hash
                
            #use for email path
            email_path= script_info["character_intro_video_path"]
            videopath_for_email.append(email_path)

            # manoj
            service_name_list.append("Character Introduction")
        except Exception as e:
            update_progress(userId=request.user.id, progress=0)
            time.sleep(10)
            delet_user_progress(userId=request.user.id)
            sys.exit(e)

    if script_info["linebyline"] == "True":
        try:
            print("Rohit3")
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                    file01.write("Line by line started" + "\n")
            linebyline_narration.line_by_line_narration(script_id)
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                  file01.write("line by line complete" +"\n")
            print("Narration generated sucessfully")
            script_title = script_info.get("script_title")
            # script_info[
            #     'narration_video_path'] = rf"{basePath}/media/videos/Narrated_Videos/{script_title}.webm"
            script_info[
                "line_by_line_narration_video_path"
            ] = rf"{basePath}/media/videos/Narrated_Videos/{script_title}.webm"
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
                    file01.write("Line by line path" + str(script_info["line_by_line_narration_video_path"])+ "\n")
            script_info["narration_video_path"] = script_info[
                "line_by_line_narration_video_path"
            ]
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write("Line by line generated sucessfully-----------------" + str(script_info["narration_video_path"]) + "\n")
            
            #Blockchain
            temp_dir = tempfile.mkdtemp()
            short_path = os.path.join(temp_dir, "file.pdf")
            MNFScriptDatabase1["line_by_line_narration_video_path"] = rf"{basePath}/media/Screenplay/{script_title}_screenplay.webm"
            narrationfile = rf"{basePath}/media/videos/Narrated_Videos/{script_title}.webm"
            with open(narrationfile, 'rb') as source_file, open(short_path, 'wb') as target_file:
                target_file.write(source_file.read())
                hash = uploadDataToIPFSNode(short_path)
                os.remove(short_path)
                os.rmdir(temp_dir)
                MNFScriptDatabase1["narration_Script_fileHash"] = hash
            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                    file01.write("Line by line generated sucessfully" + str(script_info["narration_video_path"]) + "\n")
            
            #use for email path
            email_path= script_info["line_by_line_narration_video_path"]
            videopath_for_email.append(email_path)
           
            # manoj
            service_name_list.append("Line by line")
        except Exception as e:
            update_progress(userId=request.user.id, progress=0)
            time.sleep(10)
            delet_user_progress(userId=request.user.id)
            sys.exit(e)
    # data_for_blockchain.append(script_info["narration_video_path"])

    #    Blockchain

    print("/n/n/n/n/nn/n/ngenarate all servies/n/n/n/n")

    if UserCredentialsForBlockchain.objects.filter(user=request.user).exists():
        blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user)
        MNFDatabase = {}
        MNFDatabase["MNFScriptDatabase1"] = MNFScriptDatabase1
        MNFDatabase["pitchvector1"] = pitchvector1
        key1= "MyNextFilm"
        UserId = blockchain_obj.user_id
        project = request.session["blockchainscript_id"]
        Data = str(MNFDatabase)
        userPrivateKey = blockchain_obj.privateKey
        userkey =decryptionOfPrivate(userPrivateKey)
        hash = NarrationData(userkey.decode('utf-8'),UserId, project,Data)
        print("my_tx_hash",hash)


    context = {
        "status": "Success",
    }
    user = request.user
    email = user.email
    # ------------------------------------------------------blockchain
    # script_path = str(rf"{basePath}/media/scripts/{script_title}")

    print("list ", data_for_blockchain)
    
    # data = [script_path, data_for_blockchain ]
    # print("All Files ",data)
    print("Function 11")

    update_progress(userId=request.user.id, progress=85)

    try:
        files, timestamp = upload_zipfile_to_ipfs(
            data_for_blockchain, str(script_title), "pitchdeck", email
        )
        script_info["timestamp"] = timestamp
        print("timestamp of blockchain", files, timestamp)
        script_info["uploaded_script_encoded"] = files
        # script_info["translated_script_encoded"] = files[1]
        db[ScriptDatabase].save(script_info)
    except Exception as e:
        update_progress(userId=request.user.id, progress=0)
        time.sleep(10)
        delet_user_progress(userId=request.user.id)
        sys.exit(e)
    # ---------------------------------------------------------------------------

    #use for email click here path
    with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
        file01.write("videopath_for_email." +str(videopath_for_email) + "\n")
    click_for_email= ""
    if len(videopath_for_email) == 1:
        click_for_email = str(videopath_for_email[0])
        print(click_for_email)
    else:
        click_for_email= ", ".join(videopath_for_email[:-1]) + " and " + videopath_for_email[-1]
        print(click_for_email)


    current_site = get_current_site(request)
    context = {
        "domain": current_site.domain,
        "serviceName": "Pitch Creation",
        "name": email,
        "amount": request.POST.get("total_amount"),
        # "click_email":click_for_email,
        # "timestamp":timestamp,
        # "key":script_title
    }

    # manoj for creating new subject according to services they used
    subject_accordingto_service_list = ""
    if len(service_name_list) == 1:
        subject_accordingto_service_list = str(service_name_list[0])
    else:
        subject_accordingto_service_list = ", ".join(service_name_list[:-1]) + " and " + service_name_list[-1]
    
    
    # manoj new subject line
    # subject_accordingto_service_list += " narrated successfully"

    
    
    num_pages = request.session["numPages"]
    if num_pages > 5:  # ----------------neha
        request.session["pages_greater_than_five"] == "true"
        to_email = [request.user.email]
        email_code = 'TN1'
        
        sendmail(to_email=to_email , email_code=email_code ,key_value={'service_name':subject_accordingto_service_list})
        # message = render_to_string("narration/MR31.html", context)
        # text_content = strip_tags(message)
        # msg = EmailMultiAlternatives(
        #     subject_accordingto_service_list,
        #     text_content,
            
        #     settings.EMAIL_HOST_USER,
        #     [email],
        # )
        # msg.attach_alternative(message, "text/html")
        # msg.send()
    else:
        # send mail only for confirmation hjgjh
        request.session["pages_greater_than_five"] = "false"  # --------neha
        to_email = [request.user.email]
        email_code = 'TN1'
        
        sendmail(to_email=to_email , email_code=email_code )
        # message = render_to_string("narration/MR31.html", context)
        # text_content = strip_tags(message)
        # msg = EmailMultiAlternatives(
        #     subject_accordingto_service_list,
        #     text_content,
            
        #     settings.EMAIL_HOST_USER,
        #     [email],
        # )
        # msg.attach_alternative(message, "text/html")
        # msg.send()

    del request.session["pages_greater_than_five"]

    var = Notifications(
        user_id=request.user,
        notification=str(
            "Narration generated successfully for " + script_title),
    )
    var.save()
    update_progress(userId=request.user.id, progress=100)
    time.sleep(10)
    delet_user_progress(userId=request.user.id)
    return JsonResponse(context)



    # except Exception as e:
    print("error is ", e)
    payment_intent_id = script_info.get("payment_intent_id")
    print("thisisgonnabeaRefund")
    if payment_intent_id:
        if payment_intent_id[0:4] == "pay":
            client = razorpay.Client(auth=(keyID, keySecret))
            payment_id = payment_intent_id
            paydetail = client.payment.fetch(payment_id)
            total_amount = request.POST.get("total_amount") - (paydetail["fee"] / 100)
            try:
                c = CurrencyRates()
                rate = c.get_rate("USD", "INR")
            except Exception as e:
                print("pich creation", e)
                rate = 80
            payment_amount = int(float(total_amount) * 100 * rate)
            client.payment.refund(
                payment_id,
                {
                    "amount": payment_amount,
                    "speed": "normal",
                },
            )
        else:
            stripe.Refund.create(payment_intent_id)
            user = request.user
            email = user.email
            context = {
                "serviceName": "Pitch Creation",
                "name": email,
            }
            message = render_to_string("narration/MR28.html", context)
            text_content = strip_tags(message)
            msg = EmailMultiAlternatives(
                "Incovenience is regretted",
                text_content,
                settings.EMAIL_HOST_USER,
                [email],
            )
            msg.attach_alternative(message, "text/html")
            msg.send()
        user = request.user
        email = user.email
        context = {
            "serviceName": "Pitch Creation",
            "name": email,
        }
        message = render_to_string("narration/MR23.html", context)
        text_content = strip_tags(message)
        # create the email, and attach the HTML version as well.
        msg = EmailMultiAlternatives(
            "We are investigating the reason",
            text_content,
            settings.EMAIL_HOST_USER,
            [email],
        )
        msg.attach_alternative(message, "text/html")
        msg.send()
    return JsonResponse({}, status=500)

def progress_sender(request):
    # Simulating a long-running task
    print("Reached Progress_sender")
    userId = request.user.id
    progress = progress_dict.get(userId)

    if userId in progress_dict:
        if progress is not None:
            old_progress = old_progress_dict.get(userId)
            while old_progress == progress:
                # Add a small delay to reduce CPU usage
                time.sleep(1)
                progress = progress_dict.get(userId)
            
            print("New Value send --->>", progress)

            if progress == 0:
                old_progress_dict[userId] = progress
                data = {'status': 'error', 'progress': progress}
                return JsonResponse(data)

            if progress == 100:
                old_progress_dict[userId] = progress
                data = {'status': 'completed', 'progress': progress}
                return JsonResponse(data)

            old_progress_dict[userId] = progress
            data = {'status': 'in_progress', 'progress': progress}
            return JsonResponse(data)

    data = {'status': 'no_update'}
    return JsonResponse(data)
    
            


    # # Get the progress value from the task (replace with your logic)
    # progress = get_progress()

    # # Check if the progress has reached 100% or not
    # if progress >= 100:
    #     # If the progress is complete, return the final result
    #     data = {'status': 'completed', 'progress': 100, 'result': 'Task completed successfully'}
    # else:
    #     # If the progress is not complete, return the progress value
    #     data = {'status': 'in_progress', 'progress': progress}

    # return JsonResponse(data)


# progress_dict = {}
# old_progress_dict = {}
# except Exception as e:
# print("error is ", e)
# payment_intent_id = script_info.get("payment_intent_id")
# print("thisisgonnabeaRefund")
# if payment_intent_id:
#     if payment_intent_id[0:4] == "pay":
#         client = razorpay.Client(auth=(keyID, keySecret))
#         payment_id = payment_intent_id
#         paydetail = client.payment.fetch(payment_id)
#         total_amount = request.POST.get("total_amount") - (paydetail["fee"] / 100)
#         try:
#             c = CurrencyRates()
#             rate = c.get_rate("USD", "INR")
#         except Exception as e:
#             print("pich creation", e)
#             rate = 80
#         payment_amount = int(float(total_amount) * 100 * rate)
#         client.payment.refund(
#             payment_id,
#             {
#                 "amount": payment_amount,
#                 "speed": "normal",
#             },
#         )
#     else:
#         stripe.Refund.create(payment_intent_id)
#         user = request.user
#         email = user.email
#         context = {
#             "serviceName": "Pitch Creation",
#             "name": email,
#         }
#         message = render_to_string("narration/MR28.html", context)
#         text_content = strip_tags(message)
#         msg = EmailMultiAlternatives(
#             "Incovenience is regretted",
#             text_content,
#             settings.EMAIL_HOST_USER,
#             [email],
#         )
#         msg.attach_alternative(message, "text/html")
#         msg.send()
#     user = request.user
#     email = user.email
#     context = {
#         "serviceName": "Pitch Creation",
#         "name": email,
#     }
#     message = render_to_string("narration/MR23.html", context)
#     text_content = strip_tags(message)
#     # create the email, and attach the HTML version as well.
#     msg = EmailMultiAlternatives(
#         "We are investigating the reason",
#         text_content,
#         settings.EMAIL_HOST_USER,
#         [email],
#     )
#     msg.attach_alternative(message, "text/html")
#     msg.send()
# return JsonResponse({}, status=500)


# class PostStreamView(View):
#     def get(self, request):
#         obj = ProgressNarration.objects.filter(user_id=request.user.id).last()
#         if obj:
#             print("Processing Chal Rahi hai", obj.progress)
#             if obj.progress == 100:
#                 return JsonResponse({"status": "success", "progress": obj.progress}, status=200)
#             if obj.progress == 0:
#                 return JsonResponse({"status": "Failed"}, status=500)
#             else:
#                 return JsonResponse({"status": "pending", "progress": obj.progress}, status=202)
#         else:
#             return JsonResponse({"status": "Do nothing"}, status=203)

# def my_process(progress):
#     progress_updated.send(sender=None, progress=progress)

# class ProgressConsumer(AsyncWebsocketConsumer):
#     async def connect(self):
#         await self.accept()
#         await self.send(json.dumps({'progress': 0}))
#         progress_updated.connect(self.progress_updated_handler)

#     async def disconnect(self, close_code):
#         progress_updated.disconnect(self.progress_updated_handler)

#     async def progress_updated_handler(self, event):
#         progress = event['progress']
#         await self.send(json.dumps({'progress': progress}))

# class ProgressConsumer(WebsocketConsumer):
#     def connect(self):
#         self.room_name = "test"
#         self.room_group_name = "test group"
#         async_to_sync(self.channel_layers.group_send)(
#             self.room_name, self.room_group_name
#         )
#         self.accept()
#         self.send(text_data = json.dumps({"status":"finally Ran"}))

# def disconnect(self, close_code):
#     pass

# def receive(self, text_data):
#     pass

# def update_progress(self, event):
#     progress = event['progress']
#     await self.send(text_data=progress)


# def send_progress_to_client(sender, instance, **kwargs):
#     if instance.user_id.id == kwargs['user_id']:
#         print("######## Instance Found ###########")
#         return instance.progress, instance.user_id.id
#     else:
#         return None


# SSE Yameen Progress Bar

# def event_stream(userId=None):
#     while True:
#         progress = progress_dict.get(userId)
#         print("In stream, progress", progress)
#         if progress is not None:
#             print("In stream", old_progress_dict.get(userId), progress)
#             if old_progress_dict.get(userId) != progress:
#                 if progress == 0:
#                     data = {'progress': progress}
#                     yield f"data: {json.dumps(data)}\n\n"
#                     time.sleep(2)
#                     print("data send ->>>>>", data)
#                     delet_user_progress(userId=userId)
#                     break

#                 elif progress == 100:
#                     data = {'progress': progress}
#                     yield f"data: {json.dumps(data)}\n\n"
#                     time.sleep(2)
#                     print("data send ->>>>>", data)
#                     break

#                 else:
#                     data = {'progress': progress}
#                     yield f"data: {json.dumps(data)}\n\n"
#                     time.sleep(2)
#                     print("data send ->>>>>", data)
#                     old_progress_dict[userId] = progress
#         else:
#             yield 'event: ping\ndata: {}\n\n'
#         time.sleep(2)


def update_progress(userId, progress):
    if userId in progress_dict:
        progress_dict[userId] = progress
        print(f"############# Progress Updated {progress} ###########")
        time.sleep(3)


def update_old_progress(userId, progress):
    if userId in old_progress_dict:
        old_progress_dict[userId] = progress
        print(f"############# OLD Progress Updated {progress} ###########")
        time.sleep(3)


def reset_progress_dict(userId):
    if userId in progress_dict and userId in old_progress_dict:
        del progress_dict[userId]
        del old_progress_dict[userId]

        progress_dict[userId] = 20
        old_progress_dict[userId] = 0
        print("new value intialized",
              progress_dict[userId], old_progress_dict[userId])
        time.sleep(3)
    else:
        progress_dict[userId] = 20
        old_progress_dict[userId] = 0
        print("new value intialized",
              progress_dict[userId], old_progress_dict[userId])
        time.sleep(3)


def delet_user_progress(userId):
    if userId in progress_dict and userId in old_progress_dict:
        del progress_dict[userId]
        del old_progress_dict[userId]
        time.sleep(3)


# @csrf_exempt
# def progress_sender(request):
#     user_id = request.user.id
#     response = StreamingHttpResponse(event_stream(
#         userId=user_id), content_type='text/event-stream')
#     response['Cache-Control'] = 'no-cache'
#     response['Connection'] = 'keep-alive'
#     return response


# @receiver(post_save, sender=ProgressNarration)
# def progress_narration_post_save(sender, instance, **kwargs):
#     print("######################### update ##################################")
#     print(sender,instance)
#     print(instance.progress)
#     print(instance.user_id.id)
#     progress, userId = send_progress_to_client(sender, instance, user_id=instance.user_id.id)
#     if progress:
#         print("@@@@@@@@@@@@@@@@@@@@@@@@ New Progress Updated dict #############################")
#         print("progress", progress)
    # progress_dict[userId] = progress

    # update_model(request=None, progress = progress)

    # channel_layer = get_channel_layer()
    # async_to_sync(channel_layer.group_send)(
    # 'progress_group', {'type': 'update_progress', 'progress': progress})


# def stream(request):
#     oldProgress = 10
#     while True:
#         obj = ProgressNarration.objects.filter(user_id=request.user.id).last()
#         if obj:
#             print("::::::::OBJ:::::::::::")
#             print(obj.progress)
#             if oldProgress != obj.progress:
#                 message = {"progress": obj.progress}
#                 yield f"data: {json.dumps(message)}\n\n"
#                 print("@@@@@ Data Send @@@@@", obj.progress)
#                 time.sleep(2)
#                 oldProgress = obj.progress
#                 print("oldProgress",oldProgress)
#             else:
#                 yield " " * 1024
#         time.sleep(1)

#     del oldProgress


# # # @csrf_exempt
# # # @require_GET

# class PostStreamView(View):
#     def get(self, request):
#         response = StreamingHttpResponse(stream(request))
#         response['Content-Type'] = 'text/event-stream'
#         response["Cache-Control"] = "no-cache"
#         response["Connection"] = "keep-alive"
#         response['X-Accel-Buffering'] = 'no'
#         response['Timeout'] = '86400'
#         return response

    # global PROGRESS
    # old_counter = PROGRESS
    # PROGRESS += 1
    # new_counter = PROGRESS
    # if old_counter != new_counter:
    # #    print("progress", new_counter)
    # # else:
    # #     # counter has not been updated
    # #     pass
    #     obj = MNFScriptDatabase.objects.filter(user_id=request.user.id, progress__gt=0)
    #     print("::::::::::::Processing Chal Rahi hai########################################################", obj)
    # # if old_counter != new_counter:
    # #     print("progress", new_counter)
    # #     if obj.progress == 100:
    # #         return JsonResponse({"status": "success"}, status=200)
    # #     elif obj.progress == 0:
    # #         return JsonResponse({"status": "failed"}, status=500)
    # #     else:
    # #         return JsonResponse({"status": "pending", "progress": new_counter}, status=202)
    #     message = {"progress": new_counter}
    #     response.write(f"data: {json.dumps(message)}\n\n")
    #     return JsonResponse({"status": "pending", "progress": new_counter}, status=202)
    # else:
    #     obj = MNFScriptDatabase.objects.filter(user_id=request.user.id, progress__gt=0).first()
    #     print("::::::::::::Processing Chal Rahi hai########################################################", obj.progress)
    #     return JsonResponse({"status": "pending", "progress": 20}, status=202)

# yameen on update progress:
# def send_progress_to_client(sender, instance, **kwargs):
#     print("######## send_progress_to_client ###########")
#     print(instance.user_id, kwargs['user_id'])
#     if instance.user_id.id == kwargs['user_id']:
#         print("######## Instance Found ###########")
#         message = {"progress": instance.progress}
#         print("PostStreamView.responses", PostStreamView.responses)
#         for response in PostStreamView.responses:
#             print("######## Message send ###########")
#             print("response", response)
#             response.queue.put(f"data: {json.dumps(message)}\n\n")

# class PostStreamView(View):
#     responses = []

#     def get(self, request):
#         print("######## Responce Send ###########")
#         response = StreamingHttpResponse(self.stream(request))
#         response['Content-Type'] = 'text/event-stream'
#         response['Cache-Control'] = 'no-cache'
#         response['Connection'] = 'keep-alive'
#         response.queue = Queue()
#         self.responses.append(response)
#         print("response", response)
#         return response

#     def stream(self, request):
#         print("######## In Stream ###########")
#         message = {"progress": 0}
#         old_data = f"data: {json.dumps(message)}\n\n"
#         while True:
#             rlist, _, _ = select.select([self.responses[-1].queue.reader], [], [], 1)
#             if rlist:
#                 data = self.responses[-1].queue.get()
#                 if data:
#                     old_data = data.encode()
#                     yield data.encode()
#             else:
#                 pass

# @receiver(post_save, sender=ProgressNarration)
# def progress_narration_post_save(sender, instance, **kwargs):
#     print("######################### update ##################################")
#     print(sender,instance)
#     print(instance.progress)
#     print(instance.user_id.id)
#     send_progress_to_client(sender, instance, user_id=instance.user_id.id)
from centralizePayment.views import callback, create_indent


def narrationCheckout1(request,script_id):
    amount_charged = request.session["amount_charged"]
    total_amount = request.session["total_amount"]
    discount = request.session["discount"] 
    service_count=request.session["service_use"]
    context = create_indent(request,"pitchdeck",script_id,service_count,"",total_amount,amount_charged,discount)
    with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
        file01.write("narration checkout--------- -->" + str(context)+ "\n")
    narration_instance = PitchVector.objects.get(id=script_id)  # get object from your service database
    with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
            file01.write("narration checkout--------- -->" + str(narration_instance)+ "\n")

    # handle  razor pay gateway → 
    if "orderId" in context:
            narration_instance.order_id = context["orderId"]
            narration_instance.cp_id = context["central_pay_id"]
            narration_instance.save()  # save central payment details in your database

    # handle stripe gateway →
    elif "client_secret" in context:
            narration_instance.order_id = context["client_secret"]
            narration_instance.cp_id = context["central_pay_id"]
            narration_instance.save() # save central payment details in your database

    # handle corporate profile →
    elif "corporate" in context:
            narration_instance.order_id = "corporate profile"
            narration_instance.cp_id = "corporate profile"
            narration_instance.save()  # save central payment details in your database

    #             # run service in thread →
    #             # thread = Thread(target=run_subtitle, args=(payment_object,))
    #             # thread.start()
            return render(request, "template.html",  {"message":"bill added to the corporate profile"})
    else:
    #             # handle errors →
             return render(request, "template.html",  {"message":"invalid request!"})

    # handle success →
    return render(request, "template.html",  context)

def post(request):
        response = request.POST.data  # Get payment response
        # call central payment callback function →
        data = callback(response, request)

        # handle success status →
        if data["payment_status"] == "success":
                    # get object			
                    payment_object =PitchVector.objects.get(cp_id=data["central_pay_id"]) 
                    payment_object.transaction_id = data["payment_id"]
                    payment_object.isPaid = True
                    payment_object.save()  # save payment information
                    # run service in thread → demo

                    # thread = Thread(target=run_subtitle, args=(payment_object,))
                    # thread.start()
                    return render(request,"template.html",{"status": "Payment Done"})
        # handle errors →
        else:
                    render(request,"template.html",{"error_data": "Payment Failed"})

def narrationCheckout(request):
    set_payment_token(request)
    keyID = request.session["keyID"]
    keySecret = request.session["keySecret"]
    # num_pages = request.session["numPages"]
    # print(funcname)
    narration_instance = PitchVector.objects.get(script_id=request.session["script_id"])
   
    if request.method == "POST":
        # if num_pages > 5 :
        total_amount = request.session["amount_charged"]
        
        # script_id=request.session["script_id"]
        # narrationCheckout1(request,script_id)
        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

        request.session["pay_with_wallet"] = "no"
        if request.POST["pay_with_wallet"] == "yes":
            request.session["pay_with_wallet"] = "yes"
            balance = float(request.POST["balance"])
            payable = float(request.POST["payable"])
            wall = Wallet.objects.get(user=request.user)
            request.session["fbalance"] = wall.balance - (balance * rate)
            wall.save()
            request.session["amount_charged"] = payable
            total_amount = request.session["amount_charged"]

        amtINR = round((float(total_amount) * rate), 2)

        print("pitamtch:", total_amount, type(total_amount))


        if request.session["indent_context"]:
           
            client = razorpay.Client(auth=(keyID, keySecret))
            if "orderId" in request.session["indent_context"]:
                # client = razorpay.Client(auth=(keyID, keySecret))
                request.session["payment_order_id"] = request.session["indent_context"]["orderId"]
                request.session["central_payment_id"] = request.session["indent_context"]["central_pay_id"]
                centralPayment_instance = CentralPayment.objects.get(id=request.session["indent_context"]["central_pay_id"])
                pid = centralPayment_instance.order_id
                amtINR = centralPayment_instance.amount_charged * rate

                context = {
                    "pk": keyID,
                    "amtINR": amtINR,
                    "pid": pid,
                    "amount": centralPayment_instance.amount_charged,
                }

                return render(
                    request,
                    "Pitchdeck/checkoutN_RazorPay.html",
                    context
                )
            
            elif "client_secret" in request.session["indent_context"]:

                request.session["payment_order_id"] = request.session["indent_context"]["client_secret"]  # save central payment details in your database
                request.session["central_payment_id"] = request.session["indent_context"]["central_pay_id"]

                amtINR = centralPayment_instance.amount_charged * rate
                context = {
                    "pk": STRIPE_PUB_KEY,
                    "total_amount": centralPayment_instance.amount_charged,
                    "secret_key":request.session["indent_context"]["client_secret"],
                    "amtINR": amtINR,
                    "STRIPE_PUBLISHABLE_KEY": STRIPE_PUB_KEY,

                }
                return render(request, "Pitchdeck/checkoutNnew.html", context)
            elif "corporate" in request.session["indent_context"]:
                
                script_id=request.session["script_id"]
                numPages = request.session["numPages"]
                actionline_language = request.session["actionline_language"]
                actionline_script_language = request.session["actionline_script_language"]
                dialogues_language = request.session["dialogues_language"]
                dialogues_script_language =  request.session["dialogues_script_language"]
            
                script_title = request.session["script_title"]
                script_file_path = request.session["script_file_path"]

                request.session["payment_order_id"] = "corporate profile"
                request.session["central_payment_id"] = "corporate profile"

                return render(request, "Pitchdeck/PitchnarratedVideos.html", context)


            
            else:
                # return render(request, "payments/failed.html")
                to_email = [request.user.email]
                email_code = 'TN4'
                sendmail(to_email=to_email , email_code=email_code )
                return render(request, "payments/failed.html")
       
    return render(request, "Pitchdeck/Pitchnarrate1.html")


@login_required(login_url="/")
def narrationcard(request):
    if request.method == "POST":
        # print("thisispayment_intent_id::", request.POST["payment_intent_id"])
        # payment_intent_id = request.POST["payment_intent_id"]
        # payment_method_id = request.POST["payment_method_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={}
            # context = {
            #     "payment_intent_secret": pi.client_secret,
            #     "id": pi.id,
            #     "pk": STRIPE_PUB_KEY,
            # }
        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,
        }
        return render(request, "Pitchdeck/3dsecuredNarration.html", context)
        # return render(request, "payments/paymentdone.html")
    else:
        return render(request, "Pitchdeck/Pitchnarrate1.html")


@login_required(login_url="/")
def paymentDoneN_RazorPay(request):
    # keyID = request.session["keyID"]
    # keySecret = request.session["keySecret"]
    # razorpay_order_id = request.POST["razorpay_order_id"]
    # print(razorpay_order_id)
    if request.method == 'POST':
        
        callback_payment = callback(request.POST, request)
        
        if callback_payment['payment_status'] == 'success':

            # print("manoj#45454")
            # print(request.POST["razorpay_order_id"])
            # 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:
            #     user = request.user
            #     email = user.email
            #     context = {
            #         "serviceName": "Pitch Creation",
            #         "name": email,
            #     }
                # message = render_to_string("narration/MR24.html", context)
                # text_content = strip_tags(message)
                # # create the email, and attach the HTML version as well.
                # msg = EmailMultiAlternatives(
                #     "Something really went wrong",
                #     text_content,
                #     settings.EMAIL_HOST_USER,
                #     [email],
                # )
                # msg.attach_alternative(message, "text/html")
                # msg.send()
                # to_email = [request.user.email]
                # email_code = 'TN4'
                # sendmail(to_email=to_email , email_code=email_code )

                # return render(request, "payments/failed.html")
            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

            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()
            else:
                pass
            
            total_amount = round(float((request.session["total_amount"]) * rate), 2)
            # paydetail = client.payment.fetch(razorpay_payment_id)
            # user_id = request.user
            # payment_id = razorpay_payment_id
            amount_charged = round(float((request.session["amount_charged"]) * rate), 2)
            discount = round((total_amount - amount_charged), 2)
            # gateway_fee = paydetail["fee"] / 100  # to convert from paise to rupees
            # currency = paydetail["currency"]
            # pay_method = paydetail["method"]
            # services_used = "Pitchdeck"
            # payment_status = "Success"
            # payment_gateway = "RazorPay"
            # number_of_pages = request.session["numPages"]
            # script_in = MNFScriptDatabase.objects.get(
            #     script_id=request.session["script_id"]
            # )
            # with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #     file01.write('Detailed complete'+"\n")

            # PaymentData.objects.create(
            #     user_id=user_id,
            #     payment_id=payment_id,
            #     services_used=services_used,
            #     discount=discount,
            #     number_of_pages=number_of_pages,
            #     total_amount=total_amount,
            #     amount_charged=amount_charged,
            #     gateway_fee=gateway_fee,
            #     script_info=script_in,
            #     currency=currency,
            #     pay_method=pay_method,
            #     payment_status=payment_status,
            #     payment_gateway=payment_gateway,
            # )
            # with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #     file01.write('PaymentData created'+"\n")
            # #------------------------------------neha
            # # update priviledged user razorpay
            # if request.session["UpdatePriviledgedUser"]:

            #     with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #         file01.write('Reached Condition request.session["UpdatePriviledgedUser"]'+"\n")

            #     print("manoj#re343")

            #     if privilegedUser1.objects.filter(user=request.user).exists():
            #         with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #             file01.write('Privilegeduser hai'+"\n")

            #         obj = privilegedUser1.objects.get(user=request.user)
            #     else:
            #         with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #             file01.write('Privilegeduser Nahi hai'+"\n")
            #         obj = privilegedUser1()
            #         obj.user = request.user
            #         lasto = privilegedUser1.objects.last()
            #         obj.id = int(lasto.id) + 1
            #         obj.memberType = "normal"
            #         obj.is_active = "yes"
            #         obj.months = 1
            #         obj.chargeId = razorpay_order_id
            #         obj.transactionId = razorpay_payment_id
            #         obj.razorpaySign = razorpay_signature
            #         obj.status = payment_status
            #         obj.amount_captured = total_amount
            #         with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #             file01.write('Privilegeduser object '+str(obj)+"\n")
            #         obj.save()

            #     with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            #         file01.write('Privilegeduser save hoa'+"\n")

            #     print("manoj*9998ha")
            #     del request.session["UpdatePriviledgedUser"]
                    
            # manoj
            s=PitchVector()
            
                                

            # s.transaction_id = callback_payment["payment_id"] # save central payment details in your database
            # s.isPaid = True # save central payment details in your database
            # s.save()
            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"]
            s.save()
            print("manoj454545454545")
            print(amount_charged)
            print(request.user.email)
            current_site = get_current_site(request)
            context2 = {
                "domain": current_site.domain,
                "serviceName": "Pitch Creation",
                "name": request.user.email,
                "amount": amount_charged,
                "razorpay": True
            }

            
            # message = render_to_string("narration/MR25.html", context2)
            # text_content = strip_tags(message)
            # msg = EmailMultiAlternatives(
            #     "Every penny of yours is valuable",
            #     text_content,
            #     settings.EMAIL_HOST_USER,
            #     [request.user.email],
            # )
            # msg.attach_alternative(message, "text/html")
            # msg.send()
            to_email = [request.user.email]
            email_code = 'TN3'
            sendmail(to_email=to_email , email_code=email_code )
            
            # manoj end
            context = {
                "script_id": request.session["script_id"],
                "script_file_path": request.session["script_file_path"],
                "restrict_to_five": "no",
            }
            
            return render(request, "Pitchdeck/PitchnarratedVideos.html", context)
        # except:
        else:
            print("manoj1450")
            print(traceback.format_exc())

            with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
                file01.write('Privilegeduser in exeception aya hai'+str(ex)+"\n")

            # subject = "Something really went wrong"
            # from_email = settings.EMAIL_HOST_USER
            # to = request.user.email
            # context_2 = {
            #     "Name": request.user.email,
            #     "service_name": "Pitch Creation",
            # }
            # mnfnsendemail(
            #     to, subject, "payment/templates/payments/MR24.html", context_2, from_email
            # )
            to_email = [request.user.email]
            email_code = 'TN4'
            sendmail(to_email=to_email , email_code=email_code )
            return render(request, "payments/failed.html")
    else:
        return HttpResponse("You don't have an access to use this.")


@login_required(login_url="/")
def paymentDoneN(request):
    if request.method == "GET":
        script_id = request.session["script_id"]
        num_pages = request.session["numPages"]
        actionline_language = request.session["actionline_language"]
        actionline_script_language = request.session["actionline_script_language"]
        dialogues_language = request.session["dialogues_language"]
        dialogues_script_language = request.session["dialogues_script_language"]
        document_name = request.session["document_name"]
        script_title = request.session["script_title"]
        total_amount= request.session["total_amount"]
        amount_charged = request.session["amount_charged"]
        discount = request.session["discount"]
        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)
                walls = Wallet.objects.get(user=request.user)
                walls.balance = request.session["fbalance"]
                walls.save()
            else:
                pass
        s = MNFScriptDatabase()
        p=PitchVector()
        s.user_id = request.user
        s.script_id = script_id
        s.script_title = script_title
        # s.script_file_path = script_file_path
        p.payment_order_id = request.session["payment_order_id"]  # save central payment details in your database
        p.central_payment_id = request.session["central_payment_id"]
        # s.payment_intent_id = payment_intent_id
    
        s.save()
        context = {
                "script_id": script_id,
                "script_title": script_title,
                "num_pages":num_pages,
        
                "actionline_language":actionline_language,
                "actionline_script_language":actionline_script_language,
                "dialogues_language":dialogues_language,
                "dialogues_script_language":dialogues_script_language,
                "total_amount": total_amount,
                "amount_charged":amount_charged,
                "discount":discount,
                
            }
    
        
        to_email = [request.user.email]
        email_code = 'TN3'
        sendmail(to_email=to_email , email_code=email_code )
        # message = render_to_string("narration/MR25.html", context2)
        # text_content = strip_tags(message)
        # msg = EmailMultiAlternatives(
        #     "Every penny of yours is valuable",
        #     text_content,
        #     settings.EMAIL_HOST_USER,
        #     [request.user.email],
        # )
        # msg.attach_alternative(message, "text/html")
        # msg.send()
        # manoj end
        
        return render(request, "Pitchdeck/PitchnarratedVideos.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": "Pitch Creation",
            # }
            # mnfnsendemail(
            #     to,
            #     subject,
            #     "payment/templates/payments/MR24.html",
            #     context_2,
            #     from_email,
            # )
            to_email = [request.user.email]
            email_code = 'TN4'
            context_2 = {
                "Name": to_email,
                "service_name": "Pitch Creation",
            }
            sendmail(to_email=to_email , email_code=email_code )
            return render(request, "payments/failed.html")

@login_required(login_url="/")
def my_narrations(request):
    # obj = MNFScriptDatabase.objects.filter(user_id=request.user).order_by("-date_at").exclude(connecting_id="")
    if UserCredentialsForBlockchain.objects.filter(user=request.user).exists():
        blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user)
        videos_path = []
        pq= 0
        projectIds = getUserprojectIds(blockchain_obj.user_id)
        for i in range(len(projectIds) - 1, -1, -1):
            print(projectIds[i])
            key1= "MyNextFilm"
            privatekey = blockchain_obj.privateKey
            user_id =blockchain_obj.user_id
            Project= projectIds[i]
            private_Key = decryptionOfPrivate(privatekey)
            status,getData = getNarrationData(private_Key.decode('utf-8'),user_id,Project)
            if status == True:
                data1 = getData[1]
                converted_dict = eval(data1)
                if converted_dict.get('MNFScriptDatabase1', {}).get('one_pager') == "True":
                    hash = converted_dict["MNFScriptDatabase1"]["Onepager_Script_fileHash"]    
                    output_file_path = converted_dict["MNFScriptDatabase1"]["onepager_pdf_path"]
                    # Save the video to a local file with a progress bar
                    download_file_System(hash,output_file_path)

                if converted_dict.get('MNFScriptDatabase1', {}).get('elevator_pitch') == "True":
                    hash = converted_dict["MNFScriptDatabase1"]["ElevatorPitch_Script_fileHash"]    
                    output_file_path = converted_dict["MNFScriptDatabase1"]["elevator_pitch_video_path"]
                    download_file_System(hash,output_file_path)


                if converted_dict.get('MNFScriptDatabase1', {}).get('linebyline') == "True":
                    hash = converted_dict["MNFScriptDatabase1"]["narration_Script_fileHash"]    
                    output_file_path = converted_dict["MNFScriptDatabase1"]["line_by_line_narration_video_path"]
                    download_file_System(hash,output_file_path)


                if converted_dict.get('MNFScriptDatabase1', {}).get('character_intro') == "True":
                    hash = converted_dict["MNFScriptDatabase1"]["Characterfile_Script_fileHash"]    
                    output_file_path = converted_dict["MNFScriptDatabase1"]["character_intro_video_path"]
                    download_file_System(hash,output_file_path)


                    # Save the video to a local file with a progress bar
                if converted_dict.get('MNFScriptDatabase1', {}).get('screenplay_analysis') == "True":
                    hash = converted_dict["MNFScriptDatabase1"]["Screenplayh_Script_fileHash"]    
                    output_file_path = converted_dict["MNFScriptDatabase1"]["screenplay_analysis_video_path"]
                    # Save the video to a local file with a progress bar
                    download_file_System(hash,output_file_path)

                # if converted_dict.get('MNFScriptDatabase1', {}).get('characterwise_narration') == "True":
                #     hash = converted_dict["MNFScriptDatabase1"]["Onepager_Script_fileHash"]    
                #     output_file_path = converted_dict["MNFScriptDatabase1"]["onepager_pdf_path"]
                #     download_file_System(hash,output_file_path)

                print(converted_dict["MNFScriptDatabase1"])
                videos_path.append(converted_dict["MNFScriptDatabase1"])
                converted_dict = converted_dict["MNFScriptDatabase1"]
                pq += 1
            else:
                pass
            
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check1.txt","a") as file01:
            file01.write("Blockchainfile: " + str(videos_path) + "\n")

        return render(
            request, "Pitchdeck/bundle_videos.html", {
                "videos_path": videos_path, "pq": pq }
        ) 
    else:
        obj = MNFScriptDatabase.objects.filter(
        user_id=request.user).order_by("-date_at")

    videos_path = obj
    print("videos_path-??", videos_path)
    pq = 0
    for i in obj:

        if i.elevator_pitch_video_path or i.onepager_pdf_path or i.screenplay_analysis_video_path or i.character_intro_video_path or i.line_by_line_narration_video_path or i.selected_characters or i.characterwise_video_path or i.characterwise_narration:
            pq += 1


    return render(
        request, "Pitchdeck/bundle_videos.html", {
            "videos_path": videos_path, "pq": pq}
    )  # many to many field or foreign key (characterwise_intro)

# pravesh-->


@login_required(login_url="/")
def view_demo_narrations(request, lang):
    selected_option = lang
    if selected_option is not None:
        if selected_option in ["en", "hi", "mr", "fr"]:
            context = {
                "data": demo_files[selected_option],
                "demolist": list(demo_files[selected_option])

            }
        return render(request, "Pitchdeck/viewDemoSampleScript.html", context)
        
    context = {
        "data": demo_files["en"],
        "demolist": list(demo_files["en"])

    }
    t = loader.get_template('Pitchdeck/viewDemoSampleScript.html')
    rendered_html = t.render({"context": context}, request)
    # Extract HTML string using StringIO
    html_string = StringIO()
    html_string.write(rendered_html)
    html_string.seek(0)

    # with open('/home/user/mnf/project/MNF/Pitchdeck/yameen_html.html', 'w') as file:
    #     file.write(html_string.read())

    # Process HTML string using BeautifulSoup
    soup = BeautifulSoup(html_string, 'html.parser')

    # text_elements = [element for element in soup.find_all(text=is_user_visible)]
    # for i, text in enumerate(text_elements):
    #     print("text", text)
    #     trans_text = translate_comparison(text,"en", "it")
    #     text_elements[i].replace_with(trans_text) 

    modified_html = soup.prettify()
    return HttpResponse(modified_html, content_type='text/html')
    # return render(request, 'Pitchdeck/viewDemoSampleScript.html', context)
# def narration(request):
# sample=MNFScriptDatabase.objects.all()
# title_list = []
# path_list = []
# for i in sample:
#     title_list.append(i.script_title)
#     path_list.append(str(i.script_file_path.split('scripts/')[1]))

# return render(request, 'narration/narration.html',)


def delete_script(request, id):
    MNFScriptDatabase.objects.get(id=id).delete()
    return HttpResponseRedirect("/narration/narrations")


def demo(request):
    return render(request, "narration/demo.html", {})


def Onepagerdemo(request):
    return render(request, "Pitchdeck/Onepagerdemo.html", {})


def elevatorpitchdemo(request):
    return render(request, "Pitchdeck/elevatorpitchdemo.html", {})


def screenplaydemo(request):
    return render(request, "Pitchdeck/screenplaydemo.html", {})


def linebylinedemo(request):
    return render(request, "Pitchdeck/linebylinedemo.html", {})


def Characterwisedemo(request):
    return render(request, "Pitchdeck/Characterwisedemo.html", {})


def characterintrodemo(request):
    return render(request, "Pitchdeck/characterintrodemo.html", {})


def narratescriptdemo(request):
    return render(request, "Pitchdeck/narratescriptdemo.html", {})


def narrationroomdemo(request):
    return render(request, "Pitchdeck/narrationroomdemo.html", {})


def char_function(script_id,character):
    obj = Char_audio_class.char_audio(script_id, flag=True)
    audio_data = obj.char_audioTTS()
    obj_i =TestingC.Char_video_class(script_id)
    characterdata = obj_i.char_data_written()
    obj_i.new_logo()
    for i in characterdata:
        obj_i.first_intro_page(i)
    objAV = audio_video.audio_video(audio_data,script_id,characterdata,True)
    objAV.make_character_introduction(flag=True)
    path = objAV.make_dialogue_clip(character)
    return path

def uploadData(request):
    if request.method == "POST":
        # if UserCredentialsForBlockchain.objects.filter(user=request.user).exists():
        #     blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user)
        #     print("blockchain_obj.privateKe",blockchain_obj.privateKey)

        #     url = "http://127.0.0.1:8005/Write/onlyOwner"
        #     uploadFiles = "http://127.0.0.1:5000/upload"
        #     data ={
        #     "file": request.FILES['uploadfile'] 
        #     }
            
        #     # request.FILES.get
        #     response =requests.post(uploadFiles,files=data)

        #     hash = response.json()["hash"]
        #     Module= "narration"
        #     servicesName = "PitchdeckCreation"
        #     print(hash)
        #     data1 ={
        #     "user_id":blockchain_obj.user_id,
        #     "Module": Module,
        #     "Services": servicesName,
        #     "Data": request.POST.get('textdata') ,
        #     "File":[hash],
        #     "userPrivateKey":blockchain_obj.privateKey
        #     }
        #     response =requests.post(url,json=data1)

        #     # video_url = decryptionOfUrl(hash)
        #     # response = requests.get(video_url, stream=True)
        MongoDBUrl = "mongodb+srv://mynextfilm:mnf123@cluster0.ojasb.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"
        client = MongoClient(MongoDBUrl)
        db = client.DB
        users = db["auth_user"].find()
        for user in users:
            if "id" in user:
                print(user["id"])
                if UserCredentialsForBlockchain.objects.filter(user_id=user["id"]).exists():
                    print("user is alrady exists")
                else:
                    accountDetail = walletCreation()
                    binaryToHex = accountDetail[1]
                    blockchain_obj = UserCredentialsForBlockchain()
                    blockchain_obj.user_id = user["id"]
                    blockchain_obj.privateKey = binaryToHex
                    blockchain_obj.publicKey = accountDetail[0]
                    blockchain_obj.save()

        return render(request,"Pitchdeck/getPostdata.html")


    return render(request,"Pitchdeck/getPostdata.html")

def getData(request):
    
    if UserCredentialsForBlockchain.objects.filter(user=request.user).exists():
        blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user)
        print("blockchain_obj.privateKe",blockchain_obj.privateKey)
        Module= "narration"
        servicesName = "PitchdeckCreation"
        data ={
            "private_key": blockchain_obj.privateKey,
            "user_id": blockchain_obj.user_id,
            "Module": Module,
            "Services": servicesName,
            "Project": 0,
            }
        
        response =requests.get(GET_OWNER,params=data)
        getData = response.json()
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            file01.write("form data>>>>>>>>>>2: " + str(getData) + "\n")

        # data = getData["getData"]
        data1 = getData.get("getData")[1]
        hash = getData.get("getData")[2][0]

        _url = decryptionOfUrl(hash)
        with open("/home/user/mnf/project/MNF/Pitchdeck/error_check.txt","a") as file01:
            file01.write("form data>>>>>>>>>>1: " + str(data1 ) + "\n")
            
        response11 = requests.get(_url, stream=True)
        # Check if the request was successful
        if response11.status_code == 200:
            # Get the total size of the video in bytes
            total_size = int(response11.headers.get('content-length', 0))

            # Replace 'video.mp4' with the desired file path and name
            output_file_path = '/home/user/mnf/project/MNF/media/Blockchaainscripts/storage.pdf'

            # Save the video to a local file with a progress bar
            with open(output_file_path, 'wb') as video_file, tqdm(
                desc=output_file_path,
                total=total_size,
                unit='B',
                unit_scale=True,
                unit_divisor=1024,
            ) as progress_bar:
                for data in response11.iter_content(chunk_size=1024):
                    video_file.write(data)
                    progress_bar.update(len(data))
            print("Video saved successfully.")
        else:
            print("Failed to download the video. Status code:", response11.status_code)
        url ="http://115.245.192.138/media/Blockchaainscripts/storage.docx"
        return render(request,"Pitchdeck/getPostdata.html", {"url": url, "data" :data1})




    
# from tqdm import tqdm
# def test(request):
#     data = Pitch_creation()
#     result = []
#     progress = 0
#     total = len(data)
#     for item in tqdm(data, total=total):
#         result.append(process_item(item))
#         progress = int(100 * len(result) / total)
#         tqdm.update(progress)

#     return render(request, "Pitchdeck/testfile.html",{'result': result, 'progress': progress})


# def get_samescript_data(user, script_name):
#     mnf_script = MNFScriptDatabase.objects.filter(user_id=user, script_name=script_name).first()


#     if mnf_script.exists():
        #  for i in mnf:
#         if i.elevator_pitch_video_path or i.onepager_pdf_path or i.screenplay_analysis_video_path or i.character_intro_video_path or i.line_by_line_narration_video_path or i.selected_characters or i.characterwise_video_path or i.characterwise_narration:
#             pitchvector_data = PitchVector.objects.filter(user_id=user, id=mnf_script.id).first()
#             return pitchvector_data

#     return None