def proxy(self): from oscar.apps.offer import benefits klassmap = { self.PERCENTAGE: benefits.PercentageDiscountBenefit, self.FIXED: benefits.AbsoluteDiscountBenefit, self.MULTIBUY: benefits.MultibuyDiscountBenefit, self.FIXED_PRICE: benefits.FixedPriceBenefit, self.SHIPPING_ABSOLUTE: benefits.ShippingAbsoluteDiscountBenefit, self.SHIPPING_FIXED_PRICE: benefits.ShippingFixedPriceBenefit, self.SHIPPING_PERCENTAGE: benefits.ShippingPercentageDiscountBenefit } # Short-circuit logic if current class is already a proxy class. if self.__class__ in klassmap.values(): return self field_dict = dict(self.__dict__) for field in list(field_dict.keys()): if field.startswith('_'): del field_dict[field] if self.proxy_class: klass = utils.load_proxy(self.proxy_class) # Short-circuit again. if self.__class__ == klass: return self return klass(**field_dict) if self.type in klassmap: return klassmap[self.type](**field_dict) raise RuntimeError("Unrecognised benefit type (%s)" % self.type)
def proxy(self): """ Return the proxy model """ from oscar.apps.offer import conditions klassmap = { self.COUNT: conditions.CountCondition, self.VALUE: conditions.ValueCondition, self.COVERAGE: conditions.CoverageCondition } # Short-circuit logic if current class is already a proxy class. if self.__class__ in klassmap.values(): return self field_dict = dict(self.__dict__) for field in list(field_dict.keys()): if field.startswith('_'): del field_dict[field] if self.proxy_class: klass = utils.load_proxy(self.proxy_class) # Short-circuit again. if self.__class__ == klass: return self return klass(**field_dict) if self.type in klassmap: return klassmap[self.type](**field_dict) raise RuntimeError("Unrecognised condition type (%s)" % self.type)
def proxy(self): from . import fees klassmap = { self.PERCENTAGE: fees.PercentageFee, self.FIXED: fees.AbsoluteFee, } # Short-circuit logic if current class is already a proxy class. if self.__class__ in klassmap.values(): return self field_dict = dict(self.__dict__) for field in list(field_dict.keys()): if field.startswith('_'): del field_dict[field] if self.proxy_class: klass = utils.load_proxy(self.proxy_class) # Short-circuit again. if self.__class__ == klass: return self return klass(**field_dict) if self.type in klassmap: return klassmap[self.type](**field_dict) raise RuntimeError("Unrecognised benefit type (%s)" % self.type)
def save(self, *args, **kwargs): ret = super().save(*args, **kwargs) # If the elected proxy_class isn't a proxy model, it has it's own table where a row needs to exist. if self.proxy_class: Klass = load_proxy(self.proxy_class) if self.__class__ != Klass and not Klass._meta.proxy and not Klass.objects.filter(pk=self.pk).exists(): proxy_instance = copy.deepcopy(self) proxy_instance.__class__ = Klass proxy_instance.save(force_insert=True) return ret
def proxy(self): klassmap = self.proxy_map # Short-circuit logic if current class is already a proxy class. if self.__class__ in klassmap.values(): return self field_dict = dict(self.__dict__) for field in list(field_dict.keys()): if field.startswith('_'): del field_dict[field] if self.proxy_class: klass = utils.load_proxy(self.proxy_class) # Short-circuit again. if self.__class__ == klass: return self return klass(**field_dict) if self.type in klassmap: return klassmap[self.type](**field_dict) raise RuntimeError("Unrecognised benefit type (%s)" % self.type)
def proxy(self): if self.proxy_class: return utils.load_proxy(self.proxy_class)()
def proxy(self): if self.proxy_class: Klass = load_proxy(self.proxy_class) return _init_proxy_class(self, Klass) return super().proxy()