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
# Copyright © 2010-2023 Lance Edgar
# Copyright © 2010-2024 Lance Edgar
#
# This file is part of Rattail.
#
@ -24,11 +24,101 @@
Rattail Commands
"""
from rattail import commands
from rattail.util import load_object
import typer
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
"""
@ -37,7 +127,7 @@ class ExportCore(commands.ImportSubcommand):
handler_key = 'to_corepos_api.from_rattail.export'
class ImportCOREPOSAPI(commands.ImportSubcommand):
class ImportCOREPOSAPI(ImportSubcommand):
"""
Import data from a CORE POS API
"""
@ -46,7 +136,7 @@ class ImportCOREPOSAPI(commands.ImportSubcommand):
handler_key = 'to_rattail.from_corepos_api.import'
class ImportCOREPOSDB(commands.ImportSubcommand):
class ImportCOREPOSDB(ImportSubcommand):
"""
Import data from a CORE POS database
"""
@ -76,7 +166,7 @@ class ImportCOREPOSDB(commands.ImportSubcommand):
return kwargs
class CoreImportSquare(commands.ImportFromCSV):
class CoreImportSquare(ImportFileSubcommand):
"""
Import transaction data from Square into CORE
"""

View file

@ -25,13 +25,14 @@ CORE Office commands
"""
import sys
from enum import Enum
import requests
from requests.auth import HTTPDigestAuth
import typer
from typing_extensions import Annotated
from corepos.enum import CoreDbType
from rattail.commands.typer import (make_typer, typer_eager_imports,
importer_command, typer_get_runas_user,
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
class CoreDbType(str, Enum):
office_op = 'office_op'
office_trans = 'office_trans'
office_arch = 'office_arch'
core_office_typer = make_typer(
name='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-db = rattail_corepos.commands:ImportCOREPOSDB
rattail.typer_imports =
rattail_corepos = rattail_corepos.commands
rattail.emails =
rattail_corepos = rattail_corepos.emails