Sindbad~EG File Manager

Current Path : /home/numerotech/paymentapi.numerotech.com/paymentapi/core/controller/
Upload File :
Current File : //home/numerotech/paymentapi.numerotech.com/paymentapi/core/controller/BOController.py

from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,Response,jsonify
from core.model.BOModel import BOModel
from random import randint
import datetime
from datetime import timedelta,date,datetime
import requests, json
# from .. import Cryptography
from flask import session, app
from instamojo_wrapper import Instamojo

import hashlib
from .. import config
import flask
import io
# from .. import Cryptography
# import csv

from flask import send_file
# from xlsxwriter import Workbook
# from re import L
# import schedule
# import time

# from openpyxl import Workbook
import csv



# from pyexcel.cookbook import merge_all_to_a_book
# import pyexcel.ext.xlsx # no longer required if you use pyexcel >= 0.2.2 
# import glob



from flask import session
from flask import request, Blueprint, jsonify
from sqlalchemy import create_engine, select, MetaData, Table,text
from sqlalchemy.sql import and_, or_

from core import app

engine = create_engine(app.config['DATABASE_URI'],pool_pre_ping=True,pool_recycle=3600)




import base64

app = Blueprint('bo', __name__)





@app.route('/admin', methods = ["GET", "POST"])
def BOAdmin():
	if session.get('admin'):
		admin_data = session.get('admin')
		admin_id   = admin_data["admin_id"]
		appmasters = BOModel().appMasterRecords(admin_id)

	
		return render_template('backoffice/admin_dashboard.html' ,appmasters= appmasters)
	else :
		return render_template('backoffice/bologin.html')

# Post_login1 
@app.route('/post_boadmin', methods = ["POST"])
def PostBOAdmin():
	if request.method =="POST" :
		form_email    = request.form['email']
		form_password = request.form['password']
		admin_output  = BOModel().getAdminByEmail(form_email)
		if admin_output : 
			db_pass =  admin_output['password']
			if form_password == db_pass:
				admin_id = admin_output['admin_id']

				session['admin']   =  admin_output
				flash("Successfully login" ,"successMsg")
				return redirect (url_for('bo.BOAdmin'))
			else:
				flash("Password is mismatch","errorMsg")
				return redirect (url_for('bo.BOAdmin'))
		else:
			flash("Email id not registered.","errorMsg" )
			return redirect (url_for('bo.BOAdmin'))
	else :
		return "Method not allowed"	


# logout route
@app.route('bo_logout', methods = ["GET", "POST"])
def BOLogout():
	if session.get('admin') :
		session.pop('admin')
		session.pop('_flashes', None)
		return redirect(url_for('bo.BOAdmin'))
	else :
		return redirect(url_for('bo.BOAdmin'))	



@app.route('/payment_index/<int:am_id>', methods = ["GET", "POST"])
def PayemntIndex(am_id):
	if session.get('admin'):
		# user = session.get('user')
		# admin_id = user['admin_id']
		# app_mid int(4),p_status varchar(45),u_name varchar(65) ,u_email varchar(45),u_mobile varchar(30),pay_id int(11),f_date varchar(35) ,t_date varchar(35) , p_method varchar(60)
		p_status = None
		u_name  = None
		u_email  = None
		u_mobile = None
		pay_id   = None
		f_date   = None
		t_date   = None
		p_method = None


		getPayments = BOModel().getPaymentRecords(am_id,p_status,u_name,u_email,u_mobile,pay_id,f_date,t_date,p_method)

		html_data  =  render_template('backoffice/payment_index_table.html' ,data= getPayments)
		app_name   = getPayments[0]["app_name"]
		
		return render_template('backoffice/payment_index.html' ,html_data= html_data , am_id= am_id,app_name= app_name)
	else :
		return render_template('backoffice/bologin.html')		


@app.route('/get_payment_filter/<am_id>', methods = ["GET", "POST"])
def GetPaymentFilter(am_id):
	if session.get('admin'):
		try:
			# am_id   = request.values.get("am_id") or 0
			p_status  = request.values.get("status") or None
			u_name    = request.values.get("name") or None
			u_email   = request.values.get("email") or None
			u_mobile  = request.values.get("mobile") or None
			pay_id    = request.values.get("payment_id") or None
			f_date    = request.values.get("from_date" ) or None
			t_date    = request.values.get("to_date") or None
			


			p_method  = None
			if u_name :
				u_name   = u_name.strip()
			if u_email :
				u_email  = u_email.strip()
				
			if u_mobile:
				u_mobile = u_mobile.strip()
			if pay_id :
				pay_id   = pay_id.strip()	


			# getPayments = BOModel().getPaymentRecords(0,None,None,u_email,None,0,None,None,None)
			getPayments = BOModel().getPaymentRecords(am_id,p_status,u_name,u_email,u_mobile,pay_id,f_date,t_date,p_method)
			html_data   =  render_template('backoffice/payment_index_table.html' ,data= getPayments)
			if getPayments : 
				app_name   = getPayments[0]["app_name"]
				stauts = 1
				msg    = " Records exits "
				html_data = html_data
			else :
				stauts = 2
				msg    = "Records not exists" ;
				html_data = html_data	
		except Exception as e:
				stauts = 401
				msg    = str(e)
				html_data = ""
			# raise e
		data = {"html_data" : html_data ,"status" : stauts , "msg" : msg}	
	
		return 	json.dumps(data, default=str)
		
	else :
		data = {"html_data" : html_data ,"status" : 3 , "msg" : "Invalid Login"}	
		return 	json.dumps(data, default=str)




@app.route('/download_records/<int:am_id>' ,methods = ["GET", "POST"])
def DownloadRecords(am_id):
	if session.get('admin'):
		try:
			# am_id     = request.values.get("am_id") or 0
			p_status  = request.values.get("status") or None
			u_name    = request.values.get("name") or None
			u_email   = request.values.get("email") or None
			u_mobile  = request.values.get("mobile") or None
			pay_id    = request.values.get("payment_id") or None
			f_date    = request.values.get("from_date" ) or None
			t_date    = request.values.get("to_date") or None
			
			p_method  = None
			if u_name :
				u_name   = u_name.strip()
			if u_email :
				u_email  = u_email.strip()
				
			if u_mobile:
				u_mobile = u_mobile.strip()
			if pay_id :
				pay_id   = pay_id.strip()	


			# getPayments = BOModel().getPaymentRecords(0,None,None,u_email,None,0,None,None,None)
			result = BOModel().getPaymentRecords(am_id,p_status,u_name,u_email,u_mobile,pay_id,f_date,t_date,p_method)


			output = io.StringIO()
			writer = csv.writer(output)
			# writer = csv.writer(output,delimiter=' ',quotechar='|', quoting=csv.QUOTE_MINIMA)
			line = ['Name', 'Email', 'Mobile', 'Amount' , 'Txn-ID' ,'status']
			writer.writerow(line)
			for row in result:
				line = [row['name'] , row['email'] , row['mobile'] , row['amount'] , row['payment_id'] ,row['payment_status'] ]
				writer.writerow(line)

			output.seek(0)
			return Response(output, mimetype="text/csv", headers={"Content-Disposition":"attachment;filename=data_report.csv"})
			

		except  Exception as e:
			
			flash("Error : " + str(e))
			return redirect(url_for('bo.PayemntIndex', am_id=am_id))
		
	else : 
		flash("Invalid login")
		return redirect(url_for('bo.PayemntIndex', am_id=am_id))



@app.route('/export_excel/<int:am_id>', methods=['GET'])
def ExportExcel(am_id):
	p_status = None
	u_name   = None
	u_email  = None
	u_mobile = None
	pay_id   = None
	f_date   = None
	t_date   = None
	p_method = None
	# getPayments = BOModel().getPaymentRecords(0,None,None,u_email,None,0,None,None,None)
	getPaymentRecords_1(am_id,p_status,u_name,u_email,u_mobile,pay_id,f_date,t_date,p_method)
	return "success"
	# dict_1 = dict(enumerate(result))
	
	
	# return "wait"
	# result = {result[i]: result[i + 1] for i in range(0, len(result), 2)}
	# your_dict = {key: i for i, key in enumerate(result)}

	wb = Workbook('static/images/workbook.xlsx')
	wb.add_worksheet('All Data')

	for item in dict_1.fetchall():
		wb.write(item)
		
	wb.close()

	return send_file('path/to/workbook.xlsx')	


	# values = execute("SELECT * from table",[])
 #    wb = Workbook('path/to/workbook.xlsx')
 #    wb.add_worksheet('All Data')

 #    for item in values.fetchall():
 #        wb.write(item)
 #    wb.close()

 #    return send_file('path/to/workbook.xlsx')	
	
	def getPaymentRecords_1(am_id,p_status,u_name,u_email,u_mobile,pay_id,f_date,t_date,p_method):
		return "i am fnction"
		wb = Workbook('static/images/workbook.xlsx')
		wb.add_worksheet('All Data')

		connection = engine.raw_connection()
		cursor = connection.cursor()
		cursor.callproc("usp_payment_data",[am_id,p_status,u_name,u_email,u_mobile,pay_id,f_date,t_date,p_method])
	  
		if cursor.description :
			columns = [column[0] for column in cursor.description]
			results = []
			for row in cursor.fetchall():
				wb.write(item)
				
			wb.close()	
			cursor.close()
			connection.commit()
			return send_file('static/images/workbook.xlsx')   	
				

	


# @app.route('/job', methods=['GET'])
# def job():
# 	now = datetime.now()
# 	dt_string    = now.strftime("%Y-%m-%d %H:%M:%S")

# schedule.every(10).seconds.do(job)
# schedule.every(10).minutes.do(job)
# schedule.every().hour.do(job)
# schedule.every().day.at("10:30").do(job)
# schedule.every(5).to(10).minutes.do(job)
# schedule.every().monday.do(job)
# schedule.every().wednesday.at("13:15").do(job)
# schedule.every().minute.at(":17").do(job)

# while True:
# 	schedule.run_pending()
# 	time.sleep(1)		
				




			

# @app.route('/download_excel', methods=['GET'])
# def DownloadExcel():
# 	# merge_all_to_a_book(glob.glob("/Users/apple/Python-Flask/GIT/paymentAPI/paymentapi/core/static/csv/sample.csv"), "output.xlsx")
# 	wb = Workbook()
# 	ws = wb.active
# 	with open('/Users/apple/Python-Flask/GIT/paymentAPI/paymentapi/core/static/csv/sample.csv', 'r') as f:
# 	    for row in csv.reader(f):
# 	        ws.append(row)
# 	return   wb.save('name.xlsx')
# 	return send_from_directory(directory=app.config['CSV_FOLDER'], filename=filename)



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