latest changes 03052024

This commit is contained in:
Ubuntu 2024-05-03 05:53:28 +00:00
parent 9a601c74b8
commit 6bb488f9b8
5 changed files with 507 additions and 10 deletions

View File

@ -2712,9 +2712,9 @@ class NeutralAudit:
return character_scripts_dict return character_scripts_dict
def audit_in_background(self): def audit_in_background(self):
# # commenting os.fork to make code run in foreground
if os.fork() != 0: # if os.fork() != 0:
return # return
print("Running in background") print("Running in background")
end_time = datetime.datetime.now() end_time = datetime.datetime.now()

View File

@ -11,10 +11,70 @@
<title>Document</title> <title>Document</title>
<link rel="stylesheet" href="../../../static/Audit/css/Audit-output.css"> <link rel="stylesheet" href="../../../static/Audit/css/Audit-output.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<style>
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext {
visibility: visible;
}
#feedback-thanks-container {
display: block;
background-color: #252525;
opacity: .75;
height: 100vh;
width: 100%;
background-color: #7f7f7f;
position: absolute;
width: 100%;
height: 100%;
z-index: 999;
top: 8%;
left: 0%;
}
#feedback-thanks {
border-radius: 8px;
position: relative;
background-color: #FAFAFA;
background-color: #fafafa;
position: absolute;
width: 375px;
height: auto;
top: 50%;
border-radius: 8px;
left: 50%;
transform: translate(-50%, -50%);
z-index: 99;
}
#closeThanksPopup {
position: absolute;
top: -10px;
right: -10px;
background: #EE3C4D;
color: #FAFAFA;
border-radius: 50%;
height: 30px;
width: 30px;
scale: 0.9;
border: transparent;
text-align: center;
}
.f-hats-image {
width: 375.92px;
height: 360.16px;
}
</style>
</head> </head>
<body> <body>
<div id="feedback-thanks-container">
<div id="feedback-thanks">
<button type="button" class="closebtn" id="closeThanksPopup" onclick="closeFeedback();">X</button>
<img src="/static/media/feedback/hats-off.png" alt="hats-off" class="f-hats-image">
</div>
</div>
<div class="modal" tabindex="-1" id="delete" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal" tabindex="-1" id="delete" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" id="d-delete"> <div class="modal-dialog" id="d-delete">
<div class="modal-content"> <div class="modal-content">
@ -596,6 +656,9 @@
fade_elements[0].classList.remove("modal-backdrop"); fade_elements[0].classList.remove("modal-backdrop");
window.location.reload(); window.location.reload();
} }
function closeFeedback(){
document.getElementById('feedback-thanks-container').style.display="none";
}
</script> </script>
</body> </body>

View File

@ -4,6 +4,8 @@ from django.views.generic import TemplateView
urlpatterns = [ urlpatterns = [
path("home", views.AuditHomeView.as_view(), name="upload_audit"), path("home", views.AuditHomeView.as_view(), name="upload_audit"),
path("counter_run", views.Get_Counter.as_view(), name="counter_run"),
path("fetch_in_counter", views.Fetch_in_Counter.as_view(), name="fetch_in_counter"),
path("facade", views.AuditFacadeView.as_view(), name="upload_audit_facade"), path("facade", views.AuditFacadeView.as_view(), name="upload_audit_facade"),
path("facade/status_update", views.AuditStatusUpdate.as_view(), name="audit_facade_status_update"), path("facade/status_update", views.AuditStatusUpdate.as_view(), name="audit_facade_status_update"),
path("facade/file_update", views.AuditedFileUpdate.as_view(), name="audit_facade_file_update"), path("facade/file_update", views.AuditedFileUpdate.as_view(), name="audit_facade_file_update"),

View File

@ -5,8 +5,11 @@ from rest_framework_simplejwt.authentication import JWTAuthentication
import tempfile import tempfile
import requests import requests
import pandas as pd import pandas as pd
import boto3
from io import BytesIO from io import BytesIO
from django.contrib.auth.models import User
import json import json
import shutil
from users.models import UserCredentialsForBlockchain from users.models import UserCredentialsForBlockchain
from Blockchain2.block_user_info import * from Blockchain2.block_user_info import *
from Blockchain2.decryption import decryptionOfPrivate, decryptionOfUrl, download_file_System,decryptionOflocalUrl,hash_decrypation from Blockchain2.decryption import decryptionOfPrivate, decryptionOfUrl, download_file_System,decryptionOflocalUrl,hash_decrypation
@ -51,6 +54,8 @@ from utils.filesystem import get_file,get_file_path, get_script_data
# from utils.utilities import send_email_to_user # from utils.utilities import send_email_to_user
# from narration.vectorcode.code import vector_generation # from narration.vectorcode.code import vector_generation
from auto_email.views import sendmail from auto_email.views import sendmail
from MNF import settings
from django.contrib.auth.models import User
# from mnfapp.views import update_juggernaut # from mnfapp.views import update_juggernaut
# from mnfapp.views import check_juggernaut # from mnfapp.views import check_juggernaut
# from Pitchdeck.views import multilingual_render # from Pitchdeck.views import multilingual_render
@ -193,6 +198,404 @@ class AuditFacadeView(APIView):
# return HttpResponseBadRequest(render(request, "audit/audit.html", {"form": form,"errors": form.errors})) # return HttpResponseBadRequest(render(request, "audit/audit.html", {"form": form,"errors": form.errors}))
class Get_Counter(APIView):
authentication_classes = [BasicAuthentication,SessionAuthentication]
permission_classes = [IsAuthenticated]
def get(self, request):
return render(request, "audit/audit_AWS_home.html")
def post(self, request):
# session = boto3.Session(
# aws_access_key_id='AKIAQVLBBGCB45RMLKVW', # replace with your key
# aws_secret_access_key='ZWc6KOc5LuBLuCEBDDfQTor+Q7rp3fFH74gVt+AA', # replace with your key
# )
# sqs = session.resource('sqs', region_name='ap-south-1')
# queue = sqs.get_queue_by_name(QueueName="mnfqueue")
user = str(request.user)
screenplay_name = request.data.get('screenplay_name')
author = request.data.get('author_name')
language = request.data.get('language')
script_file = request.data.get('script_file')
script_ext = script_file.name.split(".")[-1]
script_file_name = screenplay_name + "." + script_ext
media_path = os.path.join(settings.MEDIA_ROOT,"audit_counter_files", script_file_name)
with open(media_path, 'wb') as destination:
for chunk in script_file.chunks():
destination.write(chunk)
# object_name = "INPUT/" + script_file_name
# filee = media_path
# bucket = "conversion-kitchen"
# s3_client = boto3.client('s3',
# aws_access_key_id="AKIAQVLBBGCB45RMLKVW",
# aws_secret_access_key="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",
# region_name="ap-south-1"
# )
# try:
# response = s3_client.upload_file(filee, bucket, object_name)
# print(response)
# except Exception as e:
# print("Error is", e)
# s3_url = f"https://{bucket}.s3.ap-south-1.amazonaws.com/{object_name}"
audit_parameters = {
"service_type" : "audit",
"user":user,
# "s3-file-path": s3_url,
"s3-file-path": media_path,
"screenplay_name": screenplay_name,
"author": author,
"language": language,
"script_ext": script_ext,
"script_file_name": script_file_name
}
print("################ AUDIT PARAMETER", audit_parameters)
# response = queue.send_message(
# MessageBody=json.dumps(audit_parameters),)
return JsonResponse({"response": audit_parameters})
# return redirect("new_audited_page")
class Fetch_in_Counter(APIView):
authentication_classes = [BasicAuthentication,SessionAuthentication]
permission_classes = [IsAuthenticated]
def post(self, request):
audit_parameters = request.data
print(audit_parameters)
# time.sleep(7)
user = audit_parameters.get("user")
s3_url = audit_parameters.get("s3-file-path")
screenplay_name = audit_parameters.get("screenplay_name")
author = audit_parameters.get("author")
language = audit_parameters.get("language")
script_ext = audit_parameters.get("script_ext")
script_file_name = audit_parameters.get("script_file_name")
language = "en" # main language
if script_ext == "docx":
pass
elif script_ext == "pdf":
pass
elif script_ext == "fdx":
estimatedtime = None
else: #txt
pass
with open(s3_url, 'rb') as file:
file_content = file.read()
file = ContentFile(
file_content,
script_file_name,
)
# user = User.objects.get(username=user)
# user_id = user.id
result = filesystem.new_screenplay_without_audit_in_background(
request.user,
author,
screenplay_name,
file,
"script-original",
language,
)
script_id = result.get("script", {}).get("id")
file_to_original = File.objects.get(
script=script_id,
type="script-original"
)
try:
update_audit_status(script_id, States.STARTED)
except:
update_audit_status(script_id, States.FAILURE)
try:
# audit_in_background(script_id)
audit = NeutralAudit(script_id)
audit.audit_in_background()
ScriptAuditModel.objects.update_or_create(
script = Script.objects.get(
id = script_id
),
defaults={"status" : "SUCCESS"}
)
#script_id will be present here as well
# blockchain code to upload files,
#1. csv
#2. Audit Orginal
#3. Audit Report
#4. Audit Docx
#5. Audit PDF
except:
ScriptAuditModel.objects.update_or_create(
script = Script.objects.get(
id = script_id
),
defaults={"status" : "FAILURE"}
)
status = ScriptAuditModel.objects.get(
script = Script.objects.get(
id = script_id
))
print("STATUS AUDIT",status)
# Blockchain
# if UserCredentialsForBlockchain.objects.filter(user=request.user).exists():
blockchain_obj = UserCredentialsForBlockchain.objects.get(user=request.user)
script_original= {}
audit_data={}
script_original["status"] = "STARTED"
script_original["script_id"] = script_id
with open(file_to_original.file.path, 'rb') as file:
hash = uploadDataToIPFSNode(file)
script_original["script_file"] = hash
script_original["type"] = "script-original"
script_original["script_file_path"] = file_to_original.file.path
audit_data["script-original"] = script_original
userkey= decryptionOfPrivate(blockchain_obj.privateKey)
print("userkey = ", str(userkey))
# status,getData = getScriptAudit(userkey.decode('utf-8'),user_id,str(script_id))
# privatekeyfordb = userkey.decode('utf-8')
# print(privatekeyfordb)
# status.bchain_privatekey = privatekeyfordb
# status.save()
print("blockchain_obj.publicKey",blockchain_obj.publicKey)
print("blockchain_obj.privateKey",blockchain_obj.privateKey)
if status.status == "SUCCESS":
file_to_audit = File.objects.get(
script=script_id,
type="script-csv"
)
file_to_audit_report = File.objects.get(
script=script_id,
type="audit-report"
)
hash2 = ""
try:
file_to_audit_docx = File.objects.get(
script=script_id,
type="script-docx"
)
script_docx = {}
script_path1 = file_to_audit_docx.file.path
with open(script_path1, 'rb') as _file:
hash2 = uploadDataToIPFSNode(_file)
script_docx["script_file_path"] = script_path1
script_docx["script_file"] = hash2
script_docx["type"] = "script-docx"
audit_data["script-docx"] = script_docx
except:
csv_script_path = file_to_audit.file.path
df = pd.read_csv(csv_script_path)
docx = utilities.csv_to_docx(df)
temp_file_stream = BytesIO()
docx.save(temp_file_stream)
temp_file_stream.seek(0)
docx_file = ContentFile(
temp_file_stream.getvalue(),
"from_audited_csv_to_document.docx",
)
query_file = File.objects.create(
script= file_to_audit.script,
file=docx_file,
type="script-docx",
)
file_to_audit_docx = File.objects.get(
script=script_id,
type="script-docx"
)
script_docx = {}
script_path1 = file_to_audit_docx.file.path
script_size = file_to_audit_docx.file.size
with open(script_path1, 'rb') as _file:
hash2 = uploadDataToIPFSNode(_file)
script_docx["script_file_path"] = script_path1
script_docx["script_file"] = hash2
script_docx["type"] = "script-docx"
audit_data["script-docx"] = script_docx
## code for pdf also
try:
temp_dir = tempfile.TemporaryDirectory()
pdf_file_path = utilities.docx_to_pdf(
script_path1, temp_dir.name)
with open(pdf_file_path, "rb") as temp_pdf:
pdf_file = DjangoFile(temp_pdf,pdf_file_path.rsplit('/', 1)[1],)
query_file = File.objects.create(
script = file_to_audit.script,
file = pdf_file,
type="script-pdf",
)
script_pdf = {}
script_path1 = pdf_file_path
# script_size = file_to_audit_docx.file.size
with open(script_path1, 'rb') as _file:
hash2 = uploadDataToIPFSNode(_file)
script_pdf["script_file_path"] = script_path1
script_pdf["script_file"] = hash2
script_pdf["type"] = "script-pdf"
audit_data["script-pdf"] = script_pdf
except:
pass
# convert csv to json and store JSON
try:
csv_script_path = file_to_audit.file.path
df = pd.read_csv(csv_script_path)
df = df.loc[:, ["content", "script_element"]]
script_json: dict = json.loads(utilities.csv_to_json(df))
with tempfile.TemporaryDirectory() as temp_dir:
print("Temporary directory created:", temp_dir)
temp_filename = os.path.join(temp_dir, 'script_json_file.json')
print(temp_filename)
with open(temp_filename, 'w') as json_file:
json.dump(script_json, json_file, indent=4)
script_json = {}
script_path1 = temp_filename
# script_size = file_to_audit_docx.file.size
with open(script_path1, 'rb') as _file:
hash2 = uploadDataToIPFSNode(_file)
script_json["script_file_path"] = script_path1
script_json["script_file"] = hash2
script_json["type"] = "script-json"
audit_data["script-json"] = script_json
except:
pass
script_csv = {}
audit_report ={}
audit_report_path = file_to_audit_report.file.path
script_path = file_to_audit.file.path
script_size = file_to_audit.file.size
print("script_file_path_is_here",script_path)
with open(script_path, 'rb') as _file:
hash1 = uploadDataToIPFSNode(_file)
script_csv["script_file"] = hash1
script_csv["script_file_path"] = script_path
script_csv["type"] = "script-csv"
with open(audit_report_path, 'rb') as file1:
hash2 = uploadDataToIPFSNode(file1)
audit_report["script_file"] = hash2
audit_report["script_file_path"] = audit_report_path
audit_report["type"] = "audit-report"
audit_data["script-csv"]= script_csv
audit_data["audit-report"]= audit_report
with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01:
file01.write("audit userkey------------------SUCCESS1 IN_COUNTER\n" + str(audit_data) + "\n")
Response,gasprice = UploadScriptAuditData(OWNER_KEY,blockchain_obj.publicKey,blockchain_obj.user_id,script_id,str(audit_data))
print("tx_hash",Response)
with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01:
file01.write("audit userkey------------------SUCCESS\n"+str(Response))
transactioni_id = str(Response)
# with open("/home/mnfbeta/mnf/app/Blockchain2/file_stroge.txt","a") as file01:
# file01.write(f"Transaction hash for audit is {str(transactioni_id)}\n")
# current_time = datetime.now()
# formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
# file01.write(f"Transaction hash for audit is {str(type(transactioni_id))}\n")
# file01.write(f" time for the above transaction id {str(formatted_time)}\n")
# audit_model_obj = ScriptAuditModel.objects.get(
# script = Script.objects.get(id = script_id))
status.transaction_hash =str(transactioni_id)
# audit_model_obj.transaction_hash = str(transactioni_id)
# audit_model_obj.save()
status.save()
# user_infos = user_info(tx_hash=Response,service="Script Audit",gas_fee=gasprice)
# addition_result = user_infos.update_info(request)
hash2 = hash_decrypation(hash2)
tx_id = Response
certificate = certificateGenrate(request.user.username,"script audit",tx_id,projectname=script_file_name,matic=gasprice)
to_email = [request.user.email]
email_code = 'BL1'
key_value = {
"service":"Audited Script",
"hash": hash2,
"public key":blockchain_obj.publicKey,
"Transaction Hash": tx_id,
}
print("userkey = ", userkey)
sendmail(to_email=to_email , email_code=email_code, key_value=key_value, filePath=certificate)
print("mail send sucessfully:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
data = {"message": "Success"}
# deleting the folder and files
# Delete a file
media_path = os.path.join(settings.MEDIA_ROOT, "audit_counter_files", script_file_name)
if os.path.exists(media_path):
os.remove(media_path)
print(f"File '{media_path}' deleted successfully.")
else:
print(f"File '{media_path}' does not exist.")
# Delete a folder and its contents
folder1_path = os.path.join(settings.MEDIA_ROOT, "scripts_folder", script_id)
if os.path.exists(folder1_path):
shutil.rmtree(folder1_path)
print(f"Folder '{folder1_path}' and its contents deleted successfully.")
else:
print(f"Folder '{folder1_path}' does not exist.")
folder2_path = os.path.join(settings.MEDIA_ROOT, "audit_folder", script_id)
if os.path.exists(folder2_path):
shutil.rmtree(folder2_path)
print(f"Folder '{folder2_path}' and its contents deleted successfully.")
else:
print(f"Folder '{folder2_path}' does not exist.")
return JsonResponse(data, status=200)
# return Response("Success", status=200)
else:
with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01:
file01.write("audit userkey------------------else\n")
Response = UploadScriptAuditData(OWNER_KEY,blockchain_obj.publicKey,blockchain_obj.user_id,script_id,str(audit_data))
print("tx_hash",Response)
hash = hash_decrypation(hash)
#certificate = certificateGenrate(request.user.username,"script audit",hash)
tx_id = Response
# certificate = certificateGenrate(request.user.username,"script audit",tx_id,projectname=script_file_name,matic=gasprice)
to_email = [request.user.email]
email_code = 'BL1'
key_value = {
"service":"Orginal Script Audit",
"hash": hash,
"public key":blockchain_obj.publicKey,
"private key":userkey,
"Transaction Hash": tx_id,
}
print("::::::::::::::",key_value)
print("userkey = ", userkey)
# sendmail(to_email=to_email , email_code=email_code,key_value=key_value,filePath=certificate)
return JsonResponse({"script_id": script_id}, status=200)
class AuditStatusUpdate(APIView): class AuditStatusUpdate(APIView):
def post(self,request): def post(self,request):
@ -510,12 +913,12 @@ class AuditHomeView(APIView):
with open(audit_report_path, 'rb') as file1: with open(audit_report_path, 'rb') as file1:
hash2 = uploadDataToIPFSNode(file1) hash2 = uploadDataToIPFSNode(file1)
audit_report["script_file"] = hash2 audit_report["script_file"] = hash2
script_csv["script_file_path"] = audit_report_path audit_report["script_file_path"] = audit_report_path
script_csv["type"] = "audit-report" audit_report["type"] = "audit-report"
audit_data["script-csv"]= script_csv audit_data["script-csv"]= script_csv
audit_data["audit-report"]= audit_report audit_data["audit-report"]= audit_report
with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01: with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01:
file01.write("audit userkey------------------SUCCESS1\n") file01.write("audit userkey------------------SUCCESS1 HOME AUDIT\n")
Response,gasprice = UploadScriptAuditData(OWNER_KEY,blockchain_obj.publicKey,blockchain_obj.user_id,script_id,str(audit_data)) Response,gasprice = UploadScriptAuditData(OWNER_KEY,blockchain_obj.publicKey,blockchain_obj.user_id,script_id,str(audit_data))
print("tx_hash",Response) print("tx_hash",Response)
with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01: with open("/home/mnftaj/mnf_march22/MNF/app/Blockchain2/file_stroge.txt","a") as file01:
@ -612,7 +1015,7 @@ class AuditHomeView(APIView):
# audit_in_background(script_id) # audit_in_background(script_id)
# time.sleep(3) # time.sleep(3)
# return redirect("my_audited_scripts") # return redirect("my_audited_scripts")
return redirect("audit_processing_page") return redirect("new_audited_page1")
# return multilingual_render(request, "audit/audit_processing.html", None) # return multilingual_render(request, "audit/audit_processing.html", None)
else : else :
# return HttpResponseBadRequest(multilingual_render(request, "audit/audit.html", {"form": form,"errors": form.errors})) # return HttpResponseBadRequest(multilingual_render(request, "audit/audit.html", {"form": form,"errors": form.errors}))
@ -937,7 +1340,7 @@ class DownloadScriptFromBlockchain(APIView):
View for downloding scripts of desired type eg- docx, pdf View for downloding scripts of desired type eg- docx, pdf
""" """
VALID_FILE_TYPES = ("script-docx", "script-pdf","script-original","audit-report") VALID_FILE_TYPES = ("script-docx", "script-pdf","script-original","audit-report","script-json")
""" """
Files of only above types are allwed to be downloaded. Files of only above types are allwed to be downloaded.
""" """
@ -988,6 +1391,35 @@ class DownloadScriptFromBlockchain(APIView):
if not self.file_model_objects.exists(): if not self.file_model_objects.exists():
raise spex.ScriptDoesNotExist() raise spex.ScriptDoesNotExist()
if file_type == "script-json":
try:
# self.query_file = self.file_model_objects.get(type=file_type)
try:
query_file1 = self.auditData.get(file_type)
print("###########", str(self.auditData))
file_hash = query_file1.get('script_file')
file_name = str((str(query_file1['script_file_path']).split("/"))[-1])
geting_files = str(decryptionOflocalUrl(file_hash))
print("########GETTING",geting_files )
print(type(geting_files))
# Fetch the JSON data from the URL
response = requests.get(str(geting_files))
print("#####RESPONSE####", response)
if response.status_code == 200:
# Parse the JSON data
json_data = response.json()
print("##########JSON DATA #######")
print(json_data)
# Return the JSON data as a response
return JsonResponse({"script-json": json_data}, status=200)
return JsonResponse({"response didnt work": str(geting_files), "message": "File type is script-json"}, status=200)
except Exception as exp:
# err = repr(exp)
return JsonResponse({"fail": repr(exp), "message": "File type is script-json"}, status=400)
except:
pass
return JsonResponse({"failing": "not----", "message": "File type is script-json"}, status=400)
try: try:
self.query_file = self.file_model_objects.get(type=file_type) self.query_file = self.file_model_objects.get(type=file_type)

View File

@ -141,7 +141,7 @@ class BlockchainUserInfo(models.Model):
user_name = models.CharField(max_length=100,blank=True, null=True) user_name = models.CharField(max_length=100,blank=True, null=True)
tx_hash = models.CharField(max_length=100,blank=True, null=True) tx_hash = models.CharField(max_length=100,blank=True, null=True)
service = models.CharField(max_length=100,blank=True, null=True) service = models.CharField(max_length=100,blank=True, null=True)
gas_fee = models.IntegerField(max_length=100) gas_fee = models.CharField(max_length=100,blank=True, null=True)
script_name = models.CharField(max_length=100,blank=True, null=True) script_name = models.CharField(max_length=100,blank=True, null=True)
uploaded_by = models.CharField(max_length=100,blank=True, null=True) uploaded_by = models.CharField(max_length=100,blank=True, null=True)
upload_date = models.DateField(auto_now_add=True) upload_date = models.DateField(auto_now_add=True)