Add config for supported vendor catalog parsers

also explicitly set "native value" for all configuration checkbox
fields, since apparently it will send `'false'` by default...
This commit is contained in:
Lance Edgar 2022-01-08 13:35:59 -06:00
parent 2ce7c93aeb
commit dc28b1337d
8 changed files with 92 additions and 0 deletions

View file

@ -10,12 +10,42 @@
<b-field>
<b-checkbox name="rattail.batch.vendor_catalog.allow_future"
v-model="simpleSettings['rattail.batch.vendor_catalog.allow_future']"
native-value="true"
@input="settingsNeedSaved = true">
Allow "future" cost changes
</b-checkbox>
</b-field>
</div>
<h3 class="block is-size-3">Catalog Parsers</h3>
<div class="block" style="padding-left: 2rem;">
<p class="block">
Only the selected parsers will be exposed to users.
</p>
% for Parser in catalog_parsers:
<b-field message="${Parser.key}">
<b-checkbox name="catalog_parser_${Parser.key}"
v-model="catalogParsers['${Parser.key}']"
native-value="true"
@input="settingsNeedSaved = true">
${Parser.display}
</b-checkbox>
</b-field>
% endfor
</div>
</%def>
<%def name="modify_this_page_vars()">
${parent.modify_this_page_vars()}
<script type="text/javascript">
ThisPageData.catalogParsers = ${json.dumps(catalog_parsers_data)|n}
</script>
</%def>

View file

@ -9,6 +9,7 @@
<b-field message="If not set, only a Person is required.">
<b-checkbox name="rattail.custorders.new_order_requires_customer"
v-model="simpleSettings['rattail.custorders.new_order_requires_customer']"
native-value="true"
@input="settingsNeedSaved = true">
Require a Customer account
</b-checkbox>
@ -17,6 +18,7 @@
<b-field message="If not set, default contact info is always assumed.">
<b-checkbox name="rattail.custorders.new_orders.allow_contact_info_choice"
v-model="simpleSettings['rattail.custorders.new_orders.allow_contact_info_choice']"
native-value="true"
@input="settingsNeedSaved = true">
Allow user to choose contact info
</b-checkbox>
@ -25,6 +27,7 @@
<b-field message="Only applies if user is allowed to choose contact info.">
<b-checkbox name="rattail.custorders.new_orders.allow_contact_info_create"
v-model="simpleSettings['rattail.custorders.new_orders.allow_contact_info_create']"
native-value="true"
@input="settingsNeedSaved = true">
Allow user to enter new contact info
</b-checkbox>
@ -52,6 +55,7 @@
<b-field message="If set, user can enter details of an arbitrary new &quot;pending&quot; product.">
<b-checkbox name="rattail.custorders.allow_unknown_product"
v-model="simpleSettings['rattail.custorders.allow_unknown_product']"
native-value="true"
@input="settingsNeedSaved = true">
Allow creating orders for "unknown" products
</b-checkbox>
@ -60,6 +64,7 @@
<b-field>
<b-checkbox name="rattail.custorders.product_price_may_be_questionable"
v-model="simpleSettings['rattail.custorders.product_price_may_be_questionable']"
native-value="true"
@input="settingsNeedSaved = true">
Allow prices to be flagged as "questionable"
</b-checkbox>

View file

@ -35,6 +35,7 @@
<b-field message="If set, GPC values like 002XXXXXYYYYY-Z will be converted to 002XXXXX00000-Z for lokkup">
<b-checkbox name="rattail.products.convert_type2_for_gpc_lookup"
v-model="simpleSettings['rattail.products.convert_type2_for_gpc_lookup']"
native-value="true"
@input="settingsNeedSaved = true">
Auto-convert Type 2 UPC for sake of lookup
</b-checkbox>
@ -48,6 +49,7 @@
<b-field message="If a product has an image in the DB, that will still be preferred.">
<b-checkbox name="tailbone.products.show_pod_image"
v-model="simpleSettings['tailbone.products.show_pod_image']"
native-value="true"
@input="settingsNeedSaved = true">
Show "POD" Images as fallback
</b-checkbox>

View file

@ -9,6 +9,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.allow_receiving_from_scratch"
v-model="simpleSettings['rattail.batch.purchase.allow_receiving_from_scratch']"
native-value="true"
@input="settingsNeedSaved = true">
From Scratch
</b-checkbox>
@ -17,6 +18,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.allow_receiving_from_invoice"
v-model="simpleSettings['rattail.batch.purchase.allow_receiving_from_invoice']"
native-value="true"
@input="settingsNeedSaved = true">
From Invoice
</b-checkbox>
@ -25,6 +27,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.allow_receiving_from_purchase_order"
v-model="simpleSettings['rattail.batch.purchase.allow_receiving_from_purchase_order']"
native-value="true"
@input="settingsNeedSaved = true">
From Purchase Order
</b-checkbox>
@ -33,6 +36,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.allow_receiving_from_purchase_order_with_invoice"
v-model="simpleSettings['rattail.batch.purchase.allow_receiving_from_purchase_order_with_invoice']"
native-value="true"
@input="settingsNeedSaved = true">
From Purchase Order, with Invoice
</b-checkbox>
@ -41,6 +45,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.allow_truck_dump_receiving"
v-model="simpleSettings['rattail.batch.purchase.allow_truck_dump_receiving']"
native-value="true"
@input="settingsNeedSaved = true">
Truck Dump
</b-checkbox>
@ -54,6 +59,7 @@
<b-field message="NB. Allow Cases setting also affects Ordering behavior.">
<b-checkbox name="rattail.batch.purchase.allow_cases"
v-model="simpleSettings['rattail.batch.purchase.allow_cases']"
native-value="true"
@input="settingsNeedSaved = true">
Allow Cases
</b-checkbox>
@ -62,6 +68,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.allow_expired_credits"
v-model="simpleSettings['rattail.batch.purchase.allow_expired_credits']"
native-value="true"
@input="settingsNeedSaved = true">
Allow "Expired" Credits
</b-checkbox>
@ -75,6 +82,7 @@
<b-field message="TODO: this may also affect Ordering (?)">
<b-checkbox name="rattail.batch.purchase.mobile_images"
v-model="simpleSettings['rattail.batch.purchase.mobile_images']"
native-value="true"
@input="settingsNeedSaved = true">
Show Product Images
</b-checkbox>
@ -83,6 +91,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.mobile_quick_receive"
v-model="simpleSettings['rattail.batch.purchase.mobile_quick_receive']"
native-value="true"
@input="settingsNeedSaved = true">
Allow "Quick Receive"
</b-checkbox>
@ -91,6 +100,7 @@
<b-field>
<b-checkbox name="rattail.batch.purchase.mobile_quick_receive_all"
v-model="simpleSettings['rattail.batch.purchase.mobile_quick_receive_all']"
native-value="true"
@input="settingsNeedSaved = true">
Allow "Quick Receive All"
</b-checkbox>

View file

@ -9,6 +9,7 @@
<b-field message="If not set, reports are shown as simple list of hyperlinks.">
<b-checkbox name="tailbone.reporting.choosing_uses_form"
v-model="simpleSettings['tailbone.reporting.choosing_uses_form']"
native-value="true"
@input="settingsNeedSaved = true">
Show report chooser as form, with dropdown
</b-checkbox>

View file

@ -9,6 +9,7 @@
<b-field>
<b-checkbox name="rattail.mail.record_attempts"
v-model="simpleSettings['rattail.mail.record_attempts']"
native-value="true"
@input="settingsNeedSaved = true">
Make record of all attempts to send email
</b-checkbox>

View file

@ -9,6 +9,7 @@
<b-field message="If not set, vendor chooser is an autocomplete field.">
<b-checkbox name="rattail.vendors.choice_uses_dropdown"
v-model="simpleSettings['rattail.vendors.choice_uses_dropdown']"
native-value="true"
@input="settingsNeedSaved = true">
Show vendor chooser as dropdown (select) element
</b-checkbox>

View file

@ -39,6 +39,7 @@ from webhelpers2.html import tags
from tailbone import forms
from tailbone.views.batch import FileBatchMasterView
from tailbone.diffs import Diff
from tailbone.db import Session
log = logging.getLogger(__name__)
@ -346,6 +347,47 @@ class VendorCatalogView(FileBatchMasterView):
])
return settings
def configure_get_context(self):
context = super(VendorCatalogView, self).configure_get_context()
app = self.get_rattail_app()
vendor_handler = app.get_vendor_handler()
Parsers = vendor_handler.get_all_catalog_parsers()
Supported = vendor_handler.get_supported_catalog_parsers()
context['catalog_parsers'] = Parsers
context['catalog_parsers_data'] = dict([(Parser.key, Parser in Supported)
for Parser in Parsers])
return context
def configure_gather_settings(self, data):
settings = super(VendorCatalogView, self).configure_gather_settings(data)
app = self.get_rattail_app()
vendor_handler = app.get_vendor_handler()
supported = []
for Parser in vendor_handler.get_all_catalog_parsers():
name = 'catalog_parser_{}'.format(Parser.key)
if data.get(name) == 'true':
supported.append(Parser.key)
settings.append({'name': 'rattail.vendors.supported_catalog_parsers',
'value': ', '.join(supported)})
return settings
def configure_remove_settings(self):
super(VendorCatalogView, self).configure_remove_settings()
model = self.model
names = [
'rattail.vendors.supported_catalog_parsers',
'tailbone.batch.vendorcatalog.supported_parsers', # deprecated
]
Session().query(model.Setting)\
.filter(model.Setting.name.in_(names))\
.delete(synchronize_session=False)
# TODO: deprecate / remove this
VendorCatalogsView = VendorCatalogView