Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session, Response
from core.model.DelegateModel import DelegateModel
from random import randint
import datetime
import os
import math
from datetime import timedelta,date,datetime
from .. import Cryptography
from flask import session, app
from flask import json,jsonify
import ast
import urllib.request
from os.path import join, dirname,isfile, realpath
from werkzeug.utils import secure_filename
from werkzeug.security import generate_password_hash, check_password_hash
from os import listdir
import io
import csv
app = Blueprint('delegate', __name__)
@app.before_request
def make_session_permanent():
session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=1)
session.modified = True
@app.route('/delegate_index1' , methods = ["GET"])
def DelegateIndex():
status = 1
if session.get('delegate'):
delegate = session.get('delegate')
# user_id = request.args.get('user_id')
delegate_id = delegate['delegate_id']
encrypted_delegate_id= Cryptography.encrypt(delegate_id)
delegate_output = DelegateModel().get_username(delegate_id)
name = delegate_output['name']
print("<<Welcome loggedin delegate >>" + name)
name = delegate_output['name']
delegate_data = DelegateModel().get_delegates()
return render_template('delegates/delegate_index.html',delegate_data= delegate_data,name=name)
else :
return redirect (url_for('delegate.DelegateLogin'))
#home page or main page based on session..
@app.route('/delegate_login')
def DelegateLogin():
print('ín form')
return render_template('delegates/login_screen.html')
@app.route('/delegate_register' , methods = ["GET"])
def DelegateRegister():
print('ín form')
data =request.args.get('delegate_data')
print("Data from url :")
print (data)
if data is None:
states = DelegateModel().get_states()
return render_template('delegates/registration.html',states = states ,data = data)
else :
my_dict = ast.literal_eval(data)
print (type(my_dict))
states = DelegateModel().get_states()
return render_template('delegates/registration.html',states = states ,data = my_dict)
@app.route('/delegate_register', methods = ["POST"])
def DelegatePostRegister():
if request.method == "POST":
print('in post')
now = datetime.now()
# dd/mm/YY H:M:S
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
name = request.form['name']
email = request.form['email']
mobile = request.form['mobile']
mnc_number = request.form['mnc_number']
state = request.form['state']
dob = request.form['dob']
gender = request.form['gender']
password = request.form['password']
confirm_password = request.form['confirm_password']
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file_path = 'static/uploads'
else :
pass
# fetching data from form..
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'mnc_number' : mnc_number,
'state' :state,
'dob': dob,
'gender' : gender,
'file_name': filename,
'file_path': file_path,
'password' : password,
'confirm_password' : confirm_password,
'created_at' :[dt_string]
}
us = DelegateModel()
#calling insert method using that object..
if(password == confirm_password):
check_email = us.get_delegates_email(email)
# che_email_user_id = check_email.user_id
print(check_email)
check_mobile = us.get_delegates_mobile(mobile)
# che_mobi_user_id = check_mobile.user_id
print(check_mobile)
if (check_email == "success"):
flash('Email Already Exists.')
rem_list = ['password', 'confirm_password', 'created_at']
[data.pop(key) for key in rem_list]
return redirect (url_for ('delegate.DelegateRegister' , delegate_data=data))
if (check_mobile == "success"):
flash('Mobile Number Already Exists.')
rem_list = ['password', 'confirm_password', 'created_at']
[data.pop(key) for key in rem_list]
return redirect (url_for ('delegate.DelegateRegister' , delegate_data=data))
else:
UPLOAD_FOLDER = '/static/uploads'
if file:
filename = secure_filename(file.filename)
path = os.path.join('core/static/uploads', file.filename)
file.save(path)
insert_delegates = us.insert_delegates(data)
if insert_delegates:
flash('Registration Successfully .')
return redirect (url_for('delegate.DelegateLogin'))
else:
flash('Password and confirm password mismatch ')
return redirect (url_for('delegate.DelegateRegister' , delegate_data=data))
@app.route('/delegate_post_login', methods = ["GET","POST"])
def DelegatePostLogin():
print('ín form')
print('inside delegate login')
if request.method == "POST":
email = request.form['email']
password = request.form['password']
if not email or not password:
flash('Please enter email and password')
return redirect (url_for('delegate.DelegateLogin'))
else :
us = DelegateModel()
delegate_output = us.get_delegates_email_data(email)
#name = delegate_output['name']
#print("<< Loggedin user name >>" + name)
if delegate_output is not None :
print("form input password " + password)
db_pass = delegate_output['password']
print(" db password " + db_pass )
if password == db_pass:
#flash('Regsitration Successfully Saved ! ' )
print(delegate_output['password'] + "and given password is " + password )
delegate_id = delegate_output['delegate_id']
print( delegate_id )
us.update_last_login(delegate_id,datetime.now());
name = delegate_output['name']
session['delegate'] = delegate_output
encrypted_delegate_id= Cryptography.encrypt(delegate_id)
print(encrypted_delegate_id)
return redirect (url_for('delegate.test',delegate_id=encrypted_delegate_id,name=name))
else :
status = 0
# msg = "Passsword invalid. Please check the password."
flash('Passsword invalid. Please check the password. ' )
return redirect (url_for('delegate.DelegateLogin'))
else:
status = 0
msg = "Email id is not registered."
flash("Email id is not registered." )
return redirect (url_for('delegate.DelegateLogin'))
# return jsonify({'status':status, 'message':msg})
return render_template('delegates/login_screen.html')
# logout
@app.route('/delegate_logout', methods = ["GET", "POST"])
def DelegateLogout():
session.pop('delegate')
session.pop('_flashes', None)
return redirect(url_for('delegate.DelegateLogin'))
@app.route('/delete_delegate/<int:id>' ,methods = ["GET","POST"])
def DeleteDelegate(id):
print("Inside in contoller delete")
print(id)
id = int(id)
username = DelegateModel().get_username(id)
name = username['name']
output = DelegateModel().delete_delegate(id)
print(output)
flash('User name '+ ' '+name +' ' +' Deleted ! ' )
return redirect (url_for('delegate.test'))
@app.route('/edit_delegate/<int:id>',methods = ["GET","POST"])
def EditDelegate(id):
id = int(id)
output = DelegateModel().edit_delegate(id)
states = DelegateModel().get_states()
return render_template('delegates/edit_delegate.html',data = output, states=states, str=str,type=type,id = id)
@app.route('/view_delegate/<int:id>',methods = ["GET","POST"])
def ViewDelegate(id):
id = int(id)
output = DelegateModel().edit_delegate(id)
states = DelegateModel().get_states()
return render_template('delegates/view_delegate.html',data = output, states=states, str=str,type=type,id = id)
# Post_edituser
@app.route('/post_editdelegate/<int:id>',methods = ["GET","POST"])
def PostEditDelegate(id):
id = int(id)
if request.method == "POST":
now = datetime.now()
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
name = request.form['name']
email = request.form['email']
mobile = request.form['mobile']
mnc_number = request.form['mnc_number']
password = request.form['password']
confirm_password = request.form['confirm_password']
gender = request.form['gender']
state = request.form['state']
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file_path = 'static/uploads'
else :
pass
# fetching data from form..
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'mnc_number':mnc_number,
'state' :state,
'gender' : gender,
'file_name': filename,
'file_path': file_path,
'password' : password,
'confirm_password' : confirm_password,
'updated_at' :[dt_string]
}
if(password == confirm_password):
check_email = DelegateModel().check_delegates_email_for_update(email,id)
check_mobile = DelegateModel().check_delegates_mobile_for_update(mobile,id)
print("<<Email count >>")
# part = check_email.replace(')', '')
print((check_email['email_count']))
if (check_email['email_count'] == 1):
flash('This email already exist ')
return redirect (url_for('delegate.EditDelegate' , id=id))
if (check_mobile['mobile_count'] ==1):
flash('This mobile already exist ')
return redirect (url_for('delegate.EditDelegate' , id=id))
output = DelegateModel().update_delegate(id,data)
if output == "success":
UPLOAD_FOLDER = '/static/uploads'
if file:
filename = secure_filename(file.filename)
path = os.path.join('core/static/uploads', file.filename)
file.save(path)
flash("Updated !")
return redirect( url_for('delegate.test'))
else:
flash('Password and confirm password mismatch ')
return redirect (url_for('delegate.EditDelegate' , id=id))
@app.route('/add_post_delegate', methods = ["POST"])
def AddPostDelegate():
if request.method == "POST":
print('in post')
now = datetime.now()
# dd/mm/YY H:M:S
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
name = request.form['name']
email = request.form['email']
mobile = request.form['mobile']
mnc_number = request.form['mnc_number']
state = request.form['state']
dob = request.form['dob']
gender = request.form['gender']
password = request.form['password']
confirm_password = request.form['confirm_password']
save_btn=request.form['save_btn']
# fetching data from form..
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'mnc_number' : mnc_number,
'state' :state,
'dob': dob,
'gender' : gender,
'password' : password,
'confirm_password' : confirm_password,
'created_at' :[dt_string]
}
us = DelegateModel()
#calling insert method using that object..
if(password == confirm_password):
check_email = us.get_delegates_email(email)
# che_email_user_id = check_email.user_id
print(check_email)
check_mobile = us.get_delegates_mobile(mobile)
# che_mobi_user_id = check_mobile.user_id
print(check_mobile)
if (check_email == "success"):
flash('Email Already Exists.')
rem_list = ['password', 'confirm_password', 'created_at']
[data.pop(key) for key in rem_list]
return redirect (url_for ('delegate.AddDelegate' , delegate_data=data))
if (check_mobile == "success"):
flash('Mobile Number Already Exists.')
rem_list = ['password', 'confirm_password', 'created_at']
[data.pop(key) for key in rem_list]
return redirect (url_for ('delegate.AddDelegate' , delegate_data=data))
else:
insert_delegates = us.insert_delegates(data)
if insert_delegates:
if save_btn == "save":
print("inside loop")
flash('Registration Successfully .')
return redirect (url_for ('delegate.AddDelegate'))
else:
flash('Registration Successfully .')
return redirect (url_for ('delegate.DelegateIndex'))
else:
flash('Password and confirm password mismatch ')
return redirect (url_for('delegate.AddDelegate' , delegate_data=data))
@app.route('/delegate_post_save', methods = ["POST"])
def DelegatePostSave():
if request.method == "POST":
print('in post')
now = datetime.now()
# dd/mm/YY H:M:S
dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
name = request.form['name']
email = request.form['email']
mobile = request.form['mobile']
mnc_number = request.form['mnc_number']
state = request.form['state']
dob = request.form['dob']
gender = request.form['gender']
password = request.form['password']
confirm_password = request.form['confirm_password']
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file_path = 'static/uploads'
else :
pass
# fetching data from form..
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'mnc_number' : mnc_number,
'state' :state,
'dob': dob,
'gender' : gender,
'file_name': filename,
'file_path': file_path,
'password' : password,
'confirm_password' : confirm_password,
'created_at' :[dt_string]
}
us = DelegateModel()
#calling insert method using that object..
if(password == confirm_password):
check_email = us.get_delegates_email(email)
# che_email_user_id = check_email.user_id
print(check_email)
check_mobile = us.get_delegates_mobile(mobile)
# che_mobi_user_id = check_mobile.user_id
print(check_mobile)
if (check_email == "success"):
flash('Email Already Exists.')
rem_list = ['password', 'confirm_password', 'created_at']
[data.pop(key) for key in rem_list]
return redirect (url_for ('delegate.AddDelegate' , delegate_data=data))
if (check_mobile == "success"):
flash('Mobile Number Already Exists.')
rem_list = ['password', 'confirm_password', 'created_at']
[data.pop(key) for key in rem_list]
return redirect (url_for ('delegate.AddDelegate' , delegate_data=data))
else:
UPLOAD_FOLDER = '/static/uploads'
if file:
filename = secure_filename(file.filename)
path = os.path.join('core/static/uploads', file.filename)
file.save(path)
insert_delegates = us.insert_delegates(data)
if insert_delegates:
flash('Registration Successfully .')
if request.form['save_btn'] == "Save":
return redirect (url_for ('delegate.AddDelegate') )
else:
return redirect (url_for ('delegate.DelegateIndex'))
else:
flash('Some thing error.Try Again .')
return redirect (url_for ('delegate.DelegateIndex'))
else:
flash('Password and confirm password mismatch ')
return redirect (url_for('delegate.AddDelegate' , delegate_data=data))
ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'}
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/add_delegate' , methods = ["GET"])
def AddDelegate():
print('ín form')
data =request.args.get('delegate_data')
dele_id=request.args.getlist('row-check')
print("dele_id=",dele_id)
print("Data from url :")
print (data)
if data is None:
states = DelegateModel().get_states()
return render_template('delegates/add_delegate.html',states = states ,data = data)
else :
my_dict = ast.literal_eval(data)
print (type(my_dict))
states = DelegateModel().get_states()
return render_template('delegates/add_delegate.html',states = states ,data = my_dict)
@app.route('/delete_selected', methods=['POST','GET'])
def DeleteSelected():
#print("hi")
#print(request.form.getlist('checkbox'))
#ids=request.form.getlist('checkbox')
#
#print("deleted id :",ids)
#print( ",".join(ids))
#output = DelegateModel().delete_select(ids)
#flash('delegate name '+ ' '+ ",".join(ids) +' ' +' Deleted ! ' )
return redirect( url_for('delegate.test'))
@app.route('/success', methods = ['POST'])
def Success():
UPLOAD_FOLDER = '/static/uploads'
file = request.files['file']
if file:
filename = secure_filename(file.filename)
path = os.path.join('core/static/uploads', file.filename)
file.save(path)
print(path)
return render_template('delegates/success.html', filename=filename)
@app.route('/display')
def DisplayImage():
path = 'core/static/uploads'
files = os.listdir(path)
for f in files:
print(f)
return f
@app.route('/upload')
def Upload():
return render_template('delegates/success.html')
@app.route("/test" , methods=['GET', 'POST'])
def test():
#return "haiii"
status = 1
if session.get('delegate'):
delegate = session.get('delegate')
# user_id = request.args.get('user_id')
delegate_id = delegate['delegate_id']
encrypted_delegate_id= Cryptography.encrypt(delegate_id)
delegate_output = DelegateModel().get_username(delegate_id)
name = delegate_output['name']
print("<<Welcome loggedin delegate >>" + name)
name = delegate_output['name']
try:
page = request.values["page"]
except:
page = 1
try:
limit = request.values["limit"]
except:
limit=10
page=conv_int(page)
limit=conv_int(limit)
if request.method == "POST":
print(request.values)
submit_btn=request.values['submit_btn']
if submit_btn == 'pre_btn':
print("prev")
prev_page = page -1
offset=int((prev_page-1)*limit)
data=DelegateModel().pagination_view(offset,limit)
return render_template('delegates/delegate_index.html' ,delegate_data= data,page=prev_page,offset=offset,limit=limit,name=name)
elif submit_btn == 'next_btn':
print("next")
next_page = page +1
offset=int((next_page-1)*limit)
data=DelegateModel().pagination_view(offset,limit)
return render_template('delegates/delegate_index.html' ,delegate_data= data,page=next_page,offset=offset,limit=limit,name=name)
elif submit_btn == 'delete selected':
ids=request.form.getlist('checkbox')
output = DelegateModel().delete_select(ids)
flash('delegate name '+ ' '+ ",".join(ids) +' ' +' Deleted ! ' )
return redirect( url_for('delegate.test'))
else:
print("start")
page=1
offset=int((page-1)*limit)
data=DelegateModel().pagination_view(offset,limit)
return render_template('delegates/delegate_index.html' ,delegate_data= data,limit=limit,offset=offset,page=page,name=name)
else:
print("page 1")
offset=int((page-1)*limit)
data=DelegateModel().pagination_view(offset,limit)
return render_template('delegates/delegate_index.html' ,delegate_data= data,limit=limit,offset=offset,page=page,name=name)
def conv_int(value):
try:
intval = int(value)
return intval
except:
print("An exception occurred")
return None
@app.route('/delegate_add_ajax', methods = ["POST"])
def DelegateAddAjax():
if request.method == "POST":
print('in post')
name = request.form['name']
email = request.form['email']
mobile = request.form['mobile']
password = request.form['password']
# fetching data from form..
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'password' : password,
'status' : 1 ,
'msg':'Inserted'
}
us = DelegateModel()
#calling insert method using that object..
if password:
print("check_email")
check_email = us.get_email(email)
# che_email_user_id = check_email.user_id
print(check_email)
check_mobile = us.get_mobile(mobile)
# che_mobi_user_id = check_mobile.user_id
print(check_mobile)
if (check_email == "success"):
print("check_mail")
data={'status' : 2 }
return json.dumps(data)
if (check_mobile == "success"):
print("check_mobile")
data={'status' : 3 }
return json.dumps(data)
else:
insert_users = us.insert_delegate(data)
if insert_users=='success':
print("Inserted")
return json.dumps(data)
else:
data={'status' : 1 ,'messge':'Not Inserted'}
return json.dumps(data)
@app.route('/getdata',methods = ["GET","POST"])
def GetData():
data =DelegateModel().get_data()
total =DelegateModel().total_row()
for total_row in total[0]:
print(int(total_row))
return render_template('delegates/mytable.html',mytable =data,total_row=total_row)
@app.route('/ajax', methods = ["GET", "POST"])
def Ajax():
return render_template('delegates/ajaxdelegate.html')
@app.route('/ajax_index', methods = ["GET", "POST"])
def Ajaxs():
return render_template('delegates/add_delegate_ajax.html')
@app.route('/base', methods = ["GET", "POST"])
def Base():
data =DelegateModel().ajax_all_data()
print(data)
return render_template('delegates/add_delegate_ajax.html',delegate_data=data)
@app.route('/delegate_registers' , methods = ["GET"])
def Registers():
print('ín form')
data =request.args.get('delegate_data')
print("Data from url :")
print (data)
if data is None:
states = DelegateModel().get_states()
return render_template('delegates/delegate_register.html',states = states ,data = data)
else :
my_dict = ast.literal_eval(data)
print (type(my_dict))
states = DelegateModel().get_states()
return render_template('delegates/delegate_register.html',states = states ,data = my_dict)
@app.route('/ajax_register' , methods = ["GET"])
def Reg():
print('ín form')
data =request.args.get('delegate_data')
print("Data from url :")
print (data)
if data is None:
return render_template('delegates/ajaxregister.html',data = data)
else :
my_dict = ast.literal_eval(data)
print (type(my_dict))
return render_template('delegates/ajaxregister.html',data = my_dict)
@app.route('/delegate_index1' , methods = ["GET" ,"POST"])
def DelegateIndex1():
data =DelegateModel().get_data()
print (data)
return render_template('delegates/view_delegates.html',delegate_data=data)
@app.route('/delegate_logout1', methods = ["GET", "POST"])
def Logout():
return redirect(url_for('delegate.login'))
@app.route('/ajax_post_login', methods = ["GET","POST"])
def AjaxPostLogin():
print("inside login")
if request.method == 'POST':
email = request.form['email']
password = request.form['password']
print(email)
print(password)
if not email or not password:
flash('Please enter email and password')
return redirect (url_for('delegate.login'))
else :
us = DelegateModel()
output = us.get_delegates_email_data(email)
if output != None :
print("form input password " + password)
db_pass = output['password']
print(" db password " + db_pass )
if password == db_pass:
#flash('Regsitration Successfully Saved ! ' )
print(output['password'] + "and given password is " + password )
msg = 'success'
else:
msg = 'No-Match-Password'
else:
msg = 'No-data'
return jsonify(msg)
@app.route('/ajax_login')
def login():
#print('ín login')
return render_template('delegates/dele_login.html')
@app.route('/delete' ,methods = ["GET","POST"])
def Delete():
print("Inside in contoller delete")
id=request.form['delete']
id = int(id)
output = DelegateModel().delete(id)
print(output)
#flash('User name '+ ' '+name +' ' +' Deleted ! ' )
return json.dumps(output)
@app.route('/edit',methods = ["GET","POST"])
def Edit():
print("Inside in contoller edit")
id = request.form['edit']
id = int(id)
output = DelegateModel().edit(id)
print(output)
return json.dumps(output)
@app.route('/post_edit',methods = ["GET","POST"])
def PostEdit():
if request.method == "POST":
ids=request.form['id']
id=int(ids)
name = request.form['name']
email = request.form['email']
mobile = request.form['mobile']
password = request.form['password']
# fetching data from form..
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'password' : password
}
output = DelegateModel().update(id,data)
if output=='success':
flash("Updated !")
data={'status' : 1 ,'update':'Updated'}
return json.dumps(data)
else:
return "not edited"
@app.route('/download/report/csv')
def downloadreport():
result = DelegateModel().get()
output = io.StringIO()
writer = csv.writer(output)
# writer = csv.writer(output,delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMA)
line = ['Id', 'Name', 'Email', 'Mobile']
writer.writerow(line)
for row in result:
line = [str(row['id']) , row['name'] , row['email'] , row['mobile']]
writer.writerow(line)
output.seek(0)
return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename=data_report.csv"})
@app.route('/get_filter',methods = ["GET","POST"])
def GetNameFilter():
print("Inside in contoller filter name")
name = request.form['serach_name']
mobile = request.form['mobiles']
email = request.form['emails']
print(email)
print("inside name")
data =DelegateModel().get_filter_data(name,email,mobile)
print(data)
total =DelegateModel().total_filter_data(name,email,mobile)
for total_row in total[0]:
print(int(total_row))
return render_template('delegates/mytable.html',mytable =data,total_row=total_row)
@app.route('/download_report',methods = ["GET","POST"])
def DownloadReport():
print("Inside in contoller report")
name = request.form['serach_name']
mobile = request.form['mobiles']
email = request.form['emails']
print(name)
print("inside report")
data =DelegateModel().get_filter_data(name,email,mobile)
output = io.StringIO()
writer = csv.writer(output)
# writer = csv.writer(output,delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMA)
line = ['Id', 'Name', 'Email', 'Mobile']
writer.writerow(line)
for row in data:
line = [str(row['id']) , row['name'] , row['email'] , row['mobile']]
writer.writerow(line)
output.seek(0)
return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename=data_report.csv"})
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists