Commit ba7b016d by Malik Shahzad

Merge pull request #757 from edx/malikshahzad228/basket-view-switch

WL-457, WL458: Basket Switch View links added
parents ce8ff8ee 46104dde
...@@ -4,10 +4,12 @@ from django.conf import settings ...@@ -4,10 +4,12 @@ from django.conf import settings
from django.utils.translation import ugettext_lazy as _ 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.core.constants import ENROLLMENT_CODE_PRODUCT_CLASS_NAME, SEAT_PRODUCT_CLASS_NAME
from ecommerce.referrals.models import Referral from ecommerce.referrals.models import Referral
Applicator = get_class('offer.utils', 'Applicator') Applicator = get_class('offer.utils', 'Applicator')
Basket = get_model('basket', 'Basket') Basket = get_model('basket', 'Basket')
StockRecord = get_model('partner', 'StockRecord')
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -63,3 +65,23 @@ def get_certificate_type_display_value(certificate_type): ...@@ -63,3 +65,23 @@ def get_certificate_type_display_value(certificate_type):
raise ValueError('Certificate Type [%s] not found.', certificate_type) raise ValueError('Certificate Type [%s] not found.', certificate_type)
return display_values[certificate_type] return display_values[certificate_type]
def get_basket_switch_data(product):
product_class_name = product.get_product_class().name
if product_class_name == ENROLLMENT_CODE_PRODUCT_CLASS_NAME:
switch_link_text = _('Click here to just purchase an enrollment for yourself')
structure = 'child'
elif product_class_name == SEAT_PRODUCT_CLASS_NAME:
switch_link_text = _('Click here to purchase multiple seats in this course')
structure = 'standalone'
try:
partner_sku = StockRecord.objects.get(
product__course_id=product.course_id,
product__structure=structure).partner_sku
except StockRecord.DoesNotExist:
partner_sku = None
return switch_link_text, partner_sku
...@@ -19,7 +19,7 @@ from ecommerce.core.url_utils import get_lms_url, get_lms_enrollment_base_api_ur ...@@ -19,7 +19,7 @@ from ecommerce.core.url_utils import get_lms_url, get_lms_enrollment_base_api_ur
from ecommerce.coupons.views import get_voucher_from_code from ecommerce.coupons.views import get_voucher_from_code
from ecommerce.courses.utils import mode_for_seat from ecommerce.courses.utils import mode_for_seat
from ecommerce.extensions.analytics.utils import prepare_analytics_data from ecommerce.extensions.analytics.utils import prepare_analytics_data
from ecommerce.extensions.basket.utils import get_certificate_type_display_value, prepare_basket from ecommerce.extensions.basket.utils import get_certificate_type_display_value, prepare_basket, get_basket_switch_data
from ecommerce.extensions.offer.utils import format_benefit_value from ecommerce.extensions.offer.utils import format_benefit_value
from ecommerce.extensions.partner.shortcuts import get_partner_for_site from ecommerce.extensions.partner.shortcuts import get_partner_for_site
...@@ -112,8 +112,8 @@ class BasketSummaryView(BasketView): ...@@ -112,8 +112,8 @@ class BasketSummaryView(BasketView):
lines = context.get('line_list', []) lines = context.get('line_list', [])
lines_data = [] lines_data = []
api = EdxRestApiClient(get_lms_url('api/courses/v1/')) api = EdxRestApiClient(get_lms_url('api/courses/v1/'))
is_verification_required = False is_verification_required = is_bulk_purchase = False
is_bulk_purchase = False switch_link_text = partner_sku = ''
for line in lines: for line in lines:
course_key = CourseKey.from_string(line.product.attr.course_key) course_key = CourseKey.from_string(line.product.attr.course_key)
...@@ -137,6 +137,9 @@ class BasketSummaryView(BasketView): ...@@ -137,6 +137,9 @@ class BasketSummaryView(BasketView):
if line.product.get_product_class().name == ENROLLMENT_CODE_PRODUCT_CLASS_NAME: if line.product.get_product_class().name == ENROLLMENT_CODE_PRODUCT_CLASS_NAME:
is_bulk_purchase = True is_bulk_purchase = True
# Get variables for alternative basket view
switch_link_text, partner_sku = get_basket_switch_data(line.product)
if line.has_discount: if line.has_discount:
benefit = self.request.basket.applied_offers().values()[0].benefit benefit = self.request.basket.applied_offers().values()[0].benefit
benefit_value = format_benefit_value(benefit) benefit_value = format_benefit_value(benefit)
...@@ -176,5 +179,8 @@ class BasketSummaryView(BasketView): ...@@ -176,5 +179,8 @@ class BasketSummaryView(BasketView):
'is_verification_required': is_verification_required, 'is_verification_required': is_verification_required,
'min_seat_quantity': 1, 'min_seat_quantity': 1,
'is_bulk_purchase': is_bulk_purchase, 'is_bulk_purchase': is_bulk_purchase,
'switch_link_text': switch_link_text,
'partner_sku': partner_sku,
}) })
return context return context
...@@ -4,7 +4,7 @@ from hashlib import md5 ...@@ -4,7 +4,7 @@ from hashlib import md5
from oscar.core.loading import get_model from oscar.core.loading import get_model
from ecommerce.core.constants import ENROLLMENT_CODE_PRODUCT_CLASS_NAME from ecommerce.core.constants import ENROLLMENT_CODE_PRODUCT_CLASS_NAME, SEAT_PRODUCT_CLASS_NAME
Catalog = get_model('catalogue', 'Catalog') Catalog = get_model('catalogue', 'Catalog')
StockRecord = get_model('partner', 'StockRecord') StockRecord = get_model('partner', 'StockRecord')
...@@ -32,7 +32,7 @@ def generate_sku(product, partner): ...@@ -32,7 +32,7 @@ def generate_sku(product, partner):
getattr(product.attr, 'seat_type', ''), getattr(product.attr, 'seat_type', ''),
unicode(partner.id) unicode(partner.id)
)) ))
elif product_class.name == 'Seat': elif product_class.name == SEAT_PRODUCT_CLASS_NAME:
_hash = ' '.join(( _hash = ' '.join((
getattr(product.attr, 'certificate_type', ''), getattr(product.attr, 'certificate_type', ''),
product.attr.course_key, product.attr.course_key,
......
...@@ -194,6 +194,10 @@ ...@@ -194,6 +194,10 @@
@include float(right); @include float(right);
} }
.basket-switch-link {
padding: 10px 10px 10px 0px;
}
.payment-buttons { .payment-buttons {
.payment-button { .payment-button {
border-color: #1E8142; border-color: #1E8142;
......
...@@ -129,7 +129,16 @@ ...@@ -129,7 +129,16 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col-lg-6 col-lg-offset-6 col-md-8 col-md-offset-4 col-sm-10 col-sm-offset-2"> <div class="col-sm-12">
{# Switch Basket view in between single and bulk purchase items #}
{% if partner_sku %}
<div class="pull-left basket-switch-link">
<a href="/basket/single-item/?sku={{ partner_sku }}" class="btn btn-link">
{{ switch_link_text }}
</a>
</div>
{% endif %}
<div class="pull-right payment-buttons" data-basket-id="{{ basket.id }}"> <div class="pull-right payment-buttons" data-basket-id="{{ basket.id }}">
{% if free_basket %} {% if free_basket %}
<a href="{% url 'checkout:free-checkout' %}" <a href="{% url 'checkout:free-checkout' %}"
......
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