Sindbad~EG File Manager

Current Path : /home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/
Upload File :
Current File : //home/numerotech/test-abs.numerotech.com/common_abs_v2/core/controller/MainController.py

from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session, app
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
from os import listdir
from os.path import join, dirname, realpath
import os
from os import path
from werkzeug.utils import secure_filename
# import importlib


# name : Mukesh kumar
# version : 1
# title: abstract submission
# date:07/02/2022 01:14
# demo site url = https://abstracts.TNOA.in/abstracts?type=VS

app = Blueprint('main', __name__)


@app.route('/guideline_index/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login page
def GuidelineIndex(abs_type,conf_id,conf_key):                                                
	guideline = UserModel().get_guidelines(abs_type,conf_id)
	return render_template('users/guideline.html',guideline=guideline,abs_type=abs_type,conf_id=conf_id,conf_key=conf_key)


@app.route('/abstract_index/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def AbstractsIndex(abs_type,conf_id,conf_key):         
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.AbstractsIndex(abs_type,conf_id,conf_key)
	return data

@app.route('/fulltextupload/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def FulltextUpload(abs_type,conf_id,conf_key):         
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.FulltextUpload(abs_type,conf_id,conf_key)
	return data

@app.route('/get_fulltext/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
def get_fulltext(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.get_fulltext(abs_type,conf_id,conf_key)
	return data

@app.route('/abstractupload/<selection_type_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def AbstractUpload(selection_type_id,abs_type,conf_id,conf_key):         
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.FulltextUpload(selection_type_id,abs_type,conf_id,conf_key)
	return data
	
@app.route('/<string:abs_type>/<abs_id>/abs/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def main_layout(abs_type,abs_id,conf_id,conf_key):
	# abs_id   = Cryptography.decrypt(abs_id)
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.main_layout(abs_type,abs_id,conf_id,conf_key)
	return data

@app.route('/new/<string:abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def New(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	abs_id      = myclass.New(abs_type,conf_id,conf_key)
	conf_id = conf_id
	return redirect(url_for('main.main_layout',abs_type=abs_type,abs_id=abs_id,conf_id=conf_id,conf_key=conf_key))

@app.route('/step1/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def Step1(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step1(abs_type,conf_id,conf_key)
	return data

@app.route('/step1post/<abs_type>/<conf_id>/<conf_key>', methods = ["POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Step1post(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step1post(abs_type,conf_id,conf_key)
	return data
	

@app.route('/step2/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def Step2(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step2(abs_type,conf_id,conf_key)
	return data

@app.route('/step2post/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def StepPost_2(abs_type,conf_id,conf_key):
	if request.method == "POST":
		myclass     = Helper.call_custom_controller(abs_type,conf_key)
		data        = myclass.StepPost_2(abs_type,conf_id,conf_key)
		return data
	else:
		return None

@app.route('/step3/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def Step3(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step3(abs_type,conf_id,conf_key)
	return data

@app.route('/step3post/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Step3post(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step3post(abs_id,abs_type,conf_id,conf_key)
	return data

# IC Functons starts
@app.route('/step3getauthor/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Get_co_Instructor(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step3getauthor(abs_type,conf_id,conf_key)
	return data

@app.route('/total_duration/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Total_duration(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Total_duration(conf_id,conf_key)
	return data

@app.route('/searchinstructor/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def SearchInstructor(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.SearchInstructor(abs_type,conf_id,conf_key)
	return data

@app.route('/step3editauthor/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Step3editauthor(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step3editauthor(abs_type,conf_id,conf_key)
	return data

@app.route('/add_and_edit_to_authors/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def add_and_edit_intructors(abs_type,conf_id,conf_key):#this will add coinstructor for IC
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.add_and_edit_intructors(abs_type,conf_id,conf_key)
	return data

@app.route('/step3model/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Step3model(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step3model(abs_type,conf_id,conf_key)
	return data

# IC Functons end

@app.route('/searchauthor/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Searchauthor(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Searchauthor(abs_type,conf_id,conf_key)
	return data
	

@app.route('/add_presenting_author/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Add_update_Presenting_author(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Add_update_Presenting_author(abs_type,conf_id,conf_key)
	return data

@app.route('/getccuploads/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def GetCcUploads(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Get_cc_uploads(abs_type,conf_id,conf_key)
	return data    

@app.route('/add_co_author/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Add_update_co_author(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Add_update_co_author(abs_type,conf_id,conf_key)
	return data


@app.route('/ppstep1getauthor/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Step1_get_author(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step1_get_author(abs_type,conf_id,conf_key)
	return data

@app.route('/get_co_author/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Get_co_author(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Get_co_author(abs_type,conf_id,conf_key)
	return data

@app.route('/step3deleteauthor/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Step3deleteauthor(conf_id,conf_key):
	confData = Auth.get_conference(conf_id)
	topic_id  = request.values["topic_id"]
	data       = AbstractModel().delete_author_userid(topic_id,confData.get('conf_schema'))#deleting the author
	return jsonify()

@app.route('/step4/<string:abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def Step4(abs_type,conf_id,conf_key):
	myclass = Helper.call_custom_controller(abs_type,conf_key)
	abs_id  = request.values.get("abs_id") or None    
	data    = myclass.Step4(abs_id,abs_type,conf_id,conf_key)
	return data

@app.route('/step4post/<abs_id>/<string:abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Step4post(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Step4post(abs_id,abs_type,conf_id,conf_key)
	return data
	
@app.route('/step5/<string:abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def Step5(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	abs_id  = request.values.get("abs_id") or None    
	data        = myclass.Step5(abs_id,abs_type,conf_id,conf_key)
	return data

@app.route('/mail/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
@RouteGroup.validation_OP_required
def Mail(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Mail(abs_id,conf_id,conf_key)
	return data
		
@app.route('/success/<string:abs_type>/<abs_id>/<user_id>/<conf_id>/<conf_key>',methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required
def success(abs_type,abs_id,user_id,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.success(abs_type,abs_id,user_id,conf_id,conf_key)
	return data

@app.route('/<abs_id>/<abs_type>/view/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def View(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.View(abs_id,conf_id,conf_key)
	return data

@app.route('/coi_consent/<user_id>/<abs_id>/<abs_type>/<topic_id>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def co_instructor_consent(user_id,abs_id,abs_type,topic_id,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.co_instructor_consent(user_id,abs_id,abs_type,topic_id,conf_id,conf_key)
	return data

@app.route('/consent_status/<user_id>/<topic_id>/<abs_type>/<int:status>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.ic_consent_date
def Consent_status(user_id,topic_id,abs_type,status,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Consent_status(user_id,topic_id,abs_type,status,conf_id,conf_key)
	return data
	
@app.route('/change_co_instructor/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Change_co_instructor(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Change_co_instructor(abs_id,abs_type,conf_id,conf_key)
	return data

@app.route('/update_coi/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Update_coi(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Update_coi(abs_type,conf_id,conf_key)
	return data

@app.route('/send_reminder/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Send_reminder(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Send_reminder(abs_type,conf_id,conf_key)
	return data


@app.route('/cc_img_upload/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def cc_Img_upload(abs_id,abs_type,conf_id,conf_key):
	file = request.files.get('file')
	# print(">>>>>>>!!!",abs_id)
	abs_id      = int(Cryptography.decrypt(abs_id))
	presentation_type_id = request.values.get('presentation_type_id',None)
	# print("presentation_type_idqweqweqwe",presentation_type_id)
	if int(presentation_type_id) == Helper.CC_Presentation_type_id :
		# print("inside if")
		filename = secure_filename(file.filename)
		# print("filename",filename)
		data = AbstractModel().checkexistsfile(abs_id,filename);
		# print(">>>>>",data)
		if data and len(data) >0:
			return jsonify({'data':'','msg':"file already exists"})
	# print(file)
	bucketname = 'common-application'
	if file and bucketname:
		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'
			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,
						'img_type' : 'CC',
						 }
			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)
		abs_uploads = AbstractModel().get_abs_uploads(abs_id)
		print(len(abs_uploads))
		if len(abs_uploads)<=3:
			json = {'msg':'','status' : 1,'data':''}
			json["data"] =  render_template('users/VRSI2023/PP/ccupload.html',conf_id=conf_id,conf_key=conf_key,abs_uploads=abs_uploads)
			return jsonify(json)

# def ccuploadvalidation(file,abs_id):
#     if:
#         return False;
#     else:
#         return True;


@app.route('/cc_remove_img_11/<conf_id>/<conf_key>', methods=['GET', 'POST'])
def CCRemoveImg_11(conf_id,conf_key):
	# path= request.values.get('path')
	print(path) 
	foldername      = path.replace('https://test-memberapp.s3.ap-southeast-1.amazonaws.com/', "")
	print(foldername)
	s3= boto3.resource("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='EEudWCsWeCIt/J9/z5m5htmUdGFJNzWFPvNQBIp/')
	bucketname="test-memberapp"
	response =  s3.Object(bucketname,foldername).delete()
	html_data = render_template('users/VRSI2023/PP/ccupload.html',conf_id=conf_id,conf_key=conf_key)
	return json.dumps(data)

@app.route('/upload_img/<abs_id>/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Upload_image(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Upload_image(abs_id,abs_type,conf_id,conf_key)
	return data

@app.route('/delete_img/<abs_type>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def Delete_Image(abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.Delete_Image(abs_type,conf_id,conf_key)
	return data


	
@app.route('/cc_remove_img/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def CCRemove_img(conf_id,conf_key):
	abs_id      = request.values.get('abs_id')  
	upload_id   = request.values.get('upload_id')
	abs_id      = int(Cryptography.decrypt(abs_id))
	img         = AbstractModel().get_img_upload_by_upload_id(upload_id)
	print("img",img)
	if img:
		bucketname = 'common-application'
		img        = img  
		filepath   = img['path']
		filename   = img['file_name']
		foldername = filepath+filename
		print("foldername",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() 
		AbstractModel().delete_abs_upload(upload_id)
		json = {'msg':'','status' : 1,'data':""}

		abs_uploads = AbstractModel().get_abs_uploads(abs_id)
		json["data"] =  render_template('users/VRSI2023/PP/ccupload.html',conf_id=conf_id,conf_key=conf_key,abs_uploads=abs_uploads)
		return jsonify(json)
   


@app.route('/post_regret_remarks/<abs_type>/<topic_id>/<conf_id>/<conf_key>', methods = ["GET","POST"])
@RouteGroup.conf_required
def postRegretRemarks(abs_type,topic_id,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.postRegretRemarks(abs_type,topic_id,conf_id,conf_key)
	return data

@app.route('/img_upload_v1/<abs_id>/<abs_type>/<file_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Img_upload_v1(abs_id,abs_type,file_type,conf_id,conf_key):
	file = request.files.get('file')
	# print(file)
	bucketname = 'common-application'
	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)
		split_tup       = os.path.splitext(filename)
		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,
						'img_type'  : file_type,
						'file_extension' : file_extension
						 }
			update_data = AbstractModel().update_imge_db_v1(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)
		return jsonify(data_1)
	else:
		return jsonify()
	
@app.route('/remove_img_v1/<file_type>/<conf_id>/<conf_key>', methods = ["GET", "POST"])
@RouteGroup.conf_required
@RouteGroup.login_required 
def Remove_img_v1(file_type,conf_id,conf_key):
	abs_id  = request.values.get('abs_id')  
	img    = AbstractModel().get_img_upload_v1(abs_id,file_type)
	if img:
		bucketname = 'common-application'
		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('/get_details_sundaram_award/<abs_id>/<abs_type>/<conf_id>/<conf_key>',methods=["GET","POST"])
@RouteGroup.conf_required
@RouteGroup.login_required #check if login else automatically redirect to login pag
def GetDetailsSundaramAward(abs_id,abs_type,conf_id,conf_key):
	myclass     = Helper.call_custom_controller(abs_type,conf_key)
	data        = myclass.GetDetailsSundaramAward(abs_id,abs_type,conf_id,conf_key)
	return data


@app.route('/update_users_details/<user_id>/<society_id>',methods = ["GET"])
def UpdateUsersDetails(user_id,society_id):
	year         = request.values.get("year",None)
	month        = request.values.get("month",None)
	date         = request.values.get("date",None)
	dob          = None
	if year and month and date :
		dob =  datetime.strptime(year+"-"+month+"-"+date,'%Y-%m-%d')
	data  = {'dob' : dob,'aadhaar_number' : request.values.get('aadhaar_number')}
	print(user_id)
	img = UserModel().get_user_aadhaarimage(user_id)
	print(img)
	if img :
		UserModel().update_member(user_id,data)
		status = 1
		msg = "Updated"
	else:
		status = 0
		msg = "Please upload Aadhaar card"
	data={'status':status,'msg':msg} 
	return jsonify(data)

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists