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):
'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):
import pgwui_core.exceptions as core_ex
from pgwui_core.core import (
+ UploadNullFileInitialPost,
UploadNullFileWTForm,
UploadEngine,
ParameterExecutor,
)
from pgwui_upload_core.views.upload import (
BaseTableUploadHandler,
+ set_upload_response,
)
import pgwui_bulk_upload.exceptions as ex
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.
'''
Make the upload form needed by this handler.
'''
- return BulkUploadForm(self, fc=UploadNullFileWTForm)
+ return BulkUploadForm(self, fc=BulkUploadFileWTForm)
def get_data(self):
'''
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)
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