Managed to get the sku doing the same thing as the previous code.
This commit is contained in:
parent
f3776966bc
commit
83743ca526
5 changed files with 43 additions and 13 deletions
|
|
@ -5,7 +5,10 @@ import typer
|
|||
from typing_extensions import Annotated
|
||||
|
||||
import camisatoshi_wordpress_reports.controllers as controllers
|
||||
import camisatoshi_wordpress_reports.logging as our_logging
|
||||
|
||||
|
||||
our_logging.set_config_level()
|
||||
app = typer.Typer()
|
||||
|
||||
|
||||
|
|
@ -20,7 +23,7 @@ def generate_sku_report(
|
|||
end_date: Annotated[datetime.datetime, typer.Option(prompt=True)],
|
||||
sku: Annotated[str, typer.Option(prompt=True)]
|
||||
):
|
||||
controllers.generate_sku_report(start_date, end_date, sku)
|
||||
controllers.wip_generate_sku_report(start_date, end_date, sku)
|
||||
|
||||
@app.command()
|
||||
def generate_um_report(
|
||||
|
|
|
|||
|
|
@ -13,7 +13,11 @@ from camisatoshi_wordpress_reports.constants import (
|
|||
DEFAULT_DOTENV_FILEPATH,
|
||||
bbo_royalty_fee,
|
||||
)
|
||||
from camisatoshi_wordpress_reports.report_building import ReportChainBuilder, WoocomerceOrderScope, keep_orders_containing_sku
|
||||
from camisatoshi_wordpress_reports.report_building import (
|
||||
ReportChainBuilder,
|
||||
WoocomerceOrderScope,
|
||||
keep_orders_containing_sku,
|
||||
)
|
||||
|
||||
API_CONFIG = dotenv_values(
|
||||
dotenv_path=Path.home() / Path(DEFAULT_DOTENV_FILEPATH)
|
||||
|
|
@ -25,7 +29,6 @@ WC_API = API(
|
|||
version=API_CONFIG["VERSION"],
|
||||
)
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger()
|
||||
|
||||
|
||||
|
|
@ -189,15 +192,12 @@ def wip_generate_sku_report(start_date, end_date, sku):
|
|||
wc_order_scope=WoocomerceOrderScope(
|
||||
after=start_date.isoformat(),
|
||||
before=end_date.isoformat(),
|
||||
status="processing,completed"
|
||||
status="processing,completed",
|
||||
)
|
||||
)
|
||||
|
||||
report_chain_builder.add_order_filtering_step(
|
||||
partial(
|
||||
keep_orders_containing_sku,
|
||||
sku=sku
|
||||
)
|
||||
partial(keep_orders_containing_sku, sku=sku)
|
||||
)
|
||||
|
||||
report_chain = report_chain_builder.get_report_chain()
|
||||
|
|
|
|||
4
camisatoshi_wordpress_reports/logging.py
Normal file
4
camisatoshi_wordpress_reports/logging.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
import logging
|
||||
|
||||
def set_config_level():
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
|
|
@ -1,9 +1,12 @@
|
|||
import logging
|
||||
from typing import Dict, Collection
|
||||
|
||||
from camisatoshi_wordpress_reports.constants import order_keys, custom_meta_data_keys
|
||||
from camisatoshi_wordpress_reports.utils import safe_zero_division
|
||||
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
class Order:
|
||||
def __init__(self, raw_data: Dict):
|
||||
self.raw_data = raw_data
|
||||
|
|
@ -47,9 +50,12 @@ class Order:
|
|||
return sats_received_for_sku
|
||||
|
||||
def contains_sku(self, sku: str) -> bool:
|
||||
logger.debug(f"Checking if order {self['id']} contains sku {sku}.")
|
||||
for item in self[order_keys.line_items]:
|
||||
if item[order_keys.line_item_keys.sku] == sku:
|
||||
logger.debug(f"It does.")
|
||||
return True
|
||||
logger.debug("It doesn't.")
|
||||
return False
|
||||
|
||||
def contains_meta_data_entry(self, meta_data_entry_key: str) -> bool:
|
||||
|
|
@ -94,6 +100,8 @@ class Orders:
|
|||
if order.contains_sku(sku):
|
||||
filtered_orders.append(order)
|
||||
|
||||
logger.debug(f"Finished filtering. I have {len(filtered_orders)} orders.")
|
||||
|
||||
return Orders(filtered_orders)
|
||||
|
||||
def filter_orders_without_sats_received(self) -> "Orders":
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import logging
|
||||
from functools import partial
|
||||
|
||||
from woocommerce import API
|
||||
|
|
@ -5,6 +6,9 @@ from woocommerce import API
|
|||
from camisatoshi_wordpress_reports.order import Orders, Order
|
||||
|
||||
|
||||
logger = logging.getLogger()
|
||||
|
||||
|
||||
class MetadataFilter:
|
||||
def __init__(self, key, value, operator):
|
||||
self.key = key
|
||||
|
|
@ -83,28 +87,39 @@ def validate_orders_satisfy_metadata_filter(
|
|||
class ReportChain:
|
||||
def __init__(self):
|
||||
self.order_fetching_step = None
|
||||
self.order_filtering_steps = None
|
||||
self.order_validation_steps = None
|
||||
self.transformation_steps = None
|
||||
self.storage_steps = None
|
||||
self.order_filtering_steps = []
|
||||
self.order_validation_steps = []
|
||||
|
||||
self._orders = None
|
||||
|
||||
def run_chain(self, wc_api_client: API):
|
||||
logger.info("Running report chain.")
|
||||
|
||||
self._run_order_fetching_step(wc_api_client)
|
||||
self._run_order_filtering_steps()
|
||||
self._run_order_validation_steps()
|
||||
|
||||
logger.info(f"Report chain ran. Returning {len(self._orders)} orders.")
|
||||
|
||||
return self._orders
|
||||
|
||||
def _run_order_fetching_step(self, wc_api_client: API) -> Orders:
|
||||
logger.debug("Running order fetching step.")
|
||||
self._orders = self.order_fetching_step(wc_api_client)
|
||||
logger.debug(f"Received {self._orders} orders.")
|
||||
|
||||
def _run_order_filtering_steps(self) -> Orders:
|
||||
logger.debug(
|
||||
f"Running {len(self.order_filtering_steps)} order filtering steps."
|
||||
)
|
||||
temp_orders = self._orders
|
||||
|
||||
for order_filtering_step in self.order_filtering_steps:
|
||||
logger.debug(f"{len(temp_orders)} before filtering.")
|
||||
temp_orders = order_filtering_step(temp_orders)
|
||||
logger.debug(f"{len(temp_orders)} after filtering.")
|
||||
|
||||
return temp_orders
|
||||
self._orders = temp_orders
|
||||
|
||||
def _run_order_validation_steps(self):
|
||||
for order_validation_step in self.order_validation_steps:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue