app adapted to python2
This commit is contained in:
parent
5ebd19852c
commit
772c9f6510
334
contextualise_python2.py
Normal file
334
contextualise_python2.py
Normal file
@ -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
Block a user