From 1bf43cb72df6893c5c2df3ae02d9037ce1539912 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Fri, 22 Jan 2021 19:31:23 -0600 Subject: [PATCH] Add a "trim" setting to control trim of whitespace in data --- src/pgwui_bulk_upload/check_settings.py | 1 + src/pgwui_bulk_upload/pgwui_bulk_upload.py | 6 ++++ .../templates/bulk_upload.mak | 2 +- src/pgwui_bulk_upload/views/bulk_upload.py | 30 +++++++++++++++---- tests/test_check_settings.py | 1 - tests/views/test_bulk_upload.py | 2 +- 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/pgwui_bulk_upload/check_settings.py b/src/pgwui_bulk_upload/check_settings.py index b3e3c8e..0b54e9e 100644 --- a/src/pgwui_bulk_upload/check_settings.py +++ b/src/pgwui_bulk_upload/check_settings.py @@ -42,6 +42,7 @@ def check_settings(component_config): PGWUI_COMPONENT, all_setngs, pgwui_upload_core.check_settings.REQUIRED_SETTINGS, pgwui_upload_core.check_settings.BOOLEAN_SETTINGS, + pgwui_upload_core.check_settings.BOOLEAN_CHOICE_SETTINGS, component_config)) return errors diff --git a/src/pgwui_bulk_upload/pgwui_bulk_upload.py b/src/pgwui_bulk_upload/pgwui_bulk_upload.py index 9600e2a..4dc3862 100644 --- a/src/pgwui_bulk_upload/pgwui_bulk_upload.py +++ b/src/pgwui_bulk_upload/pgwui_bulk_upload.py @@ -26,6 +26,8 @@ DEFAULT_BULK_UPLOAD_ROUTE = '/bulk_upload' DEFAULT_BULK_UPLOAD_MENU_LABEL = ( 'bulk_upload -- Upload Many Files Into PostgreSQL') DEFAULT_MAP_FILE = 'contents.yml' +DEFAULT_LITERAL_COLUMN_HEADINGS = 'off' +DEFAULT_TRIM = 'choice-yes' def establish_default_settings(config): @@ -40,6 +42,10 @@ def establish_default_settings(config): 'menu_label', DEFAULT_BULK_UPLOAD_MENU_LABEL) bulk_upload_settings.setdefault( 'map_file', DEFAULT_MAP_FILE) + bulk_upload_settings.setdefault( + 'literal_column_headings', DEFAULT_LITERAL_COLUMN_HEADINGS) + bulk_upload_settings.setdefault( + 'trim', DEFAULT_TRIM) def includeme(config): diff --git a/src/pgwui_bulk_upload/templates/bulk_upload.mak b/src/pgwui_bulk_upload/templates/bulk_upload.mak index b726ed9..f3d3dc0 100644 --- a/src/pgwui_bulk_upload/templates/bulk_upload.mak +++ b/src/pgwui_bulk_upload/templates/bulk_upload.mak @@ -37,7 +37,7 @@ <%inherit file="${upload_base_mak}" /> -<%block name="title">${pgwui['pgwui_bulk_upload']['menu_label']} +<%block name="title">${pgwui['upload_settings']['menu_label']} <%block name="meta_keywords"> diff --git a/src/pgwui_bulk_upload/views/bulk_upload.py b/src/pgwui_bulk_upload/views/bulk_upload.py index 5c53898..0158916 100644 --- a/src/pgwui_bulk_upload/views/bulk_upload.py +++ b/src/pgwui_bulk_upload/views/bulk_upload.py @@ -35,6 +35,7 @@ from pgwui_common.view import auth_base_view import pgwui_core.exceptions as core_ex from pgwui_core.core import ( + UploadNullFileInitialPost, UploadNullFileWTForm, UploadEngine, ParameterExecutor, @@ -47,6 +48,7 @@ from pgwui_core.core import ( ) from pgwui_upload_core.views.upload import ( BaseTableUploadHandler, + set_upload_response, ) import pgwui_bulk_upload.exceptions as ex @@ -65,6 +67,27 @@ def archive_path(path): return os.path.join(*[os.fsdecode(part) for part in path.parts[-2:]]) +@attr.s +class BulkUploadInitialPost(UploadNullFileInitialPost): + '''Get values from settings for when there's not user-supplied + values in POST + ''' + def build(self, settings={}): + super().build(settings) + bulk_settings = settings['pgwui']['pgwui_bulk_upload'] + self.trim_upload = ( + bulk_settings['trim'] == 'choice-yes') + self.literal_col_headings = ( + bulk_settings['literal_column_headings'] == 'yes') + return self + + +class BulkUploadFileWTForm(UploadNullFileWTForm): + '''Use the appropriate initial values when there's no POST data + ''' + ivals = BulkUploadInitialPost + + class BulkUploadForm(UploadNullMixin, UploadDoubleFileForm): ''' Acts like a dict, but with extra methods. @@ -442,7 +465,7 @@ class BulkTableUploadHandler(BaseTableUploadHandler): ''' Make the upload form needed by this handler. ''' - return BulkUploadForm(self, fc=UploadNullFileWTForm) + return BulkUploadForm(self, fc=BulkUploadFileWTForm) def get_data(self): ''' @@ -683,9 +706,6 @@ def bulk_upload_view(request): uh = BulkTableUploadHandler(request).init() response = UploadEngine(uh).run() - settings = request.registry.settings - response.setdefault('pgwui', dict()) - response['pgwui']['pgwui_bulk_upload'] = ( - settings['pgwui']['pgwui_bulk_upload']) + set_upload_response('pgwui_bulk_upload', request, response) return analyze_results(uh, response) diff --git a/tests/test_check_settings.py b/tests/test_check_settings.py index c1e5ebb..d03836a 100644 --- a/tests/test_check_settings.py +++ b/tests/test_check_settings.py @@ -65,6 +65,5 @@ def test_check_settings(mock_core_check_settings): call_args = mock_core_check_settings.call_args[0] assert 'map_file' in call_args[1] # 'map_file' is a setting - assert 'map_file' in call_args[2] # 'map_file' is required assert result == expected_errors diff --git a/tests/views/test_bulk_upload.py b/tests/views/test_bulk_upload.py index d6c7ad2..d51576f 100644 --- a/tests/views/test_bulk_upload.py +++ b/tests/views/test_bulk_upload.py @@ -227,7 +227,7 @@ def test_bulk_upload_view(isolate_bulk_upload_view): result = bulk_upload.bulk_upload_view(request) bulk_settings = request.registry.settings['pgwui']['pgwui_bulk_upload'] - assert result['pgwui']['pgwui_bulk_upload'] == bulk_settings + assert result['pgwui']['upload_settings'] == bulk_settings del result['pgwui'] # Remove variables added by pgwui view decorators assert result == response -- 2.34.1