Expose config for identifying supported vendors
unfortunately must identify vendors at each app node separately, but this is definitely still an improvement..
This commit is contained in:
parent
983a06abe3
commit
e3b1be5835
3 changed files with 107 additions and 0 deletions
57
tailbone/views/vendors/core.py
vendored
57
tailbone/views/vendors/core.py
vendored
|
@ -33,6 +33,7 @@ from rattail.db import model
|
|||
from webhelpers2.html import tags
|
||||
|
||||
from tailbone.views import MasterView
|
||||
from tailbone.db import Session
|
||||
|
||||
|
||||
class VendorView(MasterView):
|
||||
|
@ -179,6 +180,62 @@ class VendorView(MasterView):
|
|||
'type': bool},
|
||||
]
|
||||
|
||||
def configure_get_context(self, **kwargs):
|
||||
context = super(VendorView, self).configure_get_context(**kwargs)
|
||||
|
||||
context['supported_vendor_settings'] = self.configure_get_supported_vendor_settings()
|
||||
|
||||
return context
|
||||
|
||||
def configure_gather_settings(self, data, **kwargs):
|
||||
settings = super(VendorView, self).configure_gather_settings(
|
||||
data, **kwargs)
|
||||
|
||||
supported_vendor_settings = self.configure_get_supported_vendor_settings()
|
||||
for setting in six.itervalues(supported_vendor_settings):
|
||||
name = 'rattail.vendor.{}'.format(setting['key'])
|
||||
settings.append({'name': name,
|
||||
'value': data[name]})
|
||||
|
||||
return settings
|
||||
|
||||
def configure_remove_settings(self, **kwargs):
|
||||
super(VendorView, self).configure_remove_settings(**kwargs)
|
||||
|
||||
model = self.model
|
||||
names = []
|
||||
|
||||
supported_vendor_settings = self.configure_get_supported_vendor_settings()
|
||||
for setting in six.itervalues(supported_vendor_settings):
|
||||
names.append('rattail.vendor.{}'.format(setting['key']))
|
||||
|
||||
if names:
|
||||
# nb. we do not use self.Session b/c that may not point to
|
||||
# the Rattail DB for the subclass
|
||||
Session().query(model.Setting)\
|
||||
.filter(model.Setting.name.in_(names))\
|
||||
.delete(synchronize_session=False)
|
||||
|
||||
def configure_get_supported_vendor_settings(self):
|
||||
app = self.get_rattail_app()
|
||||
vendor_handler = app.get_vendor_handler()
|
||||
batch_handler = app.get_batch_handler('purchase')
|
||||
settings = {}
|
||||
|
||||
for parser in batch_handler.get_supported_invoice_parsers():
|
||||
key = parser.vendor_key
|
||||
if not key:
|
||||
continue
|
||||
|
||||
vendor = vendor_handler.get_vendor(self.Session(), key)
|
||||
settings[key] = {
|
||||
'key': key,
|
||||
'value': vendor.uuid if vendor else None,
|
||||
'label': six.text_type(vendor) if vendor else None,
|
||||
}
|
||||
|
||||
return settings
|
||||
|
||||
|
||||
def defaults(config, **kwargs):
|
||||
base = globals()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue