Cristina Cochior
5 years ago
1 changed files with 334 additions and 0 deletions
@ -0,0 +1,334 @@ |
|||||
|
#!/Users/cristinacochior/venv/deplayer_python2/bin python2.7 |
||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from flask import Flask, Response, url_for, render_template, Markup, jsonify, redirect, request, flash, session, make_response |
||||
|
from config import Config |
||||
|
import json |
||||
|
import os |
||||
|
import datetime as dt |
||||
|
from datetime import datetime |
||||
|
from pprint import pprint |
||||
|
import re |
||||
|
from PIL import Image, ImageDraw, ImageFont |
||||
|
import numpy as np |
||||
|
from itertools import izip_longest |
||||
|
import codecs |
||||
|
|
||||
|
|
||||
|
app = Flask(__name__, static_url_path='', static_folder="static", template_folder="templates") |
||||
|
app.jinja_env.add_extension('jinja2.ext.loopcontrols') |
||||
|
app.config.from_object(Config) |
||||
|
|
||||
|
###################################################################################### |
||||
|
# SETTING THE VARIABLES |
||||
|
###################################################################################### |
||||
|
|
||||
|
# setting variables for holding paths, folder names and the one file for description |
||||
|
path = "/static/files/" |
||||
|
jsonfiles = [] #json files |
||||
|
fullpathjsonfiles = [] #fullpath for some situations |
||||
|
listingfiles= [] #fullpaths |
||||
|
listingdirectories = [] #paths |
||||
|
thefile = None #selected file for description |
||||
|
positioninarray = 8 #counter |
||||
|
listofdicts=[] #to be able to import and use json content |
||||
|
datafromjson = [] |
||||
|
|
||||
|
#test getting json file from id |
||||
|
id = "17" |
||||
|
jsonfilefordescription = "files/"+id+"/"+id+".json" |
||||
|
|
||||
|
#arrays with the user path of words and numbers |
||||
|
pathofwords = [] |
||||
|
pathofnumbers = [] |
||||
|
|
||||
|
#VARS FOR THE SESSIONS |
||||
|
app.secret_key = 'your secret' |
||||
|
app.config['SESSION_TYPE'] = 'filesystem' |
||||
|
|
||||
|
session = {} |
||||
|
session['wordpath'] = [] |
||||
|
session['clicktime'] = [] |
||||
|
session['id'] = [] |
||||
|
session['veryfirstnow'] = None |
||||
|
|
||||
|
#VARS FOR THE SCORES |
||||
|
wordpath = [] |
||||
|
idlist = [] |
||||
|
timelist = [] |
||||
|
timelistforoperations = [] |
||||
|
|
||||
|
# preparing the index.json file for the navbar |
||||
|
index_dict = {} |
||||
|
|
||||
|
|
||||
|
###################################################################################### |
||||
|
#SOME JSON AND WALK OS REALTED THINGIES |
||||
|
###################################################################################### |
||||
|
|
||||
|
|
||||
|
#reading wordlist.json |
||||
|
with open('wordlist.json', 'r') as f: |
||||
|
wordlist_dict = json.load(f) |
||||
|
|
||||
|
#listing paths and files, not in order but well... |
||||
|
# for path, subdirs, files in os.walk(path): |
||||
|
# for name in files: |
||||
|
# if not name.endswith(".json") and not name.endswith(".DS_Store"): |
||||
|
# fullpath = os.path.join(path, name) |
||||
|
# listingdirectories.append(path) |
||||
|
# listingfiles.append(fullpath[7:]) #fullpaths minus static/ |
||||
|
# |
||||
|
# if name.endswith(".json"): |
||||
|
# fullpath = os.path.join(path, name) |
||||
|
# jsonfiles.append(fullpath[7:]) |
||||
|
|
||||
|
|
||||
|
#listing the json paths simultaneously generating a new index.json for the navbar |
||||
|
for path, subdirs, files in os.walk('./static/files/'): |
||||
|
for name in files: |
||||
|
if name.endswith(".json"): |
||||
|
fullpath = os.path.join(path, name) |
||||
|
jsonfiles.append(fullpath[8:]) |
||||
|
fullpathjsonfiles.append(fullpath) |
||||
|
with open (fullpath) as f: |
||||
|
temp_dict = json.load(f) |
||||
|
index_dict[temp_dict["id"]] = temp_dict["title"] |
||||
|
|
||||
|
|
||||
|
|
||||
|
# with open("static/"+jsonfiles[4], 'r') as f: |
||||
|
# data_dict = json.load(f) |
||||
|
# datafromjson = data_dict["files"] |
||||
|
|
||||
|
###################################################################################### |
||||
|
#NOW THE REAL DEAL |
||||
|
###################################################################################### |
||||
|
|
||||
|
@app.route("/") |
||||
|
def home(): |
||||
|
sessionid = "current_user.id" |
||||
|
|
||||
|
#add the very first time of connection to the interface |
||||
|
if session['veryfirstnow'] is None : |
||||
|
session['veryfirstnow'] = datetime.now() |
||||
|
|
||||
|
return render_template('home.html', wordlist_dict=wordlist_dict) |
||||
|
def functionsession(): |
||||
|
return(session) |
||||
|
|
||||
|
# THIS IS NOT WORKING YET DUNNO WHY |
||||
|
@app.context_processor |
||||
|
def context_processor(): |
||||
|
functionsession = session['wordpath'] |
||||
|
return dict(functionsession=functionsession) |
||||
|
|
||||
|
@app.route('/about/') |
||||
|
def about(): |
||||
|
if session['veryfirstnow'] is None : |
||||
|
session['veryfirstnow'] = datetime.now() |
||||
|
|
||||
|
return render_template('about.html') |
||||
|
|
||||
|
# @app.route('/all/') |
||||
|
# def all(): |
||||
|
# thefile = listingfiles[positioninarray] |
||||
|
# counter2=0 |
||||
|
# return render_template('all.html', file=thefile, listingfiles=listingfiles, jsonfiles=jsonfiles, listofdicts=listofdicts, counter2=counter2) |
||||
|
|
||||
|
@app.route('/description') |
||||
|
def description(): |
||||
|
if session['veryfirstnow'] is None : |
||||
|
session['veryfirstnow'] = datetime.now() |
||||
|
|
||||
|
idno=request.args.get('id') |
||||
|
jsonfilefordescription = "files/"+idno+"/"+idno+".json" |
||||
|
with open("static/"+jsonfilefordescription, 'r') as f: |
||||
|
data_dict = json.load(f) |
||||
|
datafromjson = data_dict["files"] |
||||
|
|
||||
|
#open json file, list filepaths in array and loop with thefile |
||||
|
textfile="" |
||||
|
textfiles=[] |
||||
|
with open("static/"+jsonfilefordescription, 'r') as f: |
||||
|
data_dict = json.load(f) |
||||
|
datafromjson = data_dict["files"] |
||||
|
itemid = data_dict["id"] |
||||
|
session["id"].append(itemid) |
||||
|
for file in datafromjson: |
||||
|
if file.lower().endswith(('.html')): |
||||
|
with codecs.open("static/"+file,"r", encoding='utf-8') as f: |
||||
|
textfile = f.read() |
||||
|
textfile = Markup(textfile) |
||||
|
textfiles.append(textfile) |
||||
|
return render_template('description.html', datafromjson=datafromjson, itemid=itemid, textfiles=textfiles, idno=idno, index_dict=index_dict) |
||||
|
|
||||
|
@app.route('/diverge', methods=['GET']) |
||||
|
def diverge(): |
||||
|
if session['veryfirstnow'] is None : |
||||
|
session['veryfirstnow'] = datetime.now() |
||||
|
|
||||
|
searchterm=request.args.get('search') |
||||
|
now = datetime.now() #description time |
||||
|
session['wordpath'].append(searchterm) |
||||
|
session['clicktime'].append(now) |
||||
|
return render_template('diverge.html', wordlist_dict=wordlist_dict, searchterm=searchterm, index_dict=index_dict) |
||||
|
|
||||
|
# @app.route('/listofwords') |
||||
|
# def listofwords(): |
||||
|
# # r = jsonify(session) |
||||
|
# r = str(session) |
||||
|
# r0w = session["wordpath"][0] |
||||
|
# r0c = session["clicktime"][0] |
||||
|
# r0id = session["id"][0] |
||||
|
# return render_template('listofwords.html', r=r, r0c=r0c, r0w=r0w, r0id=r0id) |
||||
|
|
||||
|
###################################################################################### |
||||
|
#THE SCORE STUFF |
||||
|
###################################################################################### |
||||
|
|
||||
|
### Add : if score is empty then add some sentence like "your score is empty" |
||||
|
### to be printed to the text document |
||||
|
|
||||
|
@app.route("/get-file") |
||||
|
def get_file(): |
||||
|
if session['veryfirstnow'] is None : |
||||
|
session['veryfirstnow'] = datetime.now() |
||||
|
|
||||
|
fullscore = None |
||||
|
|
||||
|
wordpath = session["wordpath"] |
||||
|
idlist = session["id"] |
||||
|
timelist = session["clicktime"] |
||||
|
veryfirstnow = session['veryfirstnow'] |
||||
|
clickongetfiletime = datetime.now() |
||||
|
|
||||
|
|
||||
|
tadam = None |
||||
|
initialtime = None |
||||
|
|
||||
|
if not (timelist[0] is None): |
||||
|
thetime = timelist[0] |
||||
|
thetime = str(thetime) |
||||
|
thetime = dt.datetime.strptime(thetime, '%Y-%m-%d %H:%M:%S.%f') |
||||
|
initialtime = thetime - veryfirstnow |
||||
|
initialtime = initialtime.total_seconds() |
||||
|
initialtime = int(initialtime) |
||||
|
initialtime = "."*initialtime |
||||
|
|
||||
|
print(initialtime) |
||||
|
|
||||
|
for t in timelist : |
||||
|
t = str(t) |
||||
|
yo = dt.datetime.strptime(t, '%Y-%m-%d %H:%M:%S.%f') |
||||
|
timelistforoperations.append(yo) |
||||
|
|
||||
|
prev = None |
||||
|
wholestringy = None |
||||
|
|
||||
|
# print("veryfirstnow : "+str(veryfirstnow)+"\n") |
||||
|
|
||||
|
print(wordpath) |
||||
|
print(timelistforoperations) |
||||
|
print(idlist) |
||||
|
|
||||
|
|
||||
|
for (word, time) in zip(wordpath,timelistforoperations): |
||||
|
# for (word, time, uniqueid) in zip(wordpath,timelistforoperations, idlist): |
||||
|
# print("word : "+word+"\n") |
||||
|
# print("timeofclick : "+str(time)+"\n") |
||||
|
# print("============") |
||||
|
# print(wordpath) |
||||
|
# print("============") |
||||
|
# filler = int(uniqueid) |
||||
|
upperword = word.upper() |
||||
|
|
||||
|
#get previous time for substraction |
||||
|
if not (prev is None): |
||||
|
difftime = time - prev |
||||
|
difftime = difftime.total_seconds() |
||||
|
difftime = int(difftime) |
||||
|
# print(difftime) |
||||
|
else: |
||||
|
yo = str(veryfirstnow) |
||||
|
yoyo = dt.datetime.strptime(yo, '%Y-%m-%d %H:%M:%S.%f') |
||||
|
|
||||
|
difftime = time - yoyo |
||||
|
difftime = difftime.total_seconds() |
||||
|
difftime = int(difftime) |
||||
|
|
||||
|
test = difftime |
||||
|
|
||||
|
prev = time |
||||
|
|
||||
|
diffpattern = test * '.' |
||||
|
stringy = diffpattern + upperword |
||||
|
|
||||
|
if not (wholestringy is None): |
||||
|
wholestringy = wholestringy+stringy |
||||
|
fullscore = wholestringy |
||||
|
else: |
||||
|
wholestringy = upperword |
||||
|
fullscore = wholestringy |
||||
|
|
||||
|
|
||||
|
# #If fullscore length superior 60 characters, insert linebreak |
||||
|
|
||||
|
# # Defining splitting point |
||||
|
# n = 60 |
||||
|
# # Using list comprehension |
||||
|
# out = [(fullscore[i:i+n]) for i in range(0, len(fullscore), n)] |
||||
|
# #joining the strings with linebreaks |
||||
|
# tadam = '\n'.join(out) |
||||
|
|
||||
|
|
||||
|
if not (fullscore is None): |
||||
|
# outside of the loop calculate seconds from "clickongetfiletime" minus the last "time" from the loop |
||||
|
lastdifftime = clickongetfiletime - prev |
||||
|
lastdifftime = lastdifftime.total_seconds() |
||||
|
lastdifftime = int(lastdifftime) |
||||
|
lastdifftime = lastdifftime * '.' |
||||
|
#the 60 seconds thing |
||||
|
# print(lastdifftime+"\n") |
||||
|
fullscore = initialtime+fullscore+lastdifftime |
||||
|
# Defining splitting point |
||||
|
n = 60 |
||||
|
# Using list comprehension |
||||
|
out = [(fullscore[i:i+n]) for i in range(0, len(fullscore), n)] |
||||
|
#joining the strings with linebreaks |
||||
|
tadam = '\n'.join(out) |
||||
|
|
||||
|
# have a message in file if no nav has been recorded so it's less dull than error page |
||||
|
if tadam is None: |
||||
|
tadam = "This score is Null" |
||||
|
|
||||
|
# print("verylastnow : "+str(clickongetfilefime)+"\n") |
||||
|
|
||||
|
uniquename = str(clickongetfiletime) |
||||
|
|
||||
|
with open('scores/'+uniquename+'.txt', 'a+') as f: |
||||
|
f.write(tadam) |
||||
|
|
||||
|
print(tadam) |
||||
|
|
||||
|
return Response(tadam, |
||||
|
mimetype="text/plain", |
||||
|
headers={"Content-Disposition": |
||||
|
"attachment;filename=yourveryspecialscore.txt"}) |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
###################################################################################### |
||||
|
#INDEX PAGE |
||||
|
###################################################################################### |
||||
|
@app.route("/index") |
||||
|
def index(): |
||||
|
return render_template('theindex.html', wordlist_dict=wordlist_dict, index_dict=index_dict) |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
if __name__ == '__main__': |
||||
|
app.run(debug=True) |
Loading…
Reference in new issue