from flask import Flask , render_template , Markup , jsonify , session , request , send_file
import json
import os
from json import dumps
import collections
import random
import string
from zipfile import ZipFile
app = Flask ( __name__ , static_url_path = ' ' , static_folder = " static " , template_folder = " templates " )
app . jinja_env . add_extension ( ' jinja2.ext.loopcontrols ' )
# SETTING THE VARIABLES
path = " /static/files/ "
max_selected_items = 30
#move this list to Jinja so it can be placed in layout
#give back clicked value
# librarians = ["Alana", "Gentian", "Laurie", "Matias", "Scott", "Stacy", "Max", "Clara_B", "Michelle", "Clara_J_B", "Karen", "Lumsden_Primary_School", "Aaron", "Leo", "Maria", "Laura", "Honey", "Tender_Center", "wdka", "Naomi", "Cristina", "Julie", "ssw", "cyberspace", "Hannah", "Katarina", "Anastasia", "Kimmy", "Marie","Katherine", "Allison", "Mariana", "Viki", "Alice", "Eric", "hks", "cbk", "Sophie", "Antonio", "Jeremiah", "Angela", "Renee", "Marta", "Katherine", "Anna", "Auryn", "Ashley", "Anne", "Denise", "Eva", "Jonnah", "Kitty", "Masha", "Mia", "Cian", "Senke", "Maud", "Jinnie", "Rubin", "Julia", "Alana", "Gentian", "Laurie", "Matias","Scott", "Stacy"]
librarians = [ ]
files_without_folders = [ ]
with open ( ' static/js/mergedjson.json ' , ' r ' , encoding = ' utf8 ' ) as filesandnames :
filetoname_dict = json . load ( filesandnames )
#get full list librarians from json (printed later through global variable)
for file in filetoname_dict :
for name in file [ " librarian " ] :
librarians . append ( str ( name ) )
librarians = list ( dict . fromkeys ( librarians ) )
#this value we should get from template
librarianselected = " Ruben "
#go from librarian name to file
for file in filetoname_dict :
# if librarianselected in file["librarian"]:
thedebris = file [ " debrisname " ]
#apply regex to the debris
thedebris = os . path . basename ( thedebris )
files_without_folders . append ( str ( thedebris ) )
# print(str(librarianselected)+" contributed with the following debris : "+str(thedebris))
#this value we should get from template
fileselected = filetoname_dict [ 1 ] [ " debrisname " ]
#go from file name to librarian name
for file in filetoname_dict :
if fileselected in file [ " debrisname " ] :
thelibrarian = file [ " librarian " ]
print ( " librarians for " + str ( fileselected ) + " are: " + str ( thelibrarian ) )
print ( " --------------------------------------------------- " )
# preparing a index.json file of files
index_dict = { }
@app . route ( " / " , methods = [ ' POST ' , ' GET ' ] )
def home ( ) :
if request . args :
# We have our query string nicely serialized as a Python dictionary
args = request . args
# We'll create a string to display the parameters & values
# serialized = ", ".join(f"{k}: {v}" for k, v in request.args.items())
# Display the query string to the client in a different format
# return f"(Query) {serialized}", 200
urllibrarian = request . args . getlist ( ' librarian ' ) # new
urlmethod = request . args . getlist ( ' method ' ) # new
for a in urllibrarian :
print ( ' urllibrarian is: ' + a )
for b in urlmethod :
print ( ' urlmethod is: ' + b )
#unsure if Im really using that for now I think not
# selected = "textbysomeone"
# selections = collections.deque(session['selection'], maxlen=max_selected_items) #?
# selections.append(selected)
# session['selection'] = list(selections)
return render_template ( ' layout.html ' , urllibrarian = urllibrarian , urlmethod = urlmethod , filetoname_dict = filetoname_dict , librarians = librarians , files_without_folders = files_without_folders ) # new
@app . route ( ' /about/ ' )
def about ( ) :
selectedstuff = session [ ' selection ' ]
return render_template ( ' about.html ' , selectedstuff = selectedstuff )
@app . route ( ' /exchange ' )
def exchange ( ) :
return render_template ( ' exchange.html ' )
# @app.route('/test/', methods=['GET','POST'])
# def test():
# print("test")
# clicked=None
# bundle = "bundle.zip"
# # zipObj = ZipFile(bundle, 'w')
#
# if request.method == "POST":
# # clicked=request.form['data']
# listofselecteddocs = request.get_json()
# print("hallo")
# print(listofselecteddocs)
# print("hola")
#
#
# with ZipFile(bundle, 'w') as zipObj2:
# # Add multiple files to the zip
#
# readmeabsname = 'static/default-files/hello.txt'
# readmearcname = "hello.txt"
# zipObj2.write(readmeabsname,readmearcname)
#
# for doc in listofselecteddocs:
# absname = 'static/files/'+doc
# print(doc)
# arcname = os.path.basename(doc)
# zipObj2.write(absname, arcname)
#
#
#
# return send_file(bundle, mimetype='application/zip', attachment_filename="bundle.zip", as_attachment=True)