Sindbad~EG File Manager
from core import app
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,Response,jsonify,json
from werkzeug.utils import secure_filename
from os.path import join, dirname,isfile, realpath
import datetime
from datetime import timedelta,date,datetime
from .. import Helper
import os
import boto3, botocore
from botocore.exceptions import ClientError
import base64
from PIL import Image
from io import StringIO
import io
from flask import Response
import ast
from core.model.BOModel import BOModel
from core.model.UserModel import UserModel
class AWSUpload:
def AwsFileUpload(self,user_id,file,image_name,foldername):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
pg_cert_name = None
pg_cert_path = None
bucket = "delegateapp"
try:
if file:
if file.filename:
filename = secure_filename(file.filename)
split_tup = os.path.splitext(filename)
file_name = split_tup[0]
file_extension = split_tup[1]
filename_str = str(image_name)+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
if " " in filename_str :
filename_str = filename_str.replace(" ","")
user_id = str(user_id) if user_id else None
acl = "public-read"
s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='EEudWCsWeCIt/J9/z5m5htmUdGFJNzWFPvNQBIp/')
response = s3.upload_fileobj(file, bucket,foldername + filename_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':filename_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
pg_cert_path = file_path
pg_cert_name = filename_str
msg = "success"
return_data = { "pg_cert_name" : pg_cert_name,"pg_cert_path" : pg_cert_path, "msg" : msg, "status" : 1 }
else :
msg = "File name is not exists."
return_data = { "pg_cert_name" : pg_cert_name,"pg_cert_path" : pg_cert_path, "msg" : msg, "status" : 2 }
return json.dumps(return_data,default =str)
else :
msg = "File not exists. Please try again"
return_data = { "pg_cert_name" : pg_cert_name,"pg_cert_path" : pg_cert_path, "msg" : msg, "status" : 3 }
return json.dumps(return_data,default =str)
except ClientError as e:
return_data = { "pg_cert_name" : pg_cert_name,"pg_cert_path" : pg_cert_path, "msg" : str(e), "status" : 401 }
return json.dumps(return_data,default =str)
# AWS delegate photo file upload start
def AwsDelegatePhotoFileUpload(self,delegate_id,full_name,image_data,conf_key,image_data_ext):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
image_name = None
image_path = None
bucket = "delegateapp"
try:
if image_data:
file_extension = '.'+image_data_ext
filename_str = str(delegate_id)+"-"+str(full_name)+"-"+datetime.now().strftime("%Y%m%d-%H%M%S") +str(file_extension)
if " " in filename_str :
filename_str = filename_str.replace(" ","")
foldername = "delegate_photo/"+str(conf_key)+"/"
acl = "public-read"
s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='EEudWCsWeCIt/J9/z5m5htmUdGFJNzWFPvNQBIp/')
image_data = base64.b64decode(image_data.split(',')[1])
image = Image.open(io.BytesIO(image_data))
if image.mode == 'RGBA':
image = image.convert('RGB')
image.save(os.path.join('core/static/temp_images', filename_str))
img_path = os.path.join('core/static/temp_images/'+ filename_str)
with open(img_path, 'rb') as f:
response = s3.upload_fileobj(f,bucket,foldername+filename_str, ExtraArgs={"ACL": acl, "ContentType": "image/jpeg"})
os.remove('core/static/temp_images/'+ filename_str)
data_1 = {'bucketname' : bucket,'foldername':foldername,'file_name':filename_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
file_path = "https://delegateapp.s3.ap-southeast-1.amazonaws.com/"+foldername
image_path = file_path
image_name = filename_str
msg = "Added Successfully"
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 1 }
else :
msg = "File name is not exists."
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : msg, "status" : 2 }
return return_data
return return_data
except ClientError as e:
return_data = { "image_name" : image_name,"image_path" : image_path, "msg" : str(e), "status" : 401 }
return return_data
# AWS File upload start
def DelegateImageUpload(self,delegate_id,full_name,image_data,conf_key,image_data_ext):
if image_data is None:
file_upload = None
else:
file_upload = AWSUpload().AwsDelegatePhotoFileUpload(delegate_id,full_name,image_data,conf_key,image_data_ext)
# If file upload function call then this block will execute
if file_upload :
file_upload_msg = file_upload["msg"]
file_upload_status = file_upload["status"]
if file_upload_status == 1 :
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
image_path = file_upload["image_path"] or None
image_name = file_upload["image_name"] or None
file_name = image_path + image_name
updated_data = {'del_img_path':image_path,'del_img_filename':image_name,'updated_at':curr_dt}
UserModel().update_delegateUserModel(delegate_id,updated_data)
return "Successfully added"
else :
return file_upload_msg
def DeleteDelegateImage(self,delegate_id,conf_key):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
da = UserModel().get_delegate(delegate_id)
if da is None:
data = {'msg':'Deleted','status' : 1}
else:
if da['del_img_path'] and da['del_img_filename']:
filepath = da['del_img_path']
filename = da['del_img_filename']
foldername = filepath+filename
foldername = foldername.replace("https://delegateapp.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("delegateapp", foldername).delete()
updated_data = {'del_img_path' : None,'del_img_filename':None,'updated_at':curr_dt}
UserModel().update_delegateUserModel(delegate_id,updated_data)
data = {'msg':'Deleted','status' : 1}
else:
data = {'msg':'No Record','status':1 }
json_data = json.dumps(data)
return json_data
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists