OMG a ridiculous commit to overhaul import handler config etc.
- register all import/export handlers via setup.py and config - use "handler key" lookup for all import/export commands - fix logic bugs w/ CORE -> Trainwreck importer
This commit is contained in:
parent
0e28a6ee2b
commit
3140245857
9 changed files with 122 additions and 97 deletions
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2019 Lance Edgar
|
||||
# Copyright © 2010-2021 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -60,18 +60,6 @@ class ImportToCore(commands.ImportSubcommand):
|
|||
"""
|
||||
Generic base class for commands which import *to* a CORE DB.
|
||||
"""
|
||||
# subclass must set these!
|
||||
handler_key = None
|
||||
default_handler_spec = None
|
||||
|
||||
def get_handler_factory(self, **kwargs):
|
||||
if self.config:
|
||||
spec = self.config.get('rattail.corepos.importing', '{}.handler'.format(self.handler_key),
|
||||
default=self.default_handler_spec)
|
||||
else:
|
||||
# just use default, for sake of cmd line help
|
||||
spec = self.default_handler_spec
|
||||
return load_object(spec)
|
||||
|
||||
|
||||
class ExportCore(commands.ImportSubcommand):
|
||||
|
@ -80,18 +68,9 @@ class ExportCore(commands.ImportSubcommand):
|
|||
"""
|
||||
name = 'export-core'
|
||||
description = __doc__.strip()
|
||||
default_handler_spec = 'rattail_corepos.corepos.importing.db.corepos:FromCoreToCoreExport'
|
||||
handler_key = 'to_corepos_db_office_op.from_corepos_db_office_op.export'
|
||||
default_dbkey = 'host'
|
||||
|
||||
def get_handler_factory(self, **kwargs):
|
||||
if self.config:
|
||||
spec = self.config.get('rattail_corepos.exporting', 'corepos.handler',
|
||||
default=self.default_handler_spec)
|
||||
else:
|
||||
# just use default, for sake of cmd line help
|
||||
spec = self.default_handler_spec
|
||||
return load_object(spec)
|
||||
|
||||
def add_parser_args(self, parser):
|
||||
super(ExportCore, self).add_parser_args(parser)
|
||||
parser.add_argument('--dbkey', metavar='KEY', default=self.default_dbkey,
|
||||
|
@ -111,16 +90,7 @@ class ExportCSV(commands.ExportFileSubcommand):
|
|||
"""
|
||||
name = 'export-csv'
|
||||
description = __doc__.strip()
|
||||
default_handler_spec = 'rattail_corepos.corepos.importing.db.exporters.csv:FromCoreToCSV'
|
||||
|
||||
def get_handler_factory(self, **kwargs):
|
||||
if self.config:
|
||||
spec = self.config.get('rattail_corepos.exporting', 'csv.handler',
|
||||
default=self.default_handler_spec)
|
||||
else:
|
||||
# just use default, for sake of cmd line help
|
||||
spec = self.default_handler_spec
|
||||
return load_object(spec)
|
||||
handler_key = 'to_csv.from_corepos_db_office_op.export'
|
||||
|
||||
|
||||
class ImportCore(ImportToCore):
|
||||
|
@ -129,8 +99,7 @@ class ImportCore(ImportToCore):
|
|||
"""
|
||||
name = 'import-core'
|
||||
description = __doc__.strip()
|
||||
handler_key = 'corepos'
|
||||
default_handler_spec = 'rattail_corepos.corepos.importing.db.corepos:FromCoreToCoreImport'
|
||||
handler_key = 'to_corepos_db_office_op.from_corepos_db_office_op.import'
|
||||
accepts_dbkey_param = True
|
||||
|
||||
def add_parser_args(self, parser):
|
||||
|
@ -155,7 +124,7 @@ class ImportCSV(commands.ImportFileSubcommand):
|
|||
"""
|
||||
name = 'import-csv'
|
||||
description = __doc__.strip()
|
||||
default_handler_spec = 'rattail_corepos.corepos.importing.db.csv:FromCSVToCore'
|
||||
handler_key = 'to_corepos_db_office_op.from_csv.import'
|
||||
|
||||
def add_parser_args(self, parser):
|
||||
super(ImportCSV, self).add_parser_args(parser)
|
||||
|
@ -170,12 +139,3 @@ class ImportCSV(commands.ImportFileSubcommand):
|
|||
args = kwargs['args']
|
||||
kwargs['dbkey'] = args.dbkey
|
||||
return kwargs
|
||||
|
||||
def get_handler_factory(self, **kwargs):
|
||||
if self.config:
|
||||
spec = self.config.get('rattail_corepos.importing', 'csv.handler',
|
||||
default=self.default_handler_spec)
|
||||
else:
|
||||
# just use default, for sake of cmd line help
|
||||
spec = self.default_handler_spec
|
||||
return load_object(spec)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
################################################################################
|
||||
#
|
||||
# Rattail -- Retail Software Framework
|
||||
# Copyright © 2010-2020 Lance Edgar
|
||||
# Copyright © 2010-2021 Lance Edgar
|
||||
#
|
||||
# This file is part of Rattail.
|
||||
#
|
||||
|
@ -37,6 +37,7 @@ class FromCoreHandler(FromSQLAlchemyHandler):
|
|||
Base class for import handlers which use a CORE database as the host / source.
|
||||
"""
|
||||
host_title = "CORE"
|
||||
host_key = 'corepos_db_office_op'
|
||||
|
||||
def make_host_session(self):
|
||||
return CoreSession()
|
||||
|
@ -47,6 +48,7 @@ class ToCoreHandler(ToSQLAlchemyHandler):
|
|||
Base class for import handlers which target a CORE database on the local side.
|
||||
"""
|
||||
local_title = "CORE"
|
||||
local_key = 'corepos_db_office_op'
|
||||
|
||||
def make_session(self):
|
||||
return CoreSession()
|
||||
|
|
|
@ -39,12 +39,22 @@ from rattail_corepos.corepos.util import get_max_existing_vendor_id
|
|||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FromRattailToCore(importing.FromRattailHandler):
|
||||
class ToCOREAPIHandler(importing.ImportHandler):
|
||||
"""
|
||||
Rattail -> CORE-POS export handler
|
||||
Base class for handlers targeting the CORE API.
|
||||
"""
|
||||
local_key = 'corepos_api'
|
||||
generic_local_title = "CORE Office (API)"
|
||||
|
||||
@property
|
||||
def local_title(self):
|
||||
return "CORE-POS (API)"
|
||||
|
||||
|
||||
class FromRattailToCore(importing.FromRattailHandler, ToCOREAPIHandler):
|
||||
"""
|
||||
Rattail -> CORE-POS export handler
|
||||
"""
|
||||
direction = 'export'
|
||||
|
||||
def get_importers(self):
|
||||
|
|
|
@ -60,18 +60,9 @@ class ExportLaneOp(commands.ImportSubcommand):
|
|||
"""
|
||||
name = 'export-lane-op'
|
||||
description = __doc__.strip()
|
||||
default_handler_spec = 'rattail_corepos.corepos.lane.importing.op.office:FromCoreOfficeToCoreLane'
|
||||
handler_key = 'to_corepos_db_lane_op.from_corepos_db_office_op.export'
|
||||
default_dbkey = 'default'
|
||||
|
||||
def get_handler_factory(self, **kwargs):
|
||||
if self.config:
|
||||
spec = self.config.get('corepos.lane.importing', 'office.handler',
|
||||
default=self.default_handler_spec)
|
||||
else:
|
||||
# just use default, for sake of cmd line help
|
||||
spec = self.default_handler_spec
|
||||
return load_object(spec)
|
||||
|
||||
def add_parser_args(self, parser):
|
||||
super(ExportLaneOp, self).add_parser_args(parser)
|
||||
parser.add_argument('--dbkey', metavar='KEY', default=self.default_dbkey,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue