Add typer equivalents for rattail commands

This commit is contained in:
Lance Edgar 2024-05-16 19:16:08 -05:00
parent 93c7b254a3
commit ea147e8c0d
3 changed files with 102 additions and 14 deletions

View file

@ -2,7 +2,7 @@
################################################################################ ################################################################################
# #
# Rattail -- Retail Software Framework # Rattail -- Retail Software Framework
# Copyright © 2010-2023 Lance Edgar # Copyright © 2010-2024 Lance Edgar
# #
# This file is part of Rattail. # This file is part of Rattail.
# #
@ -24,11 +24,101 @@
Rattail Commands Rattail Commands
""" """
from rattail import commands import typer
from rattail.util import load_object from typing_extensions import Annotated
from corepos.enum import CoreDbType
from rattail.commands import rattail_typer
from rattail.commands.typer import importer_command, file_importer_command, typer_get_runas_user
from rattail.commands.importing import (ImportSubcommand, ImportFileSubcommand,
ImportCommandHandler)
class ExportCore(commands.ImportSubcommand): @rattail_typer.command()
@file_importer_command
def corepos_import_square(
ctx: typer.Context,
**kwargs
):
"""
Import transaction data from Square into CORE
"""
config = ctx.parent.rattail_config
progress = ctx.parent.rattail_progress
handler = ImportCommandHandler(
config, import_handler_key='to_corepos_db_office_trans.from_square_csv.import')
kwargs['user'] = typer_get_runas_user(ctx)
handler.run(kwargs, progress=progress)
@rattail_typer.command()
@importer_command
def export_corepos(
ctx: typer.Context,
**kwargs
):
"""
Export data from Rattail to CORE-POS
"""
config = ctx.parent.rattail_config
progress = ctx.parent.rattail_progress
handler = ImportCommandHandler(
config, import_handler_key='to_corepos_api.from_rattail.export')
kwargs['user'] = typer_get_runas_user(ctx)
handler.run(kwargs, progress=progress)
@rattail_typer.command()
@importer_command
def import_corepos_api(
ctx: typer.Context,
**kwargs
):
"""
Import data from a CORE POS API
"""
config = ctx.parent.rattail_config
progress = ctx.parent.rattail_progress
handler = ImportCommandHandler(
config, import_handler_key='to_rattail.from_corepos_api.import')
kwargs['user'] = typer_get_runas_user(ctx)
handler.run(kwargs, progress=progress)
@rattail_typer.command()
@importer_command
def import_corepos_db(
ctx: typer.Context,
corepos_dbtype: Annotated[
CoreDbType,
typer.Option(help="Type of CORE-POS DB engine to be used as data host. "
"This determines which config section is used with regard "
"to the --corepos-dbkey arg.")] = 'office_op',
corepos_dbkey: Annotated[
str,
typer.Option(help="Config key for CORE POS database engine to be used as "
"the \"host\", i.e. the source of the data to be imported. "
"This key must be defined in the [rattail_corepos.db] section "
"of your config file.")] = 'default',
**kwargs
):
"""
Import data from a CORE POS database
"""
config = ctx.parent.rattail_config
progress = ctx.parent.rattail_progress
handler = ImportCommandHandler(
config, import_handler_key='to_rattail.from_corepos_db_office_op.import')
kwargs['user'] = typer_get_runas_user(ctx)
kwargs['handler_kwargs'] = {
'corepos_dbtype': corepos_dbtype,
'corepos_dbkey': corepos_dbkey,
}
handler.run(kwargs, progress=progress)
class ExportCore(ImportSubcommand):
""" """
Export data from Rattail to CORE-POS Export data from Rattail to CORE-POS
""" """
@ -37,7 +127,7 @@ class ExportCore(commands.ImportSubcommand):
handler_key = 'to_corepos_api.from_rattail.export' handler_key = 'to_corepos_api.from_rattail.export'
class ImportCOREPOSAPI(commands.ImportSubcommand): class ImportCOREPOSAPI(ImportSubcommand):
""" """
Import data from a CORE POS API Import data from a CORE POS API
""" """
@ -46,7 +136,7 @@ class ImportCOREPOSAPI(commands.ImportSubcommand):
handler_key = 'to_rattail.from_corepos_api.import' handler_key = 'to_rattail.from_corepos_api.import'
class ImportCOREPOSDB(commands.ImportSubcommand): class ImportCOREPOSDB(ImportSubcommand):
""" """
Import data from a CORE POS database Import data from a CORE POS database
""" """
@ -76,7 +166,7 @@ class ImportCOREPOSDB(commands.ImportSubcommand):
return kwargs return kwargs
class CoreImportSquare(commands.ImportFromCSV): class CoreImportSquare(ImportFileSubcommand):
""" """
Import transaction data from Square into CORE Import transaction data from Square into CORE
""" """

View file

@ -25,13 +25,14 @@ CORE Office commands
""" """
import sys import sys
from enum import Enum
import requests import requests
from requests.auth import HTTPDigestAuth from requests.auth import HTTPDigestAuth
import typer import typer
from typing_extensions import Annotated from typing_extensions import Annotated
from corepos.enum import CoreDbType
from rattail.commands.typer import (make_typer, typer_eager_imports, from rattail.commands.typer import (make_typer, typer_eager_imports,
importer_command, typer_get_runas_user, importer_command, typer_get_runas_user,
file_importer_command, file_exporter_command) file_importer_command, file_exporter_command)
@ -41,12 +42,6 @@ from rattail_corepos.config import core_office_url
from rattail_corepos.corepos.office.util import get_fannie_config_value, get_blueline_template, make_blueline from rattail_corepos.corepos.office.util import get_fannie_config_value, get_blueline_template, make_blueline
class CoreDbType(str, Enum):
office_op = 'office_op'
office_trans = 'office_trans'
office_arch = 'office_arch'
core_office_typer = make_typer( core_office_typer = make_typer(
name='core_office', name='core_office',
help="core-office -- command line interface for CORE Office" help="core-office -- command line interface for CORE Office"

View file

@ -49,6 +49,9 @@ rattail.subcommands =
import-corepos-api = rattail_corepos.commands:ImportCOREPOSAPI import-corepos-api = rattail_corepos.commands:ImportCOREPOSAPI
import-corepos-db = rattail_corepos.commands:ImportCOREPOSDB import-corepos-db = rattail_corepos.commands:ImportCOREPOSDB
rattail.typer_imports =
rattail_corepos = rattail_corepos.commands
rattail.emails = rattail.emails =
rattail_corepos = rattail_corepos.emails rattail_corepos = rattail_corepos.emails