|
17 | 17 | import pyexcel_webio as webio
|
18 | 18 |
|
19 | 19 |
|
20 |
| -class ExcelMixin(webio.ExcelInput): |
| 20 | +class ExcelMixin(webio.ExcelInputInMultiDict): |
21 | 21 | """
|
22 | 22 | Provide additional pyexcel-webio methods to Django's UploadedFiles
|
23 | 23 | """
|
24 |
| - def _get_file_extension(self): |
| 24 | + def get_params(self, **keywords): |
25 | 25 | extension = self.name.split(".")[-1]
|
26 |
| - return extension |
27 |
| - |
28 |
| - def load_single_sheet(self, sheet_name=None, **keywords): |
29 |
| - return pe.get_sheet( |
30 |
| - file_type=self._get_file_extension(), |
31 |
| - file_content=self.file.read(), |
32 |
| - sheet_name=sheet_name, |
33 |
| - **keywords) |
34 |
| - |
35 |
| - def load_book(self, **keywords): |
36 |
| - return pe.get_book( |
37 |
| - file_type=self._get_file_extension(), |
38 |
| - file_content=self.file.read(), |
39 |
| - **keywords) |
40 |
| - |
41 |
| - def save_to_database(self, model=None, |
| 26 | + keywords['file_type'] = extension |
| 27 | + keywords['file_content'] = self.file.read() |
| 28 | + return keywords |
| 29 | + |
| 30 | + def save_to_database(self, model=None, initializer=None, mapdict=None, |
42 | 31 | sheet_name=None,
|
43 | 32 | name_columns_by_row=0,
|
44 | 33 | name_rows_by_column=-1,
|
45 | 34 | **keywords):
|
46 | 35 | """
|
47 | 36 | Save data from a sheet to a nominated django model
|
48 | 37 | """
|
49 |
| - sheet = self.load_single_sheet( |
50 |
| - sheet_name=sheet_name, |
51 |
| - name_columns_by_row=name_columns_by_row, |
52 |
| - name_rows_by_column=name_rows_by_column, |
53 |
| - **keywords) |
54 |
| - if sheet: |
55 |
| - sheet.save_to_django_model(model, **keywords) |
56 |
| - |
57 |
| - def save_book_to_database(self, models=None, **keywords): |
| 38 | + params = self.get_params(**keywords) |
| 39 | + if 'name_columns_by_row' not in params: |
| 40 | + params['name_columns_by_row'] = 0 |
| 41 | + if 'name_rows_by_column' not in params: |
| 42 | + params['name_rows_by_column'] = -1 |
| 43 | + params['dest_model'] = model |
| 44 | + params['dest_initializer'] = initializer |
| 45 | + params['dest_mapdict'] = mapdict |
| 46 | + pe.save_as(**params) |
| 47 | + |
| 48 | + def save_book_to_database(self, models=None, initializers=None, |
| 49 | + mapdicts=None, batch_size=None, |
| 50 | + **keywords): |
58 | 51 | """
|
59 | 52 | Save data from a book to a nominated django models
|
60 |
| - """ |
61 |
| - book = self.load_book(**keywords) |
62 |
| - if book: |
63 |
| - book.save_to_django_models(models, **keywords) |
| 53 | + """ |
| 54 | + params = self.get_params(**keywords) |
| 55 | + params['dest_models'] = models |
| 56 | + params['dest_initializers']=initializers |
| 57 | + params['dest_mapdicts'] = mapdicts |
| 58 | + params['dest_batch_size'] = batch_size |
| 59 | + pe.save_book_as(**params) |
64 | 60 |
|
65 | 61 |
|
66 | 62 | class ExcelInMemoryUploadedFile(ExcelMixin, InMemoryUploadedFile):
|
|
0 commit comments