Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session, app,json
from .. import Cryptography,Auth,RouteGroup
from random import randint
from collections import defaultdict
import math, random
import time
from urllib.parse import unquote
import datetime
from core.library.helper import Helper
from datetime import timedelta,date,datetime
import ast
""" Library """
from core.library.email import EMAIL
""" Models """
from core.model.UserModel import UserModel
from core.model.AbstractModel import AbstractModel
from core.model.BoModel import BoModel
from pydoc import locate
import imp,sys
import base64
from urllib.parse import unquote
import boto3, botocore
from botocore.exceptions import ClientError
import os
from os import listdir
from os.path import join, dirname, realpath
from werkzeug.utils import secure_filename
# import importlib
# name : Mukesh kumar
# version : 1
# title: abstract submission
# date:07/02/2022 01:14
app = Blueprint('main', __name__)
@app.route('/guideline_index/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required #check if login else automatically redirect to login page
def GuidelineIndex(abs_type):
guideline = UserModel().get_guidelines(abs_type)
return render_template('users/guideline.html',guideline=guideline,abs_type=abs_type)
@app.route('/abstract_index/<abs_type>/<society_id>', methods = ["GET", "POST"])
@RouteGroup.login_required
def AbstractsIndex(abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.AbstractsIndex(abs_type,society_id)
return data
@app.route('/fulltextupload/<abs_type>//<society_id>', methods = ["GET", "POST"])
@RouteGroup.login_required
def FulltextUpload(abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.FulltextUpload(abs_type)
return data
@app.route('/get_fulltext/<abs_type>', methods = ["GET","POST"])
def get_fulltext(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.get_fulltext(abs_type)
return data
@app.route('/<string:abs_type>/<abs_id>/abs/<society_id>', methods = ["GET", "POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def main_layout(abs_type,abs_id,society_id):
# abs_id = Cryptography.decrypt(abs_id)
myclass = Helper.call_custom_controller(abs_type)
data = myclass.main_layout(abs_type,abs_id,society_id)
return data
@app.route('/new/<string:abs_type>/<society_id>', methods = ["GET", "POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def New(abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
abs_id = myclass.New(abs_type,society_id)
return redirect(url_for('main.main_layout',abs_type=abs_type,abs_id=abs_id,society_id=society_id))
@app.route('/step1/<abs_type>/<society_id>', methods = ["GET", "POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def Step1(abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step1(abs_type,society_id)
return data
@app.route('/step1post/<abs_type>/<society_id>', methods = ["POST"])
@RouteGroup.login_required
def Step1post(abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step1post(abs_type,society_id)
return data
@app.route('/step2/<abs_type>/<society_id>', methods = ["GET", "POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def Step2(abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step2(abs_type,society_id)
return data
@app.route('/step2post/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def StepPost_2(abs_type):
if request.method == "POST":
myclass = Helper.call_custom_controller(abs_type)
data = myclass.StepPost_2(abs_type)
return data
else:
return None
@app.route('/step3/<abs_type>',methods=["GET","POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def Step3(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step3(abs_type)
return data
@app.route('/step3post/<abs_id>/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Step3post(abs_id,abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step3post(abs_id,abs_type)
return data
# IC Functons starts
@app.route('/step3getauthor/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Get_co_Instructor(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step3getauthor(abs_type)
return data
@app.route('/total_duration/<abs_type>',methods=["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Total_duration(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Total_duration()
return data
@app.route('/searchinstructor/<abs_type>',methods=["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def SearchInstructor(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.SearchInstructor(abs_type)
return data
@app.route('/step3editauthor/<abs_type>',methods=["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Step3editauthor(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step3editauthor(abs_type)
return data
@app.route('/add_and_edit_to_authors/<abs_type>',methods=["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def add_and_edit_intructors(abs_type):#this will add coinstructor for IC
myclass = Helper.call_custom_controller(abs_type)
data = myclass.add_and_edit_intructors(abs_type)
return data
@app.route('/step3model/<abs_type>',methods=["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Step3model(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step3model(abs_type)
return data
# IC Functons end
@app.route('/searchauthor/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Searchauthor(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Searchauthor(abs_type)
return data
@app.route('/add_presenting_author/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Add_update_Presenting_author(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Add_update_Presenting_author(abs_type)
return data
@app.route('/getccuploads/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def GetCcUploads(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Get_cc_uploads(abs_type)
return data
@app.route('/add_co_author/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Add_update_co_author(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Add_update_co_author(abs_type)
return data
@app.route('/ppstep1getauthor/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Step1_get_author(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step1_get_author(abs_type)
return data
@app.route('/get_co_author/<abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Get_co_author(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Get_co_author(abs_type)
return data
@app.route('/step3deleteauthor', methods = ["GET", "POST"])
@RouteGroup.login_required
def Step3deleteauthor():
topic_id = request.values["topic_id"]
data = AbstractModel().delete_author_userid(topic_id)#deleting the author
return jsonify()
@app.route('/step4/<string:abs_type>',methods=["GET","POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def Step4(abs_type):
myclass = Helper.call_custom_controller(abs_type)
abs_id = request.values.get("abs_id") or None
data = myclass.Step4(abs_id,abs_type)
return data
@app.route('/step4post/<abs_id>/<string:abs_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Step4post(abs_id,abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Step4post(abs_id,abs_type)
return data
@app.route('/step5/<string:abs_type>',methods=["GET","POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def Step5(abs_type):
myclass = Helper.call_custom_controller(abs_type)
abs_id = request.values.get("abs_id") or None
data = myclass.Step5(abs_id,abs_type)
return data
@app.route('/mail/<abs_id>/<abs_type>/<society_id>', methods = ["GET","POST"])
@RouteGroup.login_required
@RouteGroup.validation_OP_required
def Mail(abs_id,abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Mail(abs_id,society_id)
return data
@app.route('/success/<string:abs_type>/<abs_id>/<user_id>/<society_id>',methods = ["GET","POST"])
@RouteGroup.login_required
def success(abs_type,abs_id,user_id,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.success(abs_type,abs_id,user_id,society_id)
return data
@app.route('/<abs_id>/<abs_type>/view/<society_id>',methods=["GET","POST"])
@RouteGroup.login_required
def View(abs_id,abs_type,society_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.View(abs_id,society_id)
return data
@app.route('/coi_consent/<user_id>/<abs_id>/<abs_type>/<topic_id>', methods = ["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def co_instructor_consent(user_id,abs_id,abs_type,topic_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.co_instructor_consent(user_id,abs_id,abs_type,topic_id)
return data
@app.route('/consent_status/<user_id>/<topic_id>/<abs_type>/<int:status>',methods=["GET","POST"])
@RouteGroup.ic_consent_date
def Consent_status(user_id,topic_id,abs_type,status):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Consent_status(user_id,topic_id,abs_type,status)
return data
@app.route('/change_co_instructor/<abs_id>/<abs_type>', methods = ["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Change_co_instructor(abs_id,abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Change_co_instructor(abs_id,abs_type)
return data
@app.route('/update_coi/<abs_type>', methods = ["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Update_coi(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Update_coi(abs_type)
return data
@app.route('/send_reminder/<abs_type>', methods = ["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Send_reminder(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Send_reminder(abs_type)
return data
# @app.route('/img_upload/<abs_id>/<abs_type>', methods = ["GET", "POST"])
# @RouteGroup.conf_required
# @RouteGroup.login_required
# def Img_upload(abs_id,abs_type):
# file = request.files.get('file')
# # print(file)
# bucketname = 'aios-app'
# if file and bucketname:
# 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]
# file_str = filename
# 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' : file_str,
# }
# update_data = AbstractModel().update_imge_db(abs_id,data_1)
# 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
# return jsonify(data_1)
# else:
# return jsonify()
@app.route('/upload_img/<abs_id>/<abs_type>', methods = ["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Upload_image(abs_id,abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Upload_image(abs_id,abs_type)
return data
@app.route('/delete_img/<abs_type>', methods = ["GET","POST"])
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Delete_Image(abs_type):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.Delete_Image(abs_type)
return data
# @app.route('/remove_img', methods = ["GET", "POST"])
# @RouteGroup.conf_required
# @RouteGroup.login_required
# def Remove_img():
# abs_id = request.values.get('abs_id')
# img = AbstractModel().get_img_upload(abs_id)
# if img:
# bucketname = 'aios-app'
# 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
# return jsonify('success')
@app.route('/post_regret_remarks/<abs_type>/<topic_id>', methods = ["GET","POST"])
def postRegretRemarks(abs_type,topic_id):
myclass = Helper.call_custom_controller(abs_type)
data = myclass.postRegretRemarks(abs_type,topic_id)
return data
@app.route('/img_upload_v1/<abs_id>/<abs_type>/<file_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Img_upload_v1(abs_id,abs_type,file_type):
file = request.files.get('file')
# print(file)
bucketname = 'aios-app'
if file and bucketname:
img = AbstractModel().get_img_upload_v1(abs_id,file_type)
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)
file_str = filename
try:
bucket = bucketname
foldername_1 = 'abs_uploads'
file_path = "https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/"+foldername_1+"/"+str(abs_type)+"/"+str(abs_id)+"/"
data_1 = {
'path' : file_path,
'file_name' : file_str,
'img_type' : file_type,
}
update_data = AbstractModel().update_imge_db_v1(abs_id,data_1)
response = s3.upload_fileobj(file, bucket,foldername_1+'/'+str(abs_type)+'/'+str(abs_id)+'/'+ file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
except ClientError as e:
logging.error(e)
return jsonify(data_1)
else:
return jsonify()
@app.route('/remove_img_v1/<file_type>', methods = ["GET", "POST"])
@RouteGroup.login_required
def Remove_img_v1(file_type):
abs_id = request.values.get('abs_id')
img = AbstractModel().get_img_upload_v1(abs_id,file_type)
if img:
bucketname = 'aios-app'
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_v1(abs_id,file_type)
else:
pass
return jsonify('success')
@app.route('/abstract_ajax_insert/<society_id>',methods=["POST"])
@RouteGroup.login_required
def InsertAjaxCall(society_id):
abs_id=request.values.get('abs_id')
user_id=request.values.get('user_id')
title=request.values.get('title')
synopsis=request.values.get('synopsis')
data={
'user_id':user_id,
'title':title,
'synopsis':synopsis,
'category_id':request.values.get("category") or None
}
update_ajax_call=AbstractModel().UpdateAjaxCall(abs_id,data)
data = {"msg" : "success" ,"status" : 1 }
json_data = json.dumps(data,default = str)
return json_data
@app.route('/save_upload_details/<abs_id>/<abs_type>/<society_id>', methods = ["POST"])
# @RouteGroup.login_required
def save_upload_details(abs_id,abs_type,society_id):
filename = request.values.get('file_name')
img_type = request.values.get('img_type') or None
bucketname = 'aios-app'
try:
bucket = bucketname
foldername_1 = 'abs_uploads'
foldername_2 = 'aioc24'
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' : img_type
}
AbstractModel().delete_image(abs_id)
update_data = AbstractModel().update_imge_db(abs_id,data_1)
data_1['upload_id'] = update_data['max']
return jsonify(data_1)
except ClientError as e:
logging.error(e)
return jsonify()
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists