Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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 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
Ejemplo n.º 7
0
 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
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 def proxy(self):
     if self.proxy_class:
         return utils.load_proxy(self.proxy_class)()
Ejemplo n.º 10
0
 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()
Ejemplo n.º 12
0
 def proxy(self):
     if self.proxy_class:
         Klass = load_proxy(self.proxy_class)
         return _init_proxy_class(self, Klass)
     return super().proxy()