Skip to content

Commit 4e9ca81

Browse files
committed
remove duplicated implementation as pyexcel implements most of the getters
1 parent 5b655fb commit 4e9ca81

File tree

2 files changed

+59
-98
lines changed

2 files changed

+59
-98
lines changed

pyexcel_webio/__init__.py

Lines changed: 47 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class ExcelInput(object):
3737
3838
The source could be from anywhere, memory or file system
3939
"""
40-
def load_single_sheet(self, sheet_name=None, **keywords):
40+
def get_params(self, sheet_name=None, **keywords):
4141
"""Abstract method
4242
4343
:param sheet_name: For an excel book, there could be multiple
@@ -49,17 +49,7 @@ def load_single_sheet(self, sheet_name=None, **keywords):
4949
"""
5050
raise NotImplementedError("Please implement this function")
5151

52-
def load_book(self, **keywords):
53-
"""Abstract method
54-
55-
:param form_field_name: the file field name in the html
56-
form for file upload
57-
:param keywords: additional key words
58-
:returns: A instance of :class:`Book`
59-
"""
60-
raise NotImplementedError("Please implement this function")
61-
62-
def get_sheet(self, sheet_name=None, **keywords):
52+
def get_sheet(self, **keywords):
6353
"""
6454
Get a :class:`Sheet` instance from the file
6555
@@ -70,9 +60,10 @@ def get_sheet(self, sheet_name=None, **keywords):
7060
:param keywords: additional key words
7161
:returns: A sheet object
7262
"""
73-
return self.load_single_sheet(sheet_name=sheet_name, **keywords)
63+
params = self.get_params(**keywords)
64+
return pe.get_sheet(**params)
7465

75-
def get_array(self, sheet_name=None, **keywords):
66+
def get_array(self, **keywords):
7667
"""
7768
Get a list of lists from the file
7869
@@ -83,13 +74,10 @@ def get_array(self, sheet_name=None, **keywords):
8374
:param keywords: additional key words
8475
:returns: A list of lists
8576
"""
86-
sheet = self.get_sheet(sheet_name=sheet_name, **keywords)
87-
if sheet:
88-
return sheet.to_array()
89-
else:
90-
return None
77+
params = self.get_params(**keywords)
78+
return pe.get_array(**params)
9179

92-
def get_dict(self, sheet_name=None, name_columns_by_row=0, **keywords):
80+
def get_dict(self, **keywords):
9381
"""Get a dictionary from the file
9482
9583
:param sheet_name: For an excel book, there could be multiple
@@ -99,16 +87,12 @@ def get_dict(self, sheet_name=None, name_columns_by_row=0, **keywords):
9987
:param keywords: additional key words
10088
:returns: A dictionary
10189
"""
102-
sheet = self.load_single_sheet(
103-
sheet_name=sheet_name,
104-
name_columns_by_row=name_columns_by_row,
105-
**keywords)
106-
if sheet:
107-
return sheet.to_dict()
108-
else:
109-
return None
90+
params = self.get_params(**keywords)
91+
if 'name_columns_by_row' not in params:
92+
params['name_columns_by_row'] = 0
93+
return pe.get_dict(**params)
11094

111-
def get_records(self, sheet_name=None, name_columns_by_row=0, **keywords):
95+
def get_records(self, **keywords):
11296
"""Get a list of records from the file
11397
11498
:param sheet_name: For an excel book, there could be multiple
@@ -118,21 +102,16 @@ def get_records(self, sheet_name=None, name_columns_by_row=0, **keywords):
118102
:param keywords: additional key words
119103
:returns: A list of records
120104
"""
121-
sheet = self.load_single_sheet(
122-
sheet_name=sheet_name,
123-
name_columns_by_row=name_columns_by_row,
124-
**keywords)
125-
if sheet:
126-
return sheet.to_records()
127-
else:
128-
return None
105+
params = self.get_params(**keywords)
106+
if 'name_columns_by_row' not in params:
107+
params['name_columns_by_row'] = 0
108+
return pe.get_records(**params)
129109

130110
def save_to_database(
131111
self,
132112
session=None, table=None, initializer=None, mapdict=None,
133113
auto_commit=True,
134-
sheet_name=None, name_columns_by_row=0, name_rows_by_column=-1,
135-
field_name=None, **keywords):
114+
**keywords):
136115
"""
137116
Save data from a sheet to database
138117
@@ -142,38 +121,35 @@ def save_to_database(
142121
:param mapdict: the explicit table column names if your excel data do not have the exact column names
143122
:param keywords: additional keywords to :meth:`pyexcel.Sheet.save_to_database`
144123
"""
145-
sheet = self.load_single_sheet(
146-
field_name=field_name,
147-
sheet_name=sheet_name,
148-
name_columns_by_row=name_columns_by_row,
149-
name_rows_by_column=name_rows_by_column,
150-
**keywords)
151-
if sheet:
152-
sheet.save_to_database(session,
153-
table,
154-
initializer=initializer,
155-
mapdict=mapdict,
156-
auto_commit=auto_commit)
124+
params = self.get_params(**keywords)
125+
if 'name_columns_by_row' not in params:
126+
params['name_columns_by_row'] = 0
127+
if 'name_rows_by_column' not in params:
128+
params['name_rows_by_column'] = -1
129+
params['dest_session']=session
130+
params['dest_table'] = table
131+
params['dest_initializer']=initializer
132+
params['dest_mapdict'] = mapdict
133+
params['dest_auto_commit']=auto_commit
134+
pe.save_as(**params)
157135

158136
def get_book(self, **keywords):
159137
"""Get a instance of :class:`Book` from the file
160138
161139
:param keywords: additional key words
162140
:returns: A instance of :class:`Book`
163141
"""
164-
return self.load_book(**keywords)
142+
params = self.get_params(**keywords)
143+
return pe.get_book(**params)
165144

166145
def get_book_dict(self, **keywords):
167146
"""Get a dictionary of two dimensional array from the file
168147
169148
:param keywords: additional key words
170149
:returns: A dictionary of two dimensional arrays
171150
"""
172-
book = self.load_book(**keywords)
173-
if book:
174-
return book.to_dict()
175-
else:
176-
return None
151+
params = self.get_params(**keywords)
152+
return pe.get_book_dict(**params)
177153

178154
def save_book_to_database(
179155
self,
@@ -190,13 +166,13 @@ def save_book_to_database(
190166
:param keywords: additional keywords to :meth:`pyexcel.Book.save_to_database`
191167
192168
"""
193-
book = self.load_book(**keywords)
194-
if book:
195-
book.save_to_database(session,
196-
tables,
197-
initializers=initializers,
198-
mapdicts=mapdicts,
199-
auto_commit=auto_commit)
169+
params = self.get_params(**keywords)
170+
params['dest_session']=session
171+
params['dest_tables'] = tables
172+
params['dest_initializers']=initializers
173+
params['dest_mapdicts'] = mapdicts
174+
params['dest_auto_commit']=auto_commit
175+
pe.save_book_as(**params)
200176

201177

202178
class ExcelInputInMultiDict(ExcelInput):
@@ -211,30 +187,19 @@ def get_file_tuple(self, field_name):
211187
"""
212188
raise NotImplementedError("Please implement this function")
213189

214-
def load_single_sheet(self, field_name=None, sheet_name=None, **keywords):
190+
def get_params(self, field_name=None, **keywords):
215191
"""
216192
Load the single sheet from named form field
217193
"""
218194
file_type, file_handle = self.get_file_tuple(field_name)
219195
if file_type is not None and file_handle is not None:
220-
return pe.get_sheet(file_type=file_type,
221-
file_content=file_handle.read(),
222-
sheet_name=sheet_name,
223-
**keywords)
224-
else:
225-
return None
226-
227-
def load_book(self, field_name=None, **keywords):
228-
"""
229-
Load the book from named form field
230-
"""
231-
file_type, file_handle = self.get_file_tuple(field_name)
232-
if file_type is not None and file_handle is not None:
233-
return pe.get_book(file_type=file_type,
234-
file_content=file_handle.read(),
235-
**keywords)
196+
keywords = {
197+
'file_type': file_type,
198+
'file_content': file_handle.read()
199+
}
200+
return keywords
236201
else:
237-
return None
202+
raise Exception("Invalid parameters")
238203

239204

240205
def dummy_func(content, content_type=None, status=200, file_name=None):

tests/test_webio.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,9 @@
1616

1717
class TestInput(webio.ExcelInput):
1818
"""This is sample implementation that read excel source from file"""
19-
def load_single_sheet(self, filename=None, sheet_name=None, **keywords):
19+
def get_params(self, **keywords):
2020
"""Load a single sheet"""
21-
return pe.get_sheet(file_name=filename, **keywords)
22-
23-
def load_book(self, filename=None, **keywords):
24-
"""Load a book"""
25-
return pe.get_book(file_name=filename, **keywords)
21+
return keywords
2622

2723

2824
class TestExtendedInput(webio.ExcelInputInMultiDict):
@@ -44,12 +40,12 @@ class TestExceptions:
4440
@raises(NotImplementedError)
4541
def test_load_single_sheet(self):
4642
testinput = webio.ExcelInput()
47-
testinput.get_sheet(filename="test") # booom
43+
testinput.get_sheet(file_name="test") # booom
4844

4945
@raises(NotImplementedError)
5046
def test_load_book(self):
5147
testinput = webio.ExcelInput()
52-
testinput.get_book(filename="test") # booom
48+
testinput.get_book(file_name="test") # booom
5349

5450
@raises(NotImplementedError)
5551
def test_excel_input_get_file_tuple(self):
@@ -105,17 +101,17 @@ def setUp(self):
105101

106102
def test_get_sheet(self):
107103
myinput = TestInput()
108-
sheet = myinput.get_sheet(filename=self.testfile)
104+
sheet = myinput.get_sheet(file_name=self.testfile)
109105
assert sheet.to_array() == self.data
110106

111107
def test_get_array(self):
112108
myinput = TestInput()
113-
array = myinput.get_array(filename=self.testfile)
109+
array = myinput.get_array(file_name=self.testfile)
114110
assert array == self.data
115111

116112
def test_get_dict(self):
117113
myinput = TestInput()
118-
result = myinput.get_dict(filename=self.testfile)
114+
result = myinput.get_dict(file_name=self.testfile)
119115
assert result == {
120116
"X": [1, 4],
121117
"Y": [2, 5],
@@ -124,7 +120,7 @@ def test_get_dict(self):
124120

125121
def test_get_records(self):
126122
myinput = TestInput()
127-
result = myinput.get_records(filename=self.testfile)
123+
result = myinput.get_records(file_name=self.testfile)
128124
assert result == [
129125
{"X": 1, "Y": 2, "Z": 3},
130126
{"X": 4, "Y": 5, "Z": 6}
@@ -135,7 +131,7 @@ def test_save_to_database(self):
135131
Base.metadata.create_all(engine)
136132
self.session = Session()
137133
myinput = TestInput()
138-
myinput.save_to_database(filename=self.testfile, session=self.session, table=Signature)
134+
myinput.save_to_database(file_name=self.testfile, session=self.session, table=Signature)
139135
array = pe.get_array(session=self.session, table=Signature)
140136
assert array == self.data
141137
self.session.close()
@@ -178,13 +174,13 @@ def setUp(self):
178174

179175
def test_get_book(self):
180176
myinput = TestInput()
181-
result = myinput.get_book(filename=self.testfile)
177+
result = myinput.get_book(file_name=self.testfile)
182178
assert result["sheet1"].to_array() == self.data
183179
assert result["sheet2"].to_array() == self.data1
184180

185181
def test_get_book_dict(self):
186182
myinput = TestInput()
187-
result = myinput.get_book_dict(filename=self.testfile)
183+
result = myinput.get_book_dict(file_name=self.testfile)
188184
assert result["sheet1"] == self.data
189185
assert result["sheet2"] == self.data1
190186

@@ -193,7 +189,7 @@ def test_save_to_database(self):
193189
Base.metadata.create_all(engine)
194190
self.session = Session()
195191
myinput = TestInput()
196-
myinput.save_book_to_database(filename=self.testfile, session=self.session, tables=[Signature, Signature2])
192+
myinput.save_book_to_database(file_name=self.testfile, session=self.session, tables=[Signature, Signature2])
197193
array = pe.get_array(session=self.session, table=Signature)
198194
assert array == self.data
199195
array = pe.get_array(session=self.session, table=Signature2)

0 commit comments

Comments
 (0)