| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- from django.core import exceptions
-
- from oscar.apps.offer.models import Range, Condition, Benefit
-
-
- def _class_path(klass):
- return '%s.%s' % (klass.__module__, klass.__name__)
-
-
- def create_range(range_class):
- """
- Create a custom range instance
- """
- if not hasattr(range_class, 'name'):
- raise exceptions.ValidationError(
- "A custom range must have a name attribute")
- return Range.objects.create(
- name=range_class.name,
- proxy_class=_class_path(range_class))
-
-
- def create_condition(condition_class):
- """
- Create a custom condition instance
- """
- return Condition.objects.create(
- proxy_class=_class_path(condition_class))
-
-
- def create_benefit(benefit_class):
- """
- Create a custom benefit instance
- """
- # The custom benefit_class must override __unicode__ and description to
- # avoid a recursion error
- if benefit_class.description is Benefit.description:
- raise RuntimeError("Your custom benefit must implement its own "
- "'description' property")
- return Benefit.objects.create(
- proxy_class=_class_path(benefit_class))
|