UPLOAD_SETTINGS.append('trim')
UPLOAD_SETTINGS.append('null')
UPLOAD_SETTINGS.append('literal_column_headings')
+UPLOAD_SETTINGS.append('add_missing_columns')
REQUIRED_SETTINGS = CORE_REQUIRED_SETTINGS
BOOLEAN_SETTINGS = CORE_BOOLEAN_SETTINGS
BOOLEAN_CHOICE_SETTINGS = ['trim',
'null',
+ 'add_missing_columns',
'literal_column_headings']
% endif
</%def>
+<%def name="add_missing_columns_row(tab_index)">
+ % if show_choice(pgwui, 'add_missing_columns'):
+ <tr>
+ <%self.lib:td_label for_id="add_missing_columns_id">
+ Add Missing Columns
+ </%self.lib:td_label>
+ <%self.lib:td_input tab_index="${tab_index}">
+ <input name="add_missing_columns"
+ tabindex="${tab_index.val}"
+ id="add_missing_columns_id"
+ type="checkbox"
+ ${add_missing_columns | n}
+ />
+ </%self.lib:td_input>
+ </tr>
+ % endif
+</%def>
+
<%def name="submit(tab_index)">
<input value="Upload" tabindex="${tab_index.val}" type="submit" />
<% tab_index.inc() %>
format_row(tab_index)
nulls_row(tab_index)
trim_row(tab_index)
+ add_missing_columns_row(tab_index)
literal_row(tab_index)
file_row(tab_index)
%>
self.upload_fmt = self.find_upload_fmt(upload_settings)
self.upload_null = self.boolean_choice(upload_settings, 'null')
self.trim_upload = self.boolean_choice(upload_settings, 'trim')
+ self.add_missing_columns = self.boolean_choice(
+ upload_settings, 'add_missing_columns')
self.literal_col_headings = self.boolean_choice(
upload_settings, 'literal_column_headings')
return self
response['pgwui']['upload_settings'] = upload_settings
-def match_insert_to_dataline(udl, insert_stmt, source_file=None):
+def match_insert_to_dataline(
+ udl, insert_stmt, add_missing_columns, source_file=None):
'''Make sure the UploadDataLine has the number of values expected
by the insert statement
'''
udl.lineno, 'Too many data columns', descr=descr,
detail=detail, data=udl.raw)
else:
- raise core_ex.TooFewColsError(
- udl.lineno, 'Too few data columns', descr=descr,
- detail=detail, data=udl.raw)
+ if add_missing_columns:
+ udl.tuples.extend([None for pos in
+ range(insert_stmt.cols - data_cols)])
+ else:
+ raise core_ex.TooFewColsError(
+ udl.lineno, 'Too few data columns', descr=descr,
+ detail=detail, data=udl.raw)