Skip to content

Commit

Permalink
Restricted paid mode courses options for honor mode only customers (#57)
Browse files Browse the repository at this point in the history
  • Loading branch information
Muhammad Haseeb authored Oct 28, 2020
1 parent f02c97d commit 82c9ae6
Show file tree
Hide file tree
Showing 7 changed files with 77 additions and 18 deletions.
1 change: 1 addition & 0 deletions ecommerce/extensions/edly_ecommerce_app/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
default_app_config = 'ecommerce.extensions.edly_ecommerce_app.apps.EdlyEcommerceAppConfig' # pragma: no cover
2 changes: 1 addition & 1 deletion ecommerce/extensions/edly_ecommerce_app/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@


class EdlyEcommerceAppConfig(AppConfig):
name = 'edly_ecommerce_app'
name = 'ecommerce.extensions.edly_ecommerce_app'
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from django import template

register = template.Library()


@register.simple_tag(takes_context=True)
def site_configuration_value(context, name):
"""
Retrieve Configuration value for the key specified as name argument.
Arguments:
context (dict): Context of current request.
name (str): Name of the key for which to return configuration value.
Returns:
Configuration value for the given key or returns `None` if default is not available.
"""
request = context['request']
site_configuration = request.site.siteconfiguration
return site_configuration.get_edly_configuration_value(name)
26 changes: 26 additions & 0 deletions ecommerce/extensions/edly_ecommerce_app/tests/test_templatetags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-

from django.template import Context, Template

from ecommerce.tests.testcases import TestCase


class EdlyExtrasTests(TestCase):

def setUp(self):
super(EdlyExtrasTests, self).setUp()

def test_site_configuration_value(self):
"""
Verify site configuration template tag returns correct value.
"""
expected_configuration_value = 'FAKE_VALUE'
self.site.siteconfiguration.edly_client_theme_branding_settings['FAKE_KEY'] = expected_configuration_value
self.site.siteconfiguration.save()

template = Template(
"{% load edly_extras %}"
"{% site_configuration_value \"FAKE_KEY\" %}"
)
context = Context({'request': self.request})
assert template.render(context) == expected_configuration_value
2 changes: 1 addition & 1 deletion ecommerce/settings/_oscar.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
'ecommerce.extensions.api',
'ecommerce.extensions.fulfillment',
'ecommerce.extensions.refund',
'ecommerce.extensions.edly_ecommerce_app',
] + get_core_apps([
'ecommerce.extensions.analytics',
'ecommerce.extensions.basket',
Expand All @@ -33,7 +34,6 @@
'ecommerce.extensions.partner',
'ecommerce.extensions.payment',
'ecommerce.extensions.voucher',
'ecommerce.extensions.edly_ecommerce_app',
])
# END APP CONFIGURATION

Expand Down
44 changes: 28 additions & 16 deletions ecommerce/static/js/views/course_form_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,22 +158,28 @@ define([
var activeCourseTypes,
courseType = this.editing ? this.lockedCourseType : this.model.get('type');

switch (courseType) {
case 'audit':
activeCourseTypes = ['audit', 'verified', 'credit'];
break;
case 'verified':
activeCourseTypes = ['verified', 'credit'];
break;
case 'professional':
activeCourseTypes = ['professional'];
break;
case 'credit':
activeCourseTypes = ['credit'];
break;
default:
activeCourseTypes = ['audit', 'verified', 'professional', 'credit'];
break;
var disablePaidCourseModes = $('#disable_paid_course_modes').attr('value');
if (disablePaidCourseModes === 'True') {
activeCourseTypes = ['audit'];
}
else {
switch (courseType) {
case 'audit':
activeCourseTypes = ['audit', 'verified', 'credit'];
break;
case 'verified':
activeCourseTypes = ['verified', 'credit'];
break;
case 'professional':
activeCourseTypes = ['professional'];
break;
case 'credit':
activeCourseTypes = ['credit'];
break;
default:
activeCourseTypes = ['audit', 'verified', 'professional', 'credit'];
break;
}
}

return activeCourseTypes;
Expand Down Expand Up @@ -250,6 +256,12 @@ define([

$honorModeContainer.toggleClass('hidden', !this.model.includeHonorMode());

var disablePaidCourseModes = $('#disable_paid_course_modes').attr('value');
if (disablePaidCourseModes === 'True') {
$("input[name=honor_mode][value='true']").trigger('click');
$("input[name=honor_mode][value='false']").prop("disabled", true);
}

return this;
},

Expand Down

0 comments on commit 82c9ae6

Please sign in to comment.