Add a "trim" setting controlling default data value whitespace trimming
authorKarl O. Pinc <kop@karlpinc.com>
Fri, 22 Jan 2021 23:58:42 +0000 (17:58 -0600)
committerKarl O. Pinc <kop@karlpinc.com>
Sat, 23 Jan 2021 00:39:38 +0000 (18:39 -0600)
src/pgwui_upload_core/check_settings.py
src/pgwui_upload_core/templates/upload.mak
src/pgwui_upload_core/views/upload.py
tests/test_check_settings.py

index 542eb49725abe01e75d0e4dcb98cf61049a87ce8..8c438367eb6049fc4c472cbdb8b1061811a77236 100644 (file)
@@ -25,9 +25,11 @@ from . import exceptions as upload_core_ex
 
 UPLOAD_SETTINGS = ['menu_label',
                    'literal_column_headings',
+                   'trim',
                    ]
 REQUIRED_SETTINGS = []
 BOOLEAN_SETTINGS = []
+BOOLEAN_CHOICE_SETTINGS = ['trim']
 
 
 def validate_literal_column_headings(component, errors, settings):
@@ -43,7 +45,7 @@ def validate_literal_column_headings(component, errors, settings):
 
 def check_settings(
         component, all_setngs, required_setngs, boolean_setngs,
-        component_config):
+        boolean_choice_setngs, component_config):
     '''Check that all pgwui_upload specific settings are good.
     This includes:
       checking for unknown settings
@@ -58,6 +60,8 @@ def check_settings(
         component, required_setngs, component_config))
     errors.extend(checkset.boolean_settings(
         component, boolean_setngs, component_config))
+    errors.extend(checkset.boolean_choice(
+        component, boolean_choice_setngs, component_config))
     validate_literal_column_headings(component, errors, component_config)
 
     return errors
index 7d6c097e2fc9fb3c709dfa8a13385a0e340ccc23..dbd5f002abb4bbb3383da9a42c6899e047ec2787 100644 (file)
@@ -42,6 +42,8 @@
 <%inherit file="${auth_base_mak}" />
 
 <%def name="trim_row(tab_index)">
+  <% trim_setting = pgwui['upload_settings']['trim'] %>
+  % if (trim_setting == 'choice-yes' or trim_setting == 'choice-no'):
       <tr>
         <td class="label">
           <label for="trim_upload_id">Trim Leading/Trailing Spaces:</label>
@@ -55,6 +57,7 @@
                  />
         </td>
       </tr>
+  % endif
 </%def>
 
 <%def name="append_elements(form_elements)">
index ddd86225e5c2af33d92c0b021cf16447ba9163a3..e03de490ed1032d734c772518bd0800f6e275341 100644 (file)
@@ -253,3 +253,19 @@ class BaseTableUploadHandler(TabularFileUploadHandler):
         Yes, lots.
         '''
         raise NotImplementedError()
+
+
+def set_upload_response(component, request, response):
+    '''Add to response per the upload component's settings
+    Adds: ask_about_literal_cols
+          ask_about_trim
+          upload_settings
+    '''
+    settings = request.registry.settings
+    upload_settings = settings['pgwui'][component]
+
+    quoter_setting = upload_settings.get('literal_column_headings')
+    response['ask_about_literal_cols'] = quoter_setting == 'ask'
+
+    response.setdefault('pgwui', dict())
+    response['pgwui']['upload_settings'] = upload_settings
index a101d3730fe217cd08ed1711d87f1471c4565ae4..78898c7c0928897b5001a8648a4608334b08ce4c 100644 (file)
@@ -42,6 +42,9 @@ mock_require_settings = testing.make_mock_fixture(
 mock_boolean_settings = testing.make_mock_fixture(
     checkset, 'boolean_settings')
 
+mock_boolean_choice = testing.make_mock_fixture(
+    checkset, 'boolean_choice')
+
 
 # validate_literal_column_headings()
 
@@ -79,6 +82,7 @@ mock_validate_literal_column_headings = testing.make_mock_fixture(
 def test_check_settings(mock_unknown_settings,
                         mock_require_settings,
                         mock_boolean_settings,
+                        mock_boolean_choice,
                         mock_validate_literal_column_headings):
     '''The setting checking functions are called once, the check_settings()
     call returns all the errors from each mock.
@@ -87,19 +91,23 @@ def test_check_settings(mock_unknown_settings,
     unknown_retval = ['unk err']
     require_retval = ['req err']
     boolean_retval = ['bool err']
+    boolean_choice_retval = ['choice err']
 
     mock_unknown_settings.return_value = unknown_retval
     mock_require_settings.return_value = require_retval
     mock_boolean_settings.return_value = boolean_retval
+    mock_boolean_choice.return_value = boolean_choice_retval
 
-    result = check_settings.check_settings(None, [], [], [], {})
+    result = check_settings.check_settings(None, [], [], [], [], {})
 
     mock_unknown_settings.assert_called_once
     mock_require_settings.assert_called_once
     mock_boolean_settings.assert_called_once
+    mock_boolean_choice.assert_called_once
     mock_validate_literal_column_headings.assert_called_once
 
     assert result.sort() == ([literal_err]
                              + unknown_retval
                              + require_retval
-                             + boolean_retval).sort()
+                             + boolean_retval
+                             + boolean_choice_retval).sort()