Commit 51c8478f by christopher lee

WIP: ProgramApplicator

parent a0e43486
...@@ -13,12 +13,13 @@ from django.utils.translation import ugettext_lazy as _ ...@@ -13,12 +13,13 @@ from django.utils.translation import ugettext_lazy as _
from oscar.core.loading import get_class, get_model from oscar.core.loading import get_class, get_model
from ecommerce.courses.utils import mode_for_product from ecommerce.courses.utils import mode_for_product
from ecommerce.extensions.offer.applicator import ProgramApplicator
from ecommerce.extensions.order.exceptions import AlreadyPlacedOrderException from ecommerce.extensions.order.exceptions import AlreadyPlacedOrderException
from ecommerce.extensions.order.utils import UserAlreadyPlacedOrder from ecommerce.extensions.order.utils import UserAlreadyPlacedOrder
from ecommerce.extensions.payment.utils import embargo_check from ecommerce.extensions.payment.utils import embargo_check
from ecommerce.referrals.models import Referral from ecommerce.referrals.models import Referral
Applicator = get_class('offer.applicator', 'Applicator') Applicator = ProgramApplicator
Basket = get_model('basket', 'Basket') Basket = get_model('basket', 'Basket')
BasketAttribute = get_model('basket', 'BasketAttribute') BasketAttribute = get_model('basket', 'BasketAttribute')
BasketAttributeType = get_model('basket', 'BasketAttributeType') BasketAttributeType = get_model('basket', 'BasketAttributeType')
......
import logging
from itertools import chain
import newrelic
import waffle
from oscar.core.loading import get_model, get_class
ConditionalOffer = get_model('offer', 'ConditionalOffer')
Applicator = get_class('offer.utils', 'Applicator')
logger = logging.getLogger(__name__)
class ProgramApplicator(Applicator):
@newrelic.agent.function_trace()
def apply_offers(self, basket, offers):
super(ProgramApplicator, self).apply_offers(basket, offers)
def get_offers(self, basket, user=None, request=None):
import pdb
pdb.set_trace()
if waffle.switch_is_active("debug_selective_offers"):
site_offers = self.get_site_offers()
logger.info("ProgramApplicator.get_offers.site_offers: {}".format(site_offers))
basket_offers = self.get_basket_offers(basket, user)
logger.info("ProgramApplicator.get_offers.site_offers: {}".format(basket_offers))
user_offers = self.get_user_offers(user)
logger.info("ProgramApplicator.get_offers.site_offers: {}".format(user_offers))
session_offers = self.get_session_offers(request)
logger.info("ProgramApplicator.get_offers.site_offers: {}".format(session_offers))
return list(sorted(chain(
session_offers, basket_offers, user_offers, site_offers),
key=lambda o: o.priority, reverse=True))
else:
super(ProgramApplicator, self).get_offers(basket, user, request)
...@@ -584,17 +584,17 @@ ENABLE_ENTERPRISE_ON_RUNTIME_SWITCH = 'enable_enterprise_on_runtime' ...@@ -584,17 +584,17 @@ ENABLE_ENTERPRISE_ON_RUNTIME_SWITCH = 'enable_enterprise_on_runtime'
ENTERPRISE_CUSTOMER_COOKIE_NAME = 'enterprise_customer_uuid' ENTERPRISE_CUSTOMER_COOKIE_NAME = 'enterprise_customer_uuid'
# END ENTERPRISE APP CONFIGURATION # END ENTERPRISE APP CONFIGURATION
# DJANGO DEBUG TOOLBAR CONFIGURATION # # DJANGO DEBUG TOOLBAR CONFIGURATION
# http://django-debug-toolbar.readthedocs.org/en/latest/installation.html # # http://django-debug-toolbar.readthedocs.org/en/latest/installation.html
if os.environ.get('ENABLE_DJANGO_TOOLBAR', False): # if os.environ.get('ENABLE_DJANGO_TOOLBAR', False):
INSTALLED_APPS += [ # INSTALLED_APPS += [
'debug_toolbar', # 'debug_toolbar',
] # ]
#
MIDDLEWARE_CLASSES += ( # MIDDLEWARE_CLASSES += (
'debug_toolbar.middleware.DebugToolbarMiddleware', # 'debug_toolbar.middleware.DebugToolbarMiddleware',
) # )
# END DJANGO DEBUG TOOLBAR CONFIGURATION # # END DJANGO DEBUG TOOLBAR CONFIGURATION
# Determines if events are actually sent to Segment. This should only be set to False for testing purposes. # Determines if events are actually sent to Segment. This should only be set to False for testing purposes.
SEND_SEGMENT_EVENTS = True SEND_SEGMENT_EVENTS = True
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment