Add core-office import-csv command; deprecate crepes import-csv

This commit is contained in:
Lance Edgar 2023-06-09 19:53:47 -05:00
parent 6267205966
commit 2cf865d879
5 changed files with 46 additions and 31 deletions

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# Rattail -- Retail Software Framework # Rattail -- Retail Software Framework
# Copyright © 2010-2021 Lance Edgar # Copyright © 2010-2023 Lance Edgar
# #
# This file is part of Rattail. # This file is part of Rattail.
# #
@ -24,13 +24,12 @@
CORE-POS commands CORE-POS commands
""" """
from __future__ import unicode_literals, absolute_import
import sys import sys
import warnings
from rattail import commands from rattail import commands
from rattail_corepos import __version__ from rattail_corepos import __version__
from rattail.util import load_object from rattail_corepos.corepos.office.commands import ImportCSV
def main(*args): def main(*args):
@ -118,24 +117,10 @@ class ImportCore(ImportToCore):
return kwargs return kwargs
class ImportCSV(commands.ImportFileSubcommand): class LegacyImportCSV(ImportCSV):
"""
Import data from CSV file(s) to CORE database
"""
name = 'import-csv'
description = __doc__.strip()
handler_key = 'to_corepos_db_office_op.from_csv.import'
def add_parser_args(self, parser): def __init__(self, *args, **kwargs):
super(ImportCSV, self).add_parser_args(parser) warnings.warn("the `crepes import-csv` command is deprecated; "
parser.add_argument('--dbkey', metavar='KEY', default='default', "please use `core-office import-csv` instead",
help="Config key for database engine to be used as the \"target\" " DeprecationWarning, stacklevel=2)
"CORE DB, i.e. where data will be imported *to*. This key must be " super().__init__(*args, **kwargs)
"defined in the [rattail_corepos.db] section of your config file.")
def get_handler_kwargs(self, **kwargs):
kwargs = super(ImportCSV, self).get_handler_kwargs(**kwargs)
if 'args' in kwargs:
args = kwargs['args']
kwargs['dbkey'] = args.dbkey
return kwargs

View file

@ -96,6 +96,32 @@ class GetConfigValue(commands.Subcommand):
self.stdout.write(f"{value}\n") self.stdout.write(f"{value}\n")
class ImportCSV(commands.ImportFileSubcommand):
"""
Import data from CSV to CORE Office "op" DB
"""
name = 'import-csv'
description = __doc__.strip()
handler_key = 'to_corepos_db_office_op.from_csv.import'
def add_parser_args(self, parser):
super().add_parser_args(parser)
parser.add_argument('--dbkey', metavar='KEY', default='default',
help="Config key for database engine to be used as the \"target\" "
"CORE DB, i.e. where data will be imported *to*. This key must be "
"defined in the [corepos.db.office_op] section of your config file.")
def get_handler_kwargs(self, **kwargs):
kwargs = super().get_handler_kwargs(**kwargs)
if 'args' in kwargs:
args = kwargs['args']
kwargs['dbkey'] = args.dbkey
return kwargs
class ImportSelf(commands.ImportSubcommand): class ImportSelf(commands.ImportSubcommand):
""" """
Import data from CORE Office ("op" DB) to "self" Import data from CORE Office ("op" DB) to "self"

View file

@ -28,8 +28,7 @@ from corepos.db.office_op import model as corepos, Session as CoreSession
from rattail.importing.handlers import FromFileHandler from rattail.importing.handlers import FromFileHandler
from rattail.importing.csv import FromCSVToSQLAlchemyMixin from rattail.importing.csv import FromCSVToSQLAlchemyMixin
from rattail_corepos.corepos.office.importing.db.model import ToCore from rattail_corepos.corepos.office.importing.db.model import ToCoreHandler, ToCore
from rattail_corepos.corepos.office.importing.db.corepos import ToCoreHandler
class FromCSVToCore(FromCSVToSQLAlchemyMixin, FromFileHandler, ToCoreHandler): class FromCSVToCore(FromCSVToSQLAlchemyMixin, FromFileHandler, ToCoreHandler):
@ -39,10 +38,6 @@ class FromCSVToCore(FromCSVToSQLAlchemyMixin, FromFileHandler, ToCoreHandler):
host_title = "CSV" host_title = "CSV"
ToParent = ToCore ToParent = ToCore
@property
def local_title(self):
return "CORE ({})".format(self.dbkey)
def get_model(self): def get_model(self):
return corepos return corepos

View file

@ -35,6 +35,14 @@ class core_office_export_lane_op_updates(ImporterEmail):
abstract = False abstract = False
class core_office_import_csv_updates(ImporterEmail):
"""
Sent when CSV -> CORE import involves data changes.
"""
handler_spec = 'rattail_corepos.corepos.office.importing.db.csv:FromCSVToCore'
abstract = False
class corepos_problems_invalid_person_numbers(ProblemReportEmail): class corepos_problems_invalid_person_numbers(ProblemReportEmail):
""" """
Looks for `custdata` records with invalid person number sequence. Looks for `custdata` records with invalid person number sequence.

View file

@ -42,6 +42,7 @@ console_scripts =
core_office.commands = core_office.commands =
export-lane-op = rattail_corepos.corepos.office.commands:ExportLaneOp export-lane-op = rattail_corepos.corepos.office.commands:ExportLaneOp
import-csv = rattail_corepos.corepos.office.commands:ImportCSV
import-self = rattail_corepos.corepos.office.commands:ImportSelf import-self = rattail_corepos.corepos.office.commands:ImportSelf
get-config-value = rattail_corepos.corepos.office.commands:GetConfigValue get-config-value = rattail_corepos.corepos.office.commands:GetConfigValue
@ -49,7 +50,7 @@ crepes.commands =
export-core = rattail_corepos.corepos.commands:ExportCore export-core = rattail_corepos.corepos.commands:ExportCore
export-csv = rattail_corepos.corepos.commands:ExportCSV export-csv = rattail_corepos.corepos.commands:ExportCSV
import-core = rattail_corepos.corepos.commands:ImportCore import-core = rattail_corepos.corepos.commands:ImportCore
import-csv = rattail_corepos.corepos.commands:ImportCSV import-csv = rattail_corepos.corepos.commands:LegacyImportCSV
rattail.config.extensions = rattail.config.extensions =
rattail-corepos = rattail_corepos.config:RattailCOREPOSExtension rattail-corepos = rattail_corepos.config:RattailCOREPOSExtension