198 lines
5.3 KiB
Python
198 lines
5.3 KiB
Python
|
from datetime import datetime
|
||
|
from django.core.files.base import ContentFile
|
||
|
|
||
|
from pandas import DataFrame
|
||
|
|
||
|
import page_script.models as ps_models
|
||
|
from mnfapp.models import SampleScript,PitchVector,MNFScriptDatabase
|
||
|
|
||
|
def script_id_generator():
|
||
|
now = datetime.now()
|
||
|
rightNow = str(now)
|
||
|
dash_splited = rightNow.split("-")
|
||
|
str1 = ""
|
||
|
for i in dash_splited:
|
||
|
str1 += str(i)
|
||
|
dash_splited1 = str1.split(" ")
|
||
|
str2 = ""
|
||
|
for i in dash_splited1:
|
||
|
str2 += str(i)
|
||
|
dash_splited2 = str2.split(":")
|
||
|
str3 = ""
|
||
|
for i in dash_splited2:
|
||
|
str3 += str(i)
|
||
|
dash_splited3 = str3.split(".")
|
||
|
str4 = dash_splited3[0]
|
||
|
return str4
|
||
|
|
||
|
|
||
|
def name_exists(user, name_script) -> bool:
|
||
|
name_script = name_script.lower()
|
||
|
scripts = ps_models.script_version.objects.filter(user_id=user)
|
||
|
for i in scripts:
|
||
|
if i.script_name.lower() == name_script:
|
||
|
return True
|
||
|
return False
|
||
|
|
||
|
|
||
|
def script_upload(file, user, flag=0) -> dict:
|
||
|
|
||
|
script_name = str(file.name).rsplit(".", 1)[0]
|
||
|
|
||
|
if name_exists(user, script_name):
|
||
|
obj = ps_models.script_version.objects.filter(user_id=user).first()
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
# if name_exists(user, script_name):
|
||
|
# raise FileExistsError("A script with this name already exists")
|
||
|
|
||
|
|
||
|
x = ps_models.MNFScriptDatabase_2()
|
||
|
|
||
|
x.user_id = user
|
||
|
x.script_id = "scr_" + script_id_generator()
|
||
|
x.generated_from = "script_editor_W"
|
||
|
x.script_file = file
|
||
|
x.script_name = script_name
|
||
|
|
||
|
y = ps_models.script_version()
|
||
|
y.script_name = script_name
|
||
|
y.user_id = user
|
||
|
y.versions_count = 1
|
||
|
x.version_no = 1
|
||
|
x.save()
|
||
|
y.save()
|
||
|
|
||
|
y.versions.add(x)
|
||
|
y.save()
|
||
|
|
||
|
return {"script_id": x.script_id}
|
||
|
|
||
|
|
||
|
def override_script(audited_csv: DataFrame, script_id: str) -> None:
|
||
|
|
||
|
f_path, f_name = ps_models.MNFScriptDatabase_2.get_file_path(script_id)
|
||
|
|
||
|
f_name = f_name.rsplit(".", 1)[0] + "_audited.csv"
|
||
|
|
||
|
audited_csv.to_csv(
|
||
|
f"{f_path}{f_name}",
|
||
|
index=False,
|
||
|
)
|
||
|
Time = datetime.now()
|
||
|
ps_models.MNFScriptDatabase_2.objects.filter(script_id=str(script_id)).update(
|
||
|
last_edited_on=Time
|
||
|
)
|
||
|
|
||
|
import subprocess
|
||
|
|
||
|
from PyPDF2 import PdfFileReader
|
||
|
|
||
|
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
|
||
|
|
||
|
from MNF.settings import BasePath
|
||
|
basePath = BasePath()
|
||
|
|
||
|
|
||
|
from conversion.translation.detection import getInputs
|
||
|
def create_new_version(file, user,sampleScript) -> None:
|
||
|
print("version create func")
|
||
|
x = ps_models.MNFScriptDatabase_2()
|
||
|
x.user_id = user
|
||
|
|
||
|
x.script_id = "scr_" + script_id_generator()
|
||
|
x.script_file = file
|
||
|
script_name = str(x.script_file.name).rsplit(".", 1)[0]
|
||
|
x.script_name = script_name
|
||
|
y = ps_models.script_version.objects.get(script_name=str(x.script_name))
|
||
|
print(y)
|
||
|
new_version_number = y.versions_count + 1
|
||
|
y.versions_count = new_version_number
|
||
|
x.version_no = int(new_version_number)
|
||
|
x.is_sample_script = True
|
||
|
print("create new version0 ")
|
||
|
x.save()
|
||
|
print("create new version1 ")
|
||
|
if sampleScript == "true":
|
||
|
|
||
|
z = SampleScript()
|
||
|
|
||
|
z.user_id = user
|
||
|
z.script_id = str(x.script_id)
|
||
|
z.script_title = script_name + "-" + str(x.version_no)
|
||
|
z.script_file_path = str(x.script_file)
|
||
|
folders = "/"
|
||
|
for i in ((str(x.script_file)).split("/"))[:-1]:
|
||
|
folders = folders + str(i) + "/"
|
||
|
numPages = countPages(
|
||
|
str(basePath) + "/media/" + str(x.script_file),
|
||
|
str(x.script_file)[len(folders) - 1 : -4] + "pdf",
|
||
|
)
|
||
|
z.script_file_path_pdf = "/media/PdfFiles/" + str(x.script_file)[len(folders) - 1 : -4] + "pdf"
|
||
|
z.status = "P"
|
||
|
|
||
|
formInput = getInputs(str(basePath) + str("/media/") + str(x.script_file))
|
||
|
z.dial_src_script = formInput[2]
|
||
|
z.dial_src_language = formInput[1]
|
||
|
z.nondial_src_language = formInput[0]
|
||
|
z.nondial_src_script = formInput[3]
|
||
|
z.option3 = formInput[4]
|
||
|
z.option4 = formInput[5]
|
||
|
z.option5 = formInput[6]
|
||
|
z.option6 = formInput[7]
|
||
|
z.author_name = "a"
|
||
|
z.actionline_language = "b"
|
||
|
z.actionline_script_language = "c"
|
||
|
z.dialogues_language = "d"
|
||
|
z.dialogues_script_language = "e"
|
||
|
z.languages = "f"
|
||
|
z.sample_language = "g"
|
||
|
print("create new version2 ")
|
||
|
|
||
|
z.save()
|
||
|
#print(a)
|
||
|
y.versions.add(x)
|
||
|
y.save()
|
||
|
|
||
|
response = {"script_id": x.script_id}
|
||
|
|
||
|
return response
|
||
|
|
||
|
|
||
|
def get_scriptname(script_id) -> dict:
|
||
|
name = ps_models.MNFScriptDatabase_2.objects.get(
|
||
|
script_id=str(script_id)).script_name
|
||
|
return name
|
||
|
|
||
|
|
||
|
def simple_upload(csv: DataFrame, file_name: str, user) -> str:
|
||
|
|
||
|
file = ContentFile(
|
||
|
csv.to_csv(index=False, path_or_buf=None),
|
||
|
file_name,
|
||
|
)
|
||
|
|
||
|
return script_upload(file, user)
|