Sindbad~EG File Manager
from flask import render_template,request,flash,redirect,url_for, Blueprint,session,json,jsonify
import datetime
from datetime import timedelta,date,datetime
from .. import Cryptography,Auth,RouteGroup,Helper,Custom,AWSUpload
from core.model.MembersModel import MembersModel
from flask import app
import math
import os
from collections import defaultdict
from os.path import join, dirname, realpath
import boto3, botocore
from botocore.exceptions import ClientError
from PIL import Image
import io
import json
from random import randint
from werkzeug.utils import secure_filename
import string
from flask import Flask
import requests
from core import app
import base64
app = Blueprint('members', __name__)
@app.route('/',methods=["GET","POST"])
@app.route('/dashboard',methods=["GET","POST"])
@RouteGroup.login_required
def Dashboard():
member_data = Auth.user()
member_name = member_data['member_name']
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d")
get_data = MembersModel().GetData(current_dt)
if get_data:
for index,value in enumerate(get_data):
if index == 0 :
visitor_count = value
if visitor_count :
for v in visitor_count:
visitor_count = v["visitor_count"]
if index == 1 :
member_count = value
if member_count :
for m in member_count:
member_count = m["member_count"]
if index == 2 :
member_details = value
return render_template('members/dashboard.html',data=get_data,visitor_count=visitor_count,member_count=member_count,member_name=member_name)
@app.route('/visitor_reports',methods=["GET","POST"])
@RouteGroup.login_required
def VisitorReports():
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d")
curr_dt = now.strftime("%d-%m-%Y")
visitor_list = defaultdict(list)
get_data = MembersModel().GetData(current_dt)
if get_data:
for index,value in enumerate(get_data):
if index == 0 :
visitor_count = value
if index == 1 :
member_count = value
if index == 2 :
member_details = value
if index == 3 :
visitor_details = value
for r in visitor_details:
visitor_list[r["member_id"]].append(r)
return render_template('members/visitors_details.html',data=get_data,member_details=member_details,visitor_details=visitor_details,current_dt=curr_dt,visitor_list=visitor_list)
@app.route('/members_reg_form',methods=["GET","POST"])
@RouteGroup.login_required
def MembersRegForm():
get_member_data = MembersModel().GetMembersForPayment()
return render_template('members/members.html',data = get_member_data)
@app.route('/search_member_data',methods=["GET","POST"])
@RouteGroup.login_required
def SearchMemberData():
search_text = request.values.get("member_name") or None
get_data = MembersModel().Getmembers(search_text)
if get_data:
for i in get_data:
member_id = i["member_id"]
member_name = i["member_name"]
html_data = render_template('members/members_table.html',data=get_data,member_id=member_id,member_name=member_name)
data = { "html_data": html_data,"status":1}
return json.dumps(data,default =str)
else:
data = { "status":2,"msg":"Record not found"}
return json.dumps(data,default =str)
@app.route('/select_member_data',methods=["GET","POST"])
@RouteGroup.login_required
def SelectMemberData():
member_id = request.values.get("member_id") or None
get_data = MembersModel().GetMembersdetails(member_id)
get_payment_mode = MembersModel().Get_payment_mode()
if get_data:
for i in get_data:
member_id = i["member_id"]
member_name = i["member_name"]
html_data = render_template('members/visitors_reg_form.html',data=get_data,member_id=member_id,member_name=member_name,payment_mode=get_payment_mode)
data = { "html_data": html_data,"status":1}
return json.dumps(data,default =str)
@app.route('/insert_visitors', methods=["POST"])
def InsertVisitors():
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
member_id = request.form.get('member_id') or None
visitor_name = request.form.get('visitor_name') or None
mobile = request.form.get('mobile') or None
email = request.form.get('email') or None
business_name = request.form.get('business_name') or None
address = request.form.get('address') or None
city = request.form.get('city') or None
transaction_id = request.form.get('transaction_no') or None
mode_of_payment_id = request.form.get('mode_of_payment_id') or None
amount = 1500
data = {
'member_id' : member_id,
'visitor_name' : visitor_name,
'mobile' : mobile,
'email' : email,
'business_name' : business_name,
'address' : address,
'city' : city,
'transaction_no': transaction_id,
'mode_of_payment_id' : mode_of_payment_id,
'amount' : amount,
'created_at' : current_dt,
'register_on' : current_dt
}
v_log_id = MembersModel().insert_visitors(data)
if not v_log_id:
return jsonify({'status': 0, 'msg': 'Record not inserted'})
visitor_data = {'status': 1, 'msg': 'Visitor registered successfully', 'v_log_id': v_log_id }
biz_card_front_side = request.files.get('biz_card_front_side_url')
biz_card_back_side = request.files.get('biz_card_back_side_url')
visitor_photo = request.files.get('visitor_photo_url')
payment_proof = request.files.get('payment_proof')
is_biz_card_front_side = 0
is_biz_card_back_side = 0
is_visitor_photo = 0
is_payment_proof = 0
# biz_card_front_side image upload function start
if biz_card_front_side :
image_name = "bni_biz_card_front_"
foldername = "bni_biz_card_front_side/"
is_biz_card_front_side = 1
file = biz_card_front_side
if int(is_biz_card_front_side) == 1:
file_upload = AwsFileUpload(v_log_id,file,image_name,foldername,upload_type=1)
else:
file_upload = ''
# biz_card_front_side image upload function end
if biz_card_back_side :
image_name = "biz_card_back_side_"
foldername = "bni_biz_card_back_side/"
is_biz_card_back_side = 1
file = biz_card_back_side
if int(is_biz_card_back_side) == 1:
file_upload = AwsFileUpload(v_log_id,file,image_name,foldername,upload_type=2)
else:
file_upload = ''
if visitor_photo :
image_name = "visitor_photo_"
foldername = "bni_visitor_photos/"
is_visitor_photo = 1
file = visitor_photo
if int(is_visitor_photo) == 1:
file_upload = AwsFileUpload(v_log_id,file,image_name,foldername,upload_type=3)
else:
file_upload = ''
if payment_proof :
image_name = "payment_proof_"
foldername = "bni_payment_proof/"
is_payment_proof = 1
file = payment_proof
if int(is_payment_proof) == 1:
file_upload = AwsFileUpload(v_log_id,file,image_name,foldername,upload_type=4)
else:
file_upload = ''
html_data = render_template('members/members.html',v_log_id=v_log_id)
return jsonify({"html_data": html_data, "status": 1,"visitor_data":visitor_data})
def AwsFileUpload(v_log_id,file,image_name,foldername,upload_type):
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
pg_cert_name = None
pg_cert_path = None
bucket = "test-memberapp"
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(file_name)+ datetime.now().strftime("%Y%m%d-%H%M%S") +file_extension
# if " " in filename_str :
# filename_str = filename_str.replace(" ","")
v_log_id = str(v_log_id) if v_log_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://test-memberapp.s3.ap-southeast-1.amazonaws.com/"+foldername
pg_cert_path = file_path
pg_cert_name = filename_str
msg = "success"
if upload_type == 1:
updated_data = { "biz_card_front_file_name" : pg_cert_name,"biz_card_front_path" : pg_cert_path}
elif upload_type == 2:
updated_data = { "biz_card_back_file_name" : pg_cert_name,"biz_card_back_path" : pg_cert_path}
elif upload_type == 3:
updated_data = { "visitor_photo_file_name" : pg_cert_name,"visitor_photo_path" : pg_cert_path}
elif upload_type == 4:
updated_data = { "payment_proof_file_name" : pg_cert_name,"payment_proof_path" : pg_cert_path}
MembersModel().update_visitor(v_log_id,updated_data)
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(updated_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(updated_data,default =str)
@app.route('/payment_success/<v_log_id>',methods=["GET"])
def PaymentSuccess(v_log_id):
get_visitor_details = MembersModel().Get_visitor_details(v_log_id)
get_payment_mode = MembersModel().Get_payment_mode()
return render_template('members/payment_success.html',visitor_data=get_visitor_details,payment_mode=get_payment_mode)
@app.route('/members_payment',methods=["GET"])
@RouteGroup.login_required
def getMembersPayment():
members = MembersModel().GetMembersForPayment()
return render_template('members/members_payment.html',members=members)
@app.route('/select_member_payment_details',methods=["GET"])
@RouteGroup.login_required
def SelectMemberPaymentDetails():
member_name = request.values.get("member_name") or None
get_data = MembersModel().Getmembers(member_name)
get_member_payment_for = MembersModel().GetMembersPaymentFor()
get_payment_mode = MembersModel().Get_payment_mode()
if get_data:
for i in get_data:
member_id = i["member_id"]
member_name = i["member_name"]
html_data = render_template('members/member_payment_details.html',data=get_data,member_id=member_id,member_name=member_name,member_payment=get_member_payment_for,payment_mode=get_payment_mode)
data = { "html_data": html_data,"status":1}
return json.dumps(data,default =str)
@app.route('/visitor_report_page',methods=["GET"])
@RouteGroup.login_required
def Visitor_report_page():
now = datetime.now()
current_dt = now.strftime("%Y-%m-%d %H:%M:%S")
curr_date = now.strftime("%d-%m-%Y")
get_visitor_payment_data = MembersModel().GetVisitorPaymentDetails(current_dt)
if get_visitor_payment_data:
for index,value in enumerate(get_visitor_payment_data):
if index == 0 :
visitor_total_amount = value
if visitor_total_amount :
for t in visitor_total_amount :
visitor_total_amount = t["visitor_total_amount"]
visitor_total_count = t["visitor_total_count"]
if index == 1:
payment_types = value
return render_template('members/visitor_report_page.html',total_amount=visitor_total_amount,visitor_total_count=visitor_total_count,curr_date=curr_date,payment_types=payment_types)
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists