diff --git a/core/vendors/__init__.py b/core/vendors/__init__.py index 864dfe1c..8441b433 100644 --- a/core/vendors/__init__.py +++ b/core/vendors/__init__.py @@ -106,9 +106,10 @@ class AbstractVendor: self.vendor_name = vendor_name self.currency = currency self.blocked_attributes: list[Any] = [] + self.log(LogLevel.INFO, f"Initializing {self}...") def __str__(self) -> str: - return self.get_vendor_instance().name if self.get_vendor_instance() else self.vendor_name + return self.get_vendor_instance(safe=True).name if self.get_vendor_instance() else self.vendor_name def log(self, level: LogLevel, message: str) -> None: is_celery_runtime = False @@ -359,13 +360,17 @@ class AbstractVendor: return float(psychological) - def get_vendor_instance(self) -> Vendor | None: + def get_vendor_instance(self, safe: bool = False) -> Vendor | None: try: vendor = Vendor.objects.get(name=self.vendor_name) if vendor.is_active: return vendor + if safe: + return None raise VendorInactiveError(f"Vendor {self.vendor_name!r} is inactive...") except Vendor.DoesNotExist as dne: + if safe: + return None raise Exception(f"No matching vendor found with name {self.vendor_name!r}...") from dne def get_products(self) -> None: