diff --git a/tailbone/templates/batch/vendorcatalog/index.mako b/tailbone/templates/batch/vendorcatalog/index.mako
index fa6e4a5a..1fac1170 100644
--- a/tailbone/templates/batch/vendorcatalog/index.mako
+++ b/tailbone/templates/batch/vendorcatalog/index.mako
@@ -3,6 +3,9 @@
<%def name="context_menu_items()">
${parent.context_menu_items()}
+ % if generic_template_url and master.has_perm('create'):
+
${h.link_to("Download Generic Template", generic_template_url)}
+ % endif
% if h.route_exists(request, 'vendors') and request.has_perm('vendors.list'):
${h.link_to("View Vendors", url('vendors'))}
% endif
diff --git a/tailbone/views/batch/vendorcatalog.py b/tailbone/views/batch/vendorcatalog.py
index adcf5dff..7a1a4153 100644
--- a/tailbone/views/batch/vendorcatalog.py
+++ b/tailbone/views/batch/vendorcatalog.py
@@ -135,7 +135,13 @@ class VendorCatalogView(FileBatchMasterView):
def get_parsers(self):
if not hasattr(self, 'parsers'):
- self.parsers = sorted(iter_catalog_parsers(), key=lambda p: p.display)
+ parsers = sorted(iter_catalog_parsers(), key=lambda p: p.display)
+ supported = self.rattail_config.getlist(
+ 'tailbone', 'batch.vendorcatalog.supported_parsers')
+ if supported:
+ parsers = [parser for parser in parsers
+ if parser.key in supported]
+ self.parsers = parsers
return self.parsers
def configure_grid(self, g):
@@ -176,8 +182,13 @@ class VendorCatalogView(FileBatchMasterView):
if self.creating:
if 'parser_key' not in f:
f.insert_after('filename', 'parser_key')
- values = [(p.key, p.display) for p in self.get_parsers()]
- values.insert(0, ('', "(please choose)"))
+ parsers = self.get_parsers()
+ values = [(p.key, p.display) for p in parsers]
+ if len(values) == 1:
+ f.set_default('parser_key', parsers[0].key)
+ use_buefy = self.get_use_buefy()
+ if not use_buefy:
+ values.insert(0, ('', "(please choose)"))
f.set_widget('parser_key', dfwidget.SelectWidget(values=values))
f.set_label('parser_key', "File Type")
@@ -241,6 +252,11 @@ class VendorCatalogView(FileBatchMasterView):
f.set_type('upc', 'gpc')
f.set_type('discount_percent', 'percent')
+ def template_kwargs_index(self, **kwargs):
+ url = self.rattail_config.get('tailbone', 'batch.vendorcatalog.generic_template_url')
+ kwargs['generic_template_url'] = url
+ return kwargs
+
def template_kwargs_create(self, **kwargs):
parsers = self.get_parsers()
for parser in parsers: