Skip to content

Commit fc58366

Browse files
committed
rolling out new feature: make response from a query set using pyexcel v0.1.5
1 parent 17c3c4e commit fc58366

File tree

3 files changed

+45
-21
lines changed

3 files changed

+45
-21
lines changed

pyexcel_webio/__init__.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def load_book(self, **keywords):
5353
:returns: A instance of :class:`Book`
5454
"""
5555
raise NotImplementedError("Please implement this function")
56-
56+
5757
def get_sheet(self, sheet_name=None, **keywords):
5858
"""
5959
Get a :class:`Sheet` instance from the file
@@ -116,14 +116,20 @@ def get_records(self, sheet_name=None, name_columns_by_row=0, **keywords):
116116
else:
117117
return None
118118

119-
def save_to_database(self, session=None, table=None,
120-
sheet_name=None, name_columns_by_row=0, name_rows_by_column=-1, **keywords):
121-
sheet = self.load_single_sheet(sheet_name=sheet_name,
122-
name_columns_by_row=name_columns_by_row,
123-
name_rows_by_column=name_rows_by_column,
124-
**keywords)
119+
def save_to_database(
120+
self,
121+
session=None, table=None,
122+
sheet_name=None, name_columns_by_row=0, name_rows_by_column=-1,
123+
field_name=None,
124+
**keywords):
125+
sheet = self.load_single_sheet(
126+
field_name=field_name,
127+
sheet_name=sheet_name,
128+
name_columns_by_row=name_columns_by_row,
129+
name_rows_by_column=name_rows_by_column,
130+
**keywords)
125131
if sheet:
126-
sheet.save_to_database(session, table)
132+
sheet.save_to_database(session, table, **keywords)
127133

128134
def get_book(self, **keywords):
129135
"""Get a instance of :class:`Book` from the file
@@ -147,10 +153,10 @@ def get_book_dict(self, **keywords):
147153
else:
148154
return None
149155

150-
def save_book_to_database(self, session=None, tables=None, **keywords):
151-
book = self.load_book(**keywords)
156+
def save_book_to_database(self, session=None, tables=None, field_name=None, **keywords):
157+
book = self.load_book(field_name=field_name, **keywords)
152158
if book:
153-
book.save_to_database(session, tables)
159+
book.save_to_database(session, tables, **keywords)
154160

155161

156162
def dummy_func(content, content_type=None, status=200):
@@ -177,7 +183,7 @@ def make_response(pyexcel_instance, file_type, status=200, **keywords):
177183
178184
:param status: unless a different status is to be returned.
179185
"""
180-
io = pe._get_io(file_type)
186+
io = pe.get_io(file_type)
181187
pyexcel_instance.save_to_memory(file_type, io, **keywords)
182188
io.seek(0)
183189
return ExcelResponse(io.read(), content_type=FILE_TYPE_MIME_TABLE[file_type], status=status)
@@ -199,6 +205,11 @@ def make_response_from_book_dict(adict, file_type, status=200, **keywords):
199205
return make_response(pe.Book(adict), file_type, status, **keywords)
200206

201207

208+
def make_response_from_query_sets(query_sets, column_names, file_type, status=200, **keywords):
209+
sheet = pe.get_sheet(query_sets=query_sets, column_names=column_names)
210+
return make_response(sheet, file_type, status, **keywords)
211+
212+
202213
def make_response_from_a_table(session, table, file_type, status=200, **keywords):
203214
sheet = pe.get_sheet(session=session, table=table, **keywords)
204215
return make_response(sheet, file_type, status, **keywords)

setup.py

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

1111
dependencies = [
12-
'pyexcel>=0.1.2'
12+
'pyexcel>=0.1.5'
1313
]
1414

1515
setup(
1616
name='pyexcel-webio',
1717
author="C. W.",
18-
version='0.0.1',
18+
version='0.0.2',
1919
author_email="[email protected]",
2020
url="https://github.com/chfw/pyexcel-webio",
2121
description='A generic request and response interface for pyexcel web extensions.',

tests/test_webio.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,37 +46,31 @@ def test_load_book(self):
4646
testinput = webio.ExcelInput()
4747
testinput.get_book(filename="test") # booom
4848

49-
@raises(IOError)
5049
def test_get_sheet(self):
5150
myinput = TestInput()
5251
sheet = myinput.get_sheet(unrelated="foo bar")
5352
assert sheet == None
5453

55-
@raises(IOError)
5654
def test_get_array(self):
5755
myinput = TestInput()
5856
array = myinput.get_array(unrelated="foo bar")
5957
assert array == None
6058

61-
@raises(IOError)
6259
def test_get_dict(self):
6360
myinput = TestInput()
6461
result = myinput.get_dict(unrelated="foo bar")
6562
assert result == None
6663

67-
@raises(IOError)
6864
def test_get_records(self):
6965
myinput = TestInput()
7066
result = myinput.get_records(unrelated="foo bar")
7167
assert result == None
7268

73-
@raises(IOError)
7469
def test_get_book(self):
7570
myinput = TestInput()
7671
result = myinput.get_book(unrelated="foo bar")
7772
assert result == None
7873

79-
@raises(IOError)
8074
def test_get_book_dict(self):
8175
myinput = TestInput()
8276
result = myinput.get_book_dict(unrelated="foo bar")
@@ -228,8 +222,27 @@ def test_make_response_from_table(self):
228222
self.verify()
229223
session.close()
230224

225+
def test_make_response_from_query_sets(self):
226+
Base.metadata.drop_all(engine)
227+
Base.metadata.create_all(engine)
228+
row1 = Signature(X=1,Y=2, Z=3)
229+
row2 = Signature(X=4, Y=5, Z=6)
230+
session = Session()
231+
session.add(row1)
232+
session.add(row2)
233+
session.commit()
234+
query_sets=session.query(Signature).filter_by(X=1).all()
235+
column_names= ["X", "Y", "Z"]
236+
webio.make_response_from_query_sets(query_sets, column_names, "xls")
237+
sheet2=pe.get_sheet(file_name=OUTPUT)
238+
assert sheet2.to_array() == [
239+
["X", "Y", "Z"],
240+
[1, 2, 3]
241+
]
242+
session.close()
243+
231244
def verify(self):
232-
sheet2 = pe.load(OUTPUT)
245+
sheet2 = pe.get_sheet(file_name=OUTPUT)
233246
assert sheet2.to_array() == self.data
234247

235248
def tearDown(self):

0 commit comments

Comments
 (0)