Skip to content

Instantly share code, notes, and snippets.

@AlexFrazer
Last active January 1, 2016 12:48
Show Gist options
  • Save AlexFrazer/8146664 to your computer and use it in GitHub Desktop.
Save AlexFrazer/8146664 to your computer and use it in GitHub Desktop.
from flask import request
from flask import json
from flask import Flask
from flask import render_template
import csv
import collections
import json
app = Flask(__name__, static_folder='assets',
static_url_path='/assets')
@app.route('/render_main_template')
def render():
return render_template('template.html')
@app.route('/get_data')
def read_CSV():
class student:
def __init__(self, NAME=None, CLASSES=None, GPA=None):
self.NAME = NAME
self.CLASSES = CLASSES
self.GPA = GPA
def __repr__(self):
return "<-- NAME: {}, CLASSES: {}, GPA: {}".format(self.NAME, self.CLASSES, self.GPA)
def __eq__(self, other):
return self.NAME == other.NAME
def __hash__(self):
return hash(self.NAME)
student_report = '../student_grades.csv'
csv_data = open(student_report, 'rb')
reader = csv.reader(csv_data)
data = []
for row in read:
data.append(student(*row))
return data
@app.route('/my/app/route', methods=['POST'])
def ReturnFilteredList:
return json.dumps(filterCSV(read_CSV(), dict(request.form)))
def filter_CSV(data, filter_dict):
return_list = []
for row in data:
row = row.__dict__ #to make JSON serializable
for k, v in filter_dict.iteritems():
row[k] = row[k].split(', ')
if not set(row[k]).issuperset(set(filter_dict[k])):
break
return_list.append(row)
return return_list
if __name__ == 'main':
app.run(debug=True, port=1031, host='0.0.0.0')
<div>
<form method="POST" action="/my/app/route/">
<table>
<tr>
<td>
Name:
</td>
<td>
<input type="text" name="NAME" maxlength="100" size="20" style="width: 90%;"
</td>
</tr>
<tr>
<td>
Classes:
</td>
<td>
<select multiple="true" name="CLASSES">
<option>
Painting Composition
</option>
<option>
Analysis of Algorithms
</option>
<option>
Game Design
</option>
<option>
Assembly Language
</option>
<option>
Pirate History
</option>
</select>
</td>
</tr>
</table>
</form>
</div>
<!DOCTYPE html>
<HTML>
<HEAD>
<link href="/assets/css/stylesheet.css" rel="stylesheet"
</HEAD>
<BODY>
<div id="main_div">
<h1>hi</h1>
</div>
<script src="/assets/js/jquery.js"></script>
<script src="/assets/js/my_javascript.js"></script>
<script src="/assets/js/ejs.js"></script>
<script src="/assets/js/bootstrap.js"></script>
<script src="/assets/js/select2.min.js"></script>
</BODY>
</HTML>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment