Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session, app
from core.model.UserModel import UserModel
from core.model.AbstractModel import AbstractModel
from core.model.BoModel import BoModel
from random import randint
import datetime
from core.library.email import EMAIL
from datetime import timedelta,date,datetime
from core.library.cryptography import Cryptography
from core.library.route_group import RouteGroup
from core.library.auth import Auth
from core.library.helper import Helper
import ast
from urllib.parse import unquote
from collections import defaultdict
import boto3, botocore
from botocore.exceptions import ClientError
from os import listdir
from os.path import join, dirname, realpath
import os
from os import path
from werkzeug.utils import secure_filename
#name : Priyavarthana
#version : 1
#title: For uploading the abstracts such as poster,presentation,fulltext,....
#date:16/11/2024 11:37
app = Blueprint('upload', __name__)
@app.route('/attachment_uploads/<selection_type_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required
def AttachmentUploads(selection_type_id,abs_type,conf_id,conf_key):
confData = Auth.get_conference(conf_id)
society_id = confData.get("society_id")
user_id = Auth.get_user(society_id).get('user_id')
abstract =AbstractModel().get_submitted_abstract(user_id,conf_id,selection_type_id,confData.get('conf_schema'))
return render_template('uploaded/step1.html',abstract=abstract,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key,user_id=user_id,selection_type_id=selection_type_id)
@app.route('/get_attachment_uploads/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required
def getAttachmentUploads(abs_type,conf_id,conf_key):
confData = Auth.get_conference(conf_id)
json = {'msg':'','status' : 1,'data':''}
abs_id = request.values.get('abs_id')
user_id = request.values.get('user_id')
selection_type_id = request.values.get('selection_type_id')
if int(conf_id) in (51,49):
img = AbstractModel().get_uploaded_file_rock(abs_id,conf_id,confData.get('conf_schema'))
else:
img = AbstractModel().get_fulltext_by_abs_id(abs_id,confData.get('conf_schema'))
abstract = AbstractModel().get_submitted_abstract(user_id,conf_id,selection_type_id,confData.get('conf_schema'))
json['data'] = render_template('uploaded/upload_img.html',img=img,abs_id=abs_id,abstract=abstract,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key)
return jsonify(json)
@app.route('/img_upload/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required
def Img_upload(abs_id,abs_type,conf_id,conf_key):
confData = Auth.get_conference(conf_id)
file = request.files.get('file')
img_type = request.values.get('img_type') or None
bucketname = 'common-application'
if file and bucketname:
# if int(conf_id) in (51,49):
# img = AbstractModel().get_img_upload_v1(abs_id,img_type)
# else:
img = AbstractModel().get_img_upload(abs_id)
if img:
img = img
filepath = img['path']
filename = img['file_name']
foldername = filepath+filename
foldername = foldername.replace("https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/", "")
s3 = boto3.resource("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='EEudWCsWeCIt/J9/z5m5htmUdGFJNzWFPvNQBIp/')
response = s3.Object(bucketname, foldername).delete()
AbstractModel().delete_image(abs_id)
else:
pass
data_1 = {}
acl = "public-read"
s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
filename = secure_filename(file.filename)
split_tup = os.path.splitext(filename)
file_name = split_tup[0]
file_extension = split_tup[1]
absData = BoModel().get_keynote_abstract(abs_id,confData.get('conf_schema'))
if absData and absData['abs_no']:
file_str = str(absData['abs_type'])+str(absData['abs_no'])+str(file_extension)
else:
if img_type is None:
file_str = "attachment"+str(file_extension)
else:
file_str = str(img_type)+file_extension
# print(file_str)
try:
bucket = bucketname
foldername_1 = 'abs_uploads'
foldername_2 = conf_key
file_path = "https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/"+foldername_1+"/"+foldername_2+"/"+str(abs_type)+"/"+str(abs_id)+"/"
data = {
'path' : file_path,
'file_name' : file_str,
'img_type' : img_type
}
data_1 = {
'path' : file_path,
'file_name' : file_str+"?"+str(Helper.getcurrenttimestamp()),
'img_type' : img_type
}
update_data = AbstractModel().update_imge_db(abs_id,data)
response = s3.upload_fileobj(file, bucket,foldername_1+'/'+foldername_2+'/'+str(abs_type)+'/'+str(abs_id)+'/'+ file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
except ClientError as e:
logging.error(e)
data_1['file_extension'] = file_extension
data_1['upload_id'] = update_data['max']
return jsonify(data_1)
else:
return jsonify()
@app.route('/remove_img/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required
def Remove_img(conf_id,conf_key):
abs_id = request.values.get('abs_id')
upload_id = request.values.get('upload_id')
img = AbstractModel().get_img_upload_by_upload_id(upload_id)
if img:
bucketname = 'common-application'
filepath = img['path']
filename = img['file_name']
foldername = filepath+filename
foldername = foldername.replace("https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/", "")
s3 = boto3.resource("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='EEudWCsWeCIt/J9/z5m5htmUdGFJNzWFPvNQBIp/')
response = s3.Object(bucketname, foldername).delete()
AbstractModel().delete_abs_upload(upload_id)
else:
pass
return jsonify('success')
@app.route('/save_upload_details/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["POST"])
@RouteGroup.conf_required
# @RouteGroup.login_required
def save_upload_details(abs_id,abs_type,conf_id,conf_key):
filename = request.values.get('file_name')
bucketname = 'common-application'
try:
bucket = bucketname
foldername_1 = 'abs_uploads'
foldername_2 = conf_key
file_path = "https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/"+foldername_1+"/"+foldername_2+"/"+str(abs_type)+"/"+str(abs_id)+"/"
data_1 = {
'path' : file_path,
'file_name' : filename,
'img_type' : None
}
# print(data_1)
AbstractModel().delete_image(abs_id)
update_data = AbstractModel().update_imge_db(abs_id,data_1)
data_1.update(update_data)
return jsonify(data_1)
except ClientError as e:
logging.error(e)
return jsonify()
@app.route('/delete_file', methods=['POST'])
def Deletefile():
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
upload_id= request.values.get('upload_id')
path= request.values.get('path')
file_name=request.values.get('file_name')
bucketname='common-application'
foldername =path+"/"+file_name
# print(foldername)
foldername = foldername.replace("https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/", "")
s3 = boto3.resource("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='EEudWCsWeCIt/J9/z5m5htmUdGFJNzWFPvNQBIp/')
response = s3.Object(bucketname,foldername).delete()
delete_file=AbstractModel().Deletefile_v1(upload_id)
data = {"msg" : "success" ,"status" : 1 }
return jsonify(data)
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists