2121
2222from viur import toolkit
2323from viur .core import current , db , utils
24- from viur .core .skeleton import SkeletonInstance
24+ from viur .core .skeleton import RefSkel , RelSkel , SkeletonInstance
2525from .enums import ApplicationDomain , ConditionOperator , DiscountType
2626from .exceptions import InvalidStateError
2727from ..globals import SHOP_INSTANCE , SHOP_LOGGER
2828from ..types import ConfigurationError , DiscountValidationContext
29+ from viur .core .skeleton .utils import is_skeletoninstance_of
2930
3031if t .TYPE_CHECKING :
3132 from ..modules import Discount
@@ -70,7 +71,9 @@ def __init__(self, src_object: SkeletonInstance):
7071 super ().__init__ ()
7172 # logger.debug(f"Creating new price object based on {src_object=}")
7273 shop = SHOP_INSTANCE .get ()
73- if isinstance (src_object , SkeletonInstance ) and issubclass (src_object .skeletonCls , shop .cart .leafSkelCls ):
74+ if is_skeletoninstance_of (src_object , shop .cart .leafSkelCls ):
75+ # if isinstance(src_object, SkeletonInstance) and (issubclass(src_object.skeletonCls, shop.cart.leafSkelCls)
76+ # or issubclass(src_object.skeletonCls, RefSkel) and issubclass( src_object.skeletonCls.skeletonCls,shop.cart.leafSkelCls)):
7477 self .is_in_cart = True
7578 self .cart_leaf = src_object
7679 self .article_skel = toolkit .without_render_preparation (src_object .article_skel_full )
@@ -80,10 +83,14 @@ def __init__(self, src_object: SkeletonInstance):
8083 logger .exception (exc )
8184 self .cart_discounts = []
8285 self .cart_discounts = [toolkit .get_full_skel_from_ref_skel (d ) for d in self .cart_discounts ]
83- elif isinstance (src_object , SkeletonInstance ) and issubclass (src_object .skeletonCls , shop .article_skel ):
86+ elif is_skeletoninstance_of (src_object , shop .article_skel ):
87+ # elif isinstance(src_object, SkeletonInstance) and (issubclass(src_object.skeletonCls, shop.article_skel)
88+ # or issubclass(src_object.skeletonCls, RefSkel) and issubclass( src_object.skeletonCls.skeletonCls,shop.article_skel)):
8489 self .is_in_cart = False
8590 self .article_skel = toolkit .without_render_preparation (src_object )
8691 else :
92+ logger .error (f"Unsupported type { type (src_object )= } | { src_object .skeletonCls = } " )
93+ logger .error (f"Unsupported type { type (src_object )= } | { type (src_object .skeletonCls )= } " )
8794 raise TypeError (f"Unsupported type { type (src_object )} " )
8895
8996 # logger.debug(f"{self.article_skel = }")
0 commit comments