Skip to content

Commit 2752a72

Browse files
committed
example applications
1 parent a2a93d8 commit 2752a72

File tree

5 files changed

+233
-1
lines changed

5 files changed

+233
-1
lines changed

examples/database_example.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
"""
2+
database_example_formatted.py
3+
:copyright: (c) 2015 by C. W.
4+
:license: GPL v3 or BSD
5+
"""
6+
from flask import Flask, request, jsonify
7+
from flask.ext import excel
8+
9+
app=Flask(__name__)
10+
11+
@app.route("/upload", methods=['GET', 'POST'])
12+
def upload_file():
13+
if request.method == 'POST':
14+
return jsonify({"result": request.get_array('file')})
15+
return '''
16+
<!doctype html>
17+
<title>Upload an excel file</title>
18+
<h1>Excel file upload (csv, tsv, csvz, tsvz only)</h1>
19+
<form action="" method=post enctype=multipart/form-data><p>
20+
<input type=file name=file><input type=submit value=Upload>
21+
</form>
22+
'''
23+
24+
@app.route("/download", methods=['GET'])
25+
def download_file():
26+
return excel.make_response_from_array([[1,2], [3, 4]], "csv")
27+
28+
from flask.ext.sqlalchemy import SQLAlchemy
29+
from datetime import datetime
30+
import pyexcel.ext.xls
31+
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tmp.db'
32+
db = SQLAlchemy(app)
33+
34+
class Post(db.Model):
35+
id = db.Column(db.Integer, primary_key=True)
36+
title = db.Column(db.String(80))
37+
body = db.Column(db.Text)
38+
pub_date = db.Column(db.DateTime)
39+
40+
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
41+
category = db.relationship('Category',
42+
backref=db.backref('posts', lazy='dynamic'))
43+
44+
def __init__(self, title, body, category, pub_date=None):
45+
self.title = title
46+
self.body = body
47+
if pub_date is None:
48+
pub_date = datetime.utcnow()
49+
self.pub_date = pub_date
50+
self.category = category
51+
52+
def __repr__(self):
53+
return '<Post %r>' % self.title
54+
55+
56+
class Category(db.Model):
57+
id = db.Column(db.Integer, primary_key=True)
58+
name = db.Column(db.String(50))
59+
60+
def __init__(self, name):
61+
self.name = name
62+
63+
def __repr__(self):
64+
return '<Category %r>' % self.name
65+
66+
db.create_all()
67+
68+
@app.route("/import", methods=['GET', 'POST'])
69+
def doimport():
70+
if request.method == 'POST':
71+
def category_init_func(row):
72+
c = Category(row['name'])
73+
c.id = row['id']
74+
return c
75+
def post_init_func(row):
76+
c = Category.query.filter_by(name=row['category']).first()
77+
p = Post(row['title'], row['body'], c, row['pub_date'])
78+
return p
79+
request.save_book_to_database(field_name='file', session=db.session,
80+
tables=[(Category, category_init_func),
81+
(Post, post_init_func)])
82+
return "Saved"
83+
return '''
84+
<!doctype html>
85+
<title>Upload an excel file</title>
86+
<h1>Excel file upload (xls, xlsx, ods please)</h1>
87+
<form action="" method=post enctype=multipart/form-data><p>
88+
<input type=file name=file><input type=submit value=Upload>
89+
</form>
90+
'''
91+
92+
@app.route("/export", methods=['GET'])
93+
def doexport():
94+
return excel.make_response_from_tables(db.session, [Category, Post], "xls")
95+
96+
if __name__ == "__main__":
97+
app.debug=True
98+
app.run()
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
"""
2+
database_example_formatted.py
3+
:copyright: (c) 2015 by C. W.
4+
:license: GPL v3 or BSD
5+
"""
6+
from flask import Flask, request, jsonify
7+
from flask.ext import excel
8+
from flask.ext.sqlalchemy import SQLAlchemy
9+
from datetime import datetime
10+
import pyexcel.ext.xls
11+
12+
app=Flask(__name__)
13+
14+
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tmp.db'
15+
db = SQLAlchemy(app)
16+
17+
18+
class Post(db.Model):
19+
id = db.Column(db.Integer, primary_key=True)
20+
title = db.Column(db.String(80))
21+
body = db.Column(db.Text)
22+
pub_date = db.Column(db.DateTime)
23+
24+
category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
25+
category = db.relationship('Category',
26+
backref=db.backref('posts', lazy='dynamic'))
27+
28+
def __init__(self, title, body, category, pub_date=None):
29+
self.title = title
30+
self.body = body
31+
if pub_date is None:
32+
pub_date = datetime.utcnow()
33+
self.pub_date = pub_date
34+
self.category = category
35+
36+
def __repr__(self):
37+
return '<Post %r>' % self.title
38+
39+
40+
class Category(db.Model):
41+
id = db.Column(db.Integer, primary_key=True)
42+
name = db.Column(db.String(50))
43+
44+
def __init__(self, name):
45+
self.name = name
46+
47+
def __repr__(self):
48+
return '<Category %r>' % self.name
49+
50+
db.create_all()
51+
52+
53+
@app.route("/upload", methods=['GET', 'POST'])
54+
def upload_file():
55+
if request.method == 'POST':
56+
return jsonify({"result": request.get_array('file')})
57+
return '''
58+
<!doctype html>
59+
<title>Upload an excel file</title>
60+
<h1>Excel file upload (csv, tsv, csvz, tsvz only)</h1>
61+
<form action="" method=post enctype=multipart/form-data><p>
62+
<input type=file name=file><input type=submit value=Upload>
63+
</form>
64+
'''
65+
66+
@app.route("/download", methods=['GET'])
67+
def download_file():
68+
return excel.make_response_from_array([[1,2], [3, 4]], "csv")
69+
70+
71+
@app.route("/import", methods=['GET', 'POST'])
72+
def doimport():
73+
if request.method == 'POST':
74+
def category_init_func(row):
75+
c = Category(row['name'])
76+
c.id = row['id']
77+
return c
78+
def post_init_func(row):
79+
c = Category.query.filter_by(name=row['category']).first()
80+
p = Post(row['title'], row['body'], c, row['pub_date'])
81+
return p
82+
request.save_book_to_database(field_name='file', session=db.session,
83+
tables=[(Category, category_init_func),
84+
(Post, post_init_func)])
85+
return "Saved"
86+
return '''
87+
<!doctype html>
88+
<title>Upload an excel file</title>
89+
<h1>Excel file upload (xls, xlsx, ods please)</h1>
90+
<form action="" method=post enctype=multipart/form-data><p>
91+
<input type=file name=file><input type=submit value=Upload>
92+
</form>
93+
'''
94+
95+
96+
@app.route("/export", methods=['GET'])
97+
def doexport():
98+
return excel.make_response_from_tables(db.session, [Category, Post], "xls")
99+
100+
101+
if __name__ == "__main__":
102+
app.run()

examples/example_for_upload.xls

6.5 KB
Binary file not shown.

examples/tiny_example.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
"""
2+
database_example_formatted.py
3+
:copyright: (c) 2015 by C. W.
4+
:license: GPL v3 or BSD
5+
"""
6+
from flask import Flask, request, jsonify
7+
from flask.ext import excel
8+
9+
app=Flask(__name__)
10+
11+
@app.route("/upload", methods=['GET', 'POST'])
12+
def upload_file():
13+
if request.method == 'POST':
14+
return jsonify({"result": request.get_array('file')})
15+
return '''
16+
<!doctype html>
17+
<title>Upload an excel file</title>
18+
<h1>Excel file upload (csv, tsv, csvz, tsvz only)</h1>
19+
<form action="" method=post enctype=multipart/form-data><p>
20+
<input type=file name=file><input type=submit value=Upload>
21+
</form>
22+
'''
23+
24+
@app.route("/download", methods=['GET'])
25+
def download_file():
26+
return excel.make_response_from_array([[1,2], [3, 4]], "csv")
27+
28+
# insert database related code here
29+
30+
if __name__ == "__main__":
31+
app.run()

setup.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
README_txt = readme.read()
1010

1111
dependencies = [
12-
'pyexcel>=0.1.2'
12+
'pyexcel>=0.1.2',
13+
'pyexcel-webio>=0.0.1'
1314
]
1415

1516
setup(

0 commit comments

Comments
 (0)