from typing import Dict, Collection from camisatoshi_wordpress_reports.constants import order_keys, custom_meta_data_keys class Order: def __init__(self, raw_data: Dict): self.raw_data = raw_data def __getitem__(self, item): return self.raw_data[item] @property def meta_data_entries(self): return { meta_data_entry["key"]: meta_data_entry["value"] for meta_data_entry in self.raw_data[order_keys.meta_data] } def contains_sku(self, sku: str) -> bool: for item in self[order_keys.line_items]: if item[order_keys.line_item_keys.sku] == sku: return True return False def contains_meta_data_entry(self, meta_data_entry_key: str) -> bool: if meta_data_entry_key in self.meta_data_entries.keys(): return True return False def is_settled_with_um(self): is_settled = self.meta_data_entries.get( custom_meta_data_keys.is_settled_with_um, None ) return bool(is_settled) @classmethod def from_api_response(cls, raw_data) -> "Order": return Order(raw_data) class Orders: def __init__(self, orders: Collection[Order]): self._orders = orders