· 7 years ago · Oct 06, 2018, 12:20 AM
1from flask import Flask, views, request, redirect, url_for, render_template, flash, send_from_directory
2from werkzeug import secure_filename
3import os, csv
4from xml.sax.saxutils import escape
5
6UPLOAD_FOLDER = '/home/atharp/uploads'
7ALLOWED_EXTENSIONS = set(['txt', 'csv'])
8SECRET_KEY = 'super_secret_encoding_string!'
9
10app = Flask(__name__)
11app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
12app.secret_key = SECRET_KEY
13
14def allowed_file(filename):
15 return '.' in filename and \
16 filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
17
18class CsvReader:
19 def __init__(self, file):
20 self.CsvFile = file
21
22 def parse_csv():
23 returnVal = ""
24 file = self.CsvFile
25 if file and allowed_file(file.filename):
26 data = csv.reader(file)
27
28 rownum = 0
29 for row in data:
30 if rownum == 0:
31 header = row
32 else:
33 colnum = 0
34 for col in row:
35 returnVal += self.escape_csv_text(header[colnum]) + '_____' + self.escape_csv_text(col) + '\n'
36 colnum += 1
37 rownum += 1
38 return returnVal
39
40 def escape_csv_text(data):
41 returnVal = escape(data.strip().decode('utf-8'))
42 return returnVal
43
44class View(views.MethodView):
45 def get(self):
46 return render_template('index.html')
47
48 def post(self):
49 file = request.files['formFile']
50
51 postedCsvReader = CsvReader(file)
52 parsedText = postedCsvReader.parse_csv
53
54 flash(parsedText)
55 return self.get()
56
57app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
58
59@app.route('/uploads/<filename>')
60def uploaded_file(filename):
61 return send_from_directory(app.config['UPLOAD_FOLDER'], filename)
62
63if __name__ == "__main__":
64 app.debug = True
65 app.run()