Coverage for amazonorders/entity/shipment.py: 100.00%
27 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 21:17 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 21:17 +0000
1import logging
3from amazonorders.entity.item import Item
4from amazonorders.entity.parsable import Parsable
6from amazonorders.session import BASE_URL
8__author__ = "Alex Laird"
9__copyright__ = "Copyright 2024, Alex Laird"
10__version__ = "0.0.5"
12logger = logging.getLogger(__name__)
15class Shipment(Parsable):
16 def __init__(self,
17 parsed,
18 order) -> None:
19 super().__init__(parsed)
21 self.order = order
23 self.items = self._parse_items()
24 self.delivery_status = self.safe_parse(self._parse_delivery_status)
25 self.tracking_link = self.safe_parse(self._parse_tracking_link)
27 def __repr__(self) -> str:
28 return "<Shipment: \"{}\">".format(self.items)
30 def __str__(self) -> str: # pragma: no cover
31 return "Shipment: \"{}\"".format(self.items)
33 def _parse_items(self):
34 return [Item(x) for x in self.parsed.find_all("div", {"class": "yohtmlc-item"})]
36 def _parse_delivery_status(self):
37 tag = self.parsed.find("div", {"class": "js-shipment-info-container"})
38 if tag:
39 tag = tag.find("div", {"class": "a-row"})
40 return tag.text.strip()
42 def _parse_tracking_link(self):
43 tag = self.parsed.find("span", {"class": "track-package-button"})
44 if tag:
45 link_tag = tag.find("a")
46 return "{}{}".format(BASE_URL, link_tag.attrs["href"])