Sindbad~EG File Manager
from flask import Response
from os import listdir
import io
from io import StringIO
from io import BytesIO
import xlsxwriter
from xlsxwriter import Workbook
import xlwt
import flask_excel as excel
from collections import defaultdict
class XLSEXPORT:
# **** Sample input data *****
# @app.route('/sample_single_xls_export')
# def dwonload_sample_single_xl():
# header = {'full_name':'Name','email':'Email Id','mobile':'Mobile Number'}
# rows = [
# {
# "full_name":"Mukesh Kumar",
# "email":"mukesh@numerotec.com",
# "Phone":"6379348963",
# },
# {
# "full_name":"Sridhar r",
# "email":"sridhar.r@numerotec.com",
# "Phone":"9988776655",
# },
# ]
# file_name = "Sample_single"
# data = XLSEXPORT().export_singlesheet_xls(rows,file_name,header)
# return data
# **** Sample input data *****
# @app.route('/sample_multiple_xls_export')
# def dwonload_sample_multiple_xl():
# header = {'full_name':'Name','email':'Email Id','mobile':'Mobile Number'}
# sheet_name = ['abstract','delegate']
# rows = {'abstract':[
# {
# "full_name":"Mukesh Kumar",
# "email":"mukesh@numerotec.com",
# "Phone":"6379348963",
# },
# {
# "full_name":"Sridhar r",
# "email":"sridhar.r@numerotec.com",
# "Phone":"9988776655",
# },
# ],'delegate':[
# {
# "full_name":"Karthick",
# "email":"karthick@numerotec.com",
# "Phone":"6444332483",
# },
# {
# "full_name":"Sridhar r",
# "email":"sridhar.r@numerotec.com",
# "Phone":"9988776655",
# },
# ]}
# file_name = "Sample_multiple"
# data = XLSEXPORT().export_multiplesheet_xls(sheet_name,rows,file_name,header)
# return data
def export_singlesheet_xls(self,row_data,file_name,header=None):
output = io.BytesIO()
Workbook = xlwt.Workbook()
sh = Workbook.add_sheet("sheet1")
idx = 0
a = 0
if row_data:
if header:
row_keys = list(header.keys())
header = list(header.values())
else:
header = list(row_data[0].keys())
row_keys = header
for row in header:
sh.write(0,a,row)
a+=1
b=0
for row in row_data:
for i in row_keys:
sh.write(idx+1, b, row[i])
b+=1
b=0
idx+=1
Workbook.save(output)
output.seek(0)
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+str(file_name)+".xls"})
return None
def export_multiplesheet_xls(self,sheet_names,row_data,file_name,header=None):
output = io.BytesIO()
Workbook = xlwt.Workbook()
style_1=xlwt.easyxf('alignment: wrap True;''pattern: pattern solid, fore_colour yellow;''font: colour black, bold True, name Calibri, height 200; align: vert centre, horiz centre;border: left thin,right thin,top thin,bottom thin')
lst_sheetname = []
if sheet_names and row_data:
for d in sheet_names:
sheet_name = d.replace("/","").strip()
if len(sheet_name)>27:
sheet = sheet_name[:27]+'..'
else:
sheet = sheet_name
if sheet in lst_sheetname:
sheet_1 = d
sheet_1 = 'sheet-'+str(sheet_1)
sheet_1 = sheet_1.replace("/","").strip()
sheet = sheet_1[:27] + '..' * (len(sheet_1) > 27)
print(sheet)
lst_sheetname.append(sheet)
# sheet_name = d[:27] + '..' * (len(d) > 27)
sh = Workbook.add_sheet(sheet)
idx = 0
a = 0
print(header)
if header:
row_keys = list(header.keys())
header1 = list(header.values())
else:
header1 = list(row_data[d][0].keys())
row_keys = header1
for row in header1:
sh.write(0,a,row,style=style_1)
a+=1
b=0
for row in row_data[d]:
for i in row_keys:
sh.write(idx+1, b, row[i])
b+=1
b=0
idx+=1
Workbook.save(output)
output.seek(0)
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+str(file_name)+".xls"})
return None
def evaluation_summary_xls(self,abstract_data,marks_data,evaluator,abs_type,file_name):
abstracts = defaultdict(list) # sub list with key
evaluator_list = defaultdict(list) # sub list with key
marks_list = defaultdict(list)
categories = []
for r in abstract_data:
abstracts[r["cat_name"]].append(r)
if r["cat_name"] not in categories:
categories.append(r["cat_name"])
for r in marks_data:
marks_list[r["cat_name"]].append(r)
for r in evaluator:
evaluator_list[r["cat_name"]].append(r)
output = io.BytesIO()
Workbook =xlwt.Workbook()
for cat in categories:
full_name=[]
for r in evaluator_list[cat]:
f_name=r['full_name']
full_name.append(f_name)
if abs_type == "IC":
eva_length = len(full_name)+11
col_name = ["Abs_no","Title","Synopsis","Chief instrutor","Date of Birth","Age","Membership No","Email","Mobile","Presentation type","Co-Instructor"]+full_name + ["Assigned Evaluators","Completed Evaluators","Total","Average"]
export_columns = ["abs_no","title","synopsis","presenting_author","dob","age","presenting_membershipno","presenting_email","presenting_mobile","presenting_type","co_author"] + full_name + ["total_eva","evaluated","total_marks","percentage"]
else:
eva_length = len(full_name)+11
col_name = ["Abs_no", "Title","Synopsis","Chief author","presenting author","Age","Membership No","Email","Mobile","Presentation type","Co-Author"]+full_name + ["Assigned Evaluators","Completed Evaluators","Total","Average"]
export_columns = ["abs_no","title","synopsis","chief_author","presenting_author","age","presenting_membershipno","presenting_email","presenting_mobile","presenting_type","co_author"] + full_name + ["total_eva","evaluated","total_marks","percentage"]
marks_dict = defaultdict(list) # sub list with key
for r in marks_list[cat]:
marks_dict[r["e_full_name"]].append(r)
sheet_name = cat.replace("/","").strip()
sheet_name = sheet_name[:25] + '..' * (len(sheet_name) > 25)
sh = Workbook.add_sheet(sheet_name)
idx = 0
a = 0
for row in col_name:
sh.write(0,a,row)
sno_val = 0
a+=1
total_eva = len(full_name)+11
col_len = len(export_columns)
style=xlwt.easyxf('pattern: pattern solid, fore_colour yellow;' 'font: colour black, bold True, name Calibri, height 180; align: vert centre, horiz centre;border: left thin,right thin,top thin,bottom thin')
for data in abstracts[cat]:
b=0
c=0
d=0
for i in export_columns:
if int(col_len) >= int(c):
if c > 10 :
if int(c) < int(eva_length):
for j in marks_dict[i]:
if data['abs_id'] == j["abs_id"]:
if data["pa_user_id"] == j["eva_user_id"]:
sh.write(idx+1, b, 'N/A',style=style)
else:
sh.write(idx+1, b, j["marks_total"])
d+=1
else:
sh.write(idx+1, b, data[i])
else:
sh.write(idx+1, b, data[i])
b+=1
if int(total_eva) == d:
c = 0
d = 0
else:
c+=1
else:
c = 0
d = 0
b=0
idx+=1
Workbook.save(output)
output.seek(0)
return Response(output, mimetype="application/ms-excel", headers={"Content-Disposition":"attachment;filename="+file_name+".xls"})
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists