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") # create a ZipFile object # Add multiple files to the zip zipObj.write('static/files/'+listofselecteddocs[0]) zipObj.write('static/files/'+listofselecteddocs[1]) zipObj.write('static/default-files/hello.txt') # close the Zip File # return render_template('test.html') # return send_file(bundle, mimetype='application/zip', as_attachment=True, attachment_filename=bundle) # TEST # print("sending file...") # result = send_file(bundle, as_attachment=True) # print("file sent, deleting...") # os.remove(bundle) # return result zipObj.close() return send_file(bundle, mimetype='application/zip', attachment_filename="hello.zip", as_attachment=True)