diff --git a/stockcli/cli.py b/stockcli/cli.py --- a/stockcli/cli.py +++ b/stockcli/cli.py @@ -1,13 +1,16 @@ import json import logging import logging.config +from datetime import timedelta from operator import itemgetter import click import requests +import requests_cache from rich.panel import Panel from rich.table import Table +from .books import add_book_by_barcode, update_isbn from .console import DEFAULT_PADDING, console, int_prompt, prompt from .stock import ( add_by_barcode, @@ -22,6 +25,7 @@ TASK_MAP = { "2": ("Add stock", add_by_barcode), "3": ("Update stock", update_by_barcode), "4": ("Get product info", get_info_by_barcode), + "5": ("Add book", add_book_by_barcode), } @@ -48,6 +52,22 @@ def stockcli(ctx: click.Context, configf "GROCY-API-KEY": config["grocy"]["apikey"], } ) + ctx.obj["cached_session"] = requests_cache.CachedSession( + "stockcli", + ignored_parameters=["GROCY-API-KEY"], + expire_after=timedelta(days=1), + cache_control=True, + allowable_methods=["GET", "POST"], + allowable_codes=[200, 400], + match_headers=True, + stale_if_error=True, + ) + ctx.obj["cached_session"].headers.update( + { + "accept": "application/json", + "GROCY-API-KEY": config["grocy"]["apikey"], + } + ) ctx.obj["base_url"] = f"{config['grocy']['url']}/api/" menu = Table.grid(padding=DEFAULT_PADDING)