Let settings determine which batch handler to use for vendor catalog views.
This commit is contained in:
parent
7c761bee99
commit
c328c96203
|
@ -366,7 +366,15 @@ class BatchCrud(BaseCrud):
|
||||||
|
|
||||||
def __init__(self, request):
|
def __init__(self, request):
|
||||||
self.request = request
|
self.request = request
|
||||||
self.handler = self.batch_handler_class(config=self.request.rattail_config)
|
self.handler = self.get_handler()
|
||||||
|
|
||||||
|
def get_handler(self):
|
||||||
|
"""
|
||||||
|
Returns a `BatchHandler` instance for the view. Derived classes may
|
||||||
|
override this as needed. The default is to create an instance of
|
||||||
|
:attr:`batch_handler_class`.
|
||||||
|
"""
|
||||||
|
return self.batch_handler_class(self.request.rattail_config)
|
||||||
|
|
||||||
def fieldset(self, model):
|
def fieldset(self, model):
|
||||||
"""
|
"""
|
||||||
|
|
21
tailbone/views/vendors/catalogs.py
vendored
21
tailbone/views/vendors/catalogs.py
vendored
|
@ -27,10 +27,11 @@ Views for maintaining vendor catalogs
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from rattail.db import model
|
from rattail.db import model
|
||||||
from rattail.db.api import get_vendor
|
from rattail.db.api import get_setting, get_vendor
|
||||||
from rattail.db.batch.vendorcatalog import VendorCatalog, VendorCatalogRow
|
from rattail.db.batch.vendorcatalog import VendorCatalog, VendorCatalogRow
|
||||||
from rattail.db.batch.vendorcatalog.handler import VendorCatalogHandler
|
from rattail.db.batch.vendorcatalog.handler import VendorCatalogHandler
|
||||||
from rattail.vendors.catalogs import iter_catalog_parsers, require_catalog_parser
|
from rattail.vendors.catalogs import iter_catalog_parsers, require_catalog_parser
|
||||||
|
from rattail.util import load_object
|
||||||
|
|
||||||
import formalchemy
|
import formalchemy
|
||||||
|
|
||||||
|
@ -84,6 +85,24 @@ class VendorCatalogCrud(FileBatchCrud):
|
||||||
flash = {'create': "New vendor catalog has been uploaded.",
|
flash = {'create': "New vendor catalog has been uploaded.",
|
||||||
'delete': "Vendor catalog has been deleted."}
|
'delete': "Vendor catalog has been deleted."}
|
||||||
|
|
||||||
|
def get_handler(self):
|
||||||
|
"""
|
||||||
|
Returns a `BatchHandler` instance for the view.
|
||||||
|
|
||||||
|
Derived classes may override this, but if you only need to replace the
|
||||||
|
handler (i.e. and not the view logic) then you can instead subclass
|
||||||
|
:class:`rattail.db.batch.vendorcatalog.handler.VendorCatalogHandler`
|
||||||
|
and create a setting named "rattail.batch.vendorcatalog.handler" in the
|
||||||
|
database, the value of which should be a spec string pointed at your
|
||||||
|
custom handler.
|
||||||
|
"""
|
||||||
|
handler = get_setting(Session, 'rattail.batch.vendorcatalog.handler')
|
||||||
|
if handler:
|
||||||
|
handler = load_object(handler)(self.request.rattail_config)
|
||||||
|
if not handler:
|
||||||
|
handler = super(VendorCatalogCrud, self).get_handler()
|
||||||
|
return handler
|
||||||
|
|
||||||
def configure_fieldset(self, fs):
|
def configure_fieldset(self, fs):
|
||||||
parsers = sorted(iter_catalog_parsers(), key=lambda p: p.display)
|
parsers = sorted(iter_catalog_parsers(), key=lambda p: p.display)
|
||||||
parser_options = [(p.display, p.key) for p in parsers]
|
parser_options = [(p.display, p.key) for p in parsers]
|
||||||
|
|
Loading…
Reference in a new issue