Commit f38e5ab9 by Jose Antonio Gonzalez Committed by Jose Antonio Gonzalez

add DEFAULT_MOBILE_AVAILABLE flag

parent ebe85737
...@@ -107,6 +107,12 @@ if STATIC_URL_BASE: ...@@ -107,6 +107,12 @@ if STATIC_URL_BASE:
# DEFAULT_COURSE_ABOUT_IMAGE_URL specifies the default image to show for courses that don't provide one # DEFAULT_COURSE_ABOUT_IMAGE_URL specifies the default image to show for courses that don't provide one
DEFAULT_COURSE_ABOUT_IMAGE_URL = ENV_TOKENS.get('DEFAULT_COURSE_ABOUT_IMAGE_URL', DEFAULT_COURSE_ABOUT_IMAGE_URL) DEFAULT_COURSE_ABOUT_IMAGE_URL = ENV_TOKENS.get('DEFAULT_COURSE_ABOUT_IMAGE_URL', DEFAULT_COURSE_ABOUT_IMAGE_URL)
# DEFAULT_MOBILE_AVAILABLE specifies if the course is available for mobile by default
DEFAULT_MOBILE_AVAILABLE = ENV_TOKENS.get(
'DEFAULT_MOBILE_AVAILABLE',
DEFAULT_MOBILE_AVAILABLE
)
# MEDIA_ROOT specifies the directory where user-uploaded files are stored. # MEDIA_ROOT specifies the directory where user-uploaded files are stored.
MEDIA_ROOT = ENV_TOKENS.get('MEDIA_ROOT', MEDIA_ROOT) MEDIA_ROOT = ENV_TOKENS.get('MEDIA_ROOT', MEDIA_ROOT)
MEDIA_URL = ENV_TOKENS.get('MEDIA_URL', MEDIA_URL) MEDIA_URL = ENV_TOKENS.get('MEDIA_URL', MEDIA_URL)
......
...@@ -109,6 +109,8 @@ from lms.envs.common import ( ...@@ -109,6 +109,8 @@ from lms.envs.common import (
PASSWORD_RESET_SUPPORT_LINK, PASSWORD_RESET_SUPPORT_LINK,
ACTIVATION_EMAIL_SUPPORT_LINK, ACTIVATION_EMAIL_SUPPORT_LINK,
DEFAULT_MOBILE_AVAILABLE,
CONTACT_EMAIL, CONTACT_EMAIL,
DISABLE_ACCOUNT_ACTIVATION_REQUIREMENT_SWITCH, DISABLE_ACCOUNT_ACTIVATION_REQUIREMENT_SWITCH,
......
...@@ -7,6 +7,8 @@ from cStringIO import StringIO ...@@ -7,6 +7,8 @@ from cStringIO import StringIO
from datetime import datetime, timedelta from datetime import datetime, timedelta
import dateutil.parser import dateutil.parser
from django.conf import settings
import requests import requests
from lazy import lazy from lazy import lazy
from lxml import etree from lxml import etree
...@@ -32,6 +34,8 @@ CATALOG_VISIBILITY_CATALOG_AND_ABOUT = "both" ...@@ -32,6 +34,8 @@ CATALOG_VISIBILITY_CATALOG_AND_ABOUT = "both"
CATALOG_VISIBILITY_ABOUT = "about" CATALOG_VISIBILITY_ABOUT = "about"
CATALOG_VISIBILITY_NONE = "none" CATALOG_VISIBILITY_NONE = "none"
DEFAULT_MOBILE_AVAILABLE = getattr(settings, 'DEFAULT_MOBILE_AVAILABLE', False)
class StringOrDate(Date): class StringOrDate(Date):
def from_json(self, value): def from_json(self, value):
...@@ -337,7 +341,7 @@ class CourseFields(object): ...@@ -337,7 +341,7 @@ class CourseFields(object):
mobile_available = Boolean( mobile_available = Boolean(
display_name=_("Mobile Course Available"), display_name=_("Mobile Course Available"),
help=_("Enter true or false. If true, the course will be available to mobile devices."), help=_("Enter true or false. If true, the course will be available to mobile devices."),
default=False, default=DEFAULT_MOBILE_AVAILABLE,
scope=Scope.settings scope=Scope.settings
) )
video_upload_pipeline = Dict( video_upload_pipeline = Dict(
......
...@@ -158,7 +158,7 @@ class TestGetCourseListMultipleCourses(CourseListTestMixin, ModuleStoreTestCase) ...@@ -158,7 +158,7 @@ class TestGetCourseListMultipleCourses(CourseListTestMixin, ModuleStoreTestCase)
def setUp(self): def setUp(self):
super(TestGetCourseListMultipleCourses, self).setUp() super(TestGetCourseListMultipleCourses, self).setUp()
self.course = self.create_course() self.course = self.create_course(mobile_available=False)
self.staff_user = self.create_user("staff", is_staff=True) self.staff_user = self.create_user("staff", is_staff=True)
self.honor_user = self.create_user("honor", is_staff=False) self.honor_user = self.create_user("honor", is_staff=False)
...@@ -191,7 +191,7 @@ class TestGetCourseListMultipleCourses(CourseListTestMixin, ModuleStoreTestCase) ...@@ -191,7 +191,7 @@ class TestGetCourseListMultipleCourses(CourseListTestMixin, ModuleStoreTestCase)
def test_filter(self): def test_filter(self):
# Create a second course to be filtered out of queries. # Create a second course to be filtered out of queries.
alternate_course = self.create_course(course='mobile', mobile_available=True) alternate_course = self.create_course(course='mobile')
test_cases = [ test_cases = [
(None, [alternate_course, self.course]), (None, [alternate_course, self.course]),
......
...@@ -70,7 +70,7 @@ class TestCourseSerializer(CourseApiFactoryMixin, ModuleStoreTestCase): ...@@ -70,7 +70,7 @@ class TestCourseSerializer(CourseApiFactoryMixin, ModuleStoreTestCase):
'blocks_url': u'http://testserver/api/courses/v1/blocks/?course_id=edX%2Ftoy%2F2012_Fall', 'blocks_url': u'http://testserver/api/courses/v1/blocks/?course_id=edX%2Ftoy%2F2012_Fall',
'effort': u'6 hours', 'effort': u'6 hours',
'pacing': 'instructor', 'pacing': 'instructor',
'mobile_available': False, 'mobile_available': True,
'hidden': False, 'hidden': False,
'invitation_only': False, 'invitation_only': False,
......
...@@ -106,7 +106,7 @@ class CourseListViewTestCaseMultipleCourses(CourseApiTestViewMixin, ModuleStoreT ...@@ -106,7 +106,7 @@ class CourseListViewTestCaseMultipleCourses(CourseApiTestViewMixin, ModuleStoreT
def setUp(self): def setUp(self):
super(CourseListViewTestCaseMultipleCourses, self).setUp() super(CourseListViewTestCaseMultipleCourses, self).setUp()
self.course = self.create_course() self.course = self.create_course(mobile_available=False)
self.url = reverse('course-list') self.url = reverse('course-list')
self.staff_user = self.create_user(username='staff', is_staff=True) self.staff_user = self.create_user(username='staff', is_staff=True)
self.honor_user = self.create_user(username='honor', is_staff=False) self.honor_user = self.create_user(username='honor', is_staff=False)
...@@ -139,7 +139,7 @@ class CourseListViewTestCaseMultipleCourses(CourseApiTestViewMixin, ModuleStoreT ...@@ -139,7 +139,7 @@ class CourseListViewTestCaseMultipleCourses(CourseApiTestViewMixin, ModuleStoreT
self.setup_user(self.staff_user) self.setup_user(self.staff_user)
# Create a second course to be filtered out of queries. # Create a second course to be filtered out of queries.
alternate_course = self.create_course(course='mobile', mobile_available=True) alternate_course = self.create_course(course='mobile')
test_cases = [ test_cases = [
(None, [alternate_course, self.course]), (None, [alternate_course, self.course]),
......
...@@ -150,8 +150,9 @@ class CoursesTest(ModuleStoreTestCase): ...@@ -150,8 +150,9 @@ class CoursesTest(ModuleStoreTestCase):
Verify that filtering performs as expected. Verify that filtering performs as expected.
""" """
user = UserFactory.create() user = UserFactory.create()
non_mobile_course = CourseFactory.create(emit_signals=True) mobile_course = CourseFactory.create(emit_signals=True)
mobile_course = CourseFactory.create(mobile_available=True, emit_signals=True) non_mobile_course =\
CourseFactory.create(mobile_available=False, emit_signals=True)
test_cases = ( test_cases = (
(None, {non_mobile_course.id, mobile_course.id}), (None, {non_mobile_course.id, mobile_course.id}),
......
...@@ -761,6 +761,11 @@ COURSE_ABOUT_VISIBILITY_PERMISSION = ENV_TOKENS.get( ...@@ -761,6 +761,11 @@ COURSE_ABOUT_VISIBILITY_PERMISSION = ENV_TOKENS.get(
COURSE_ABOUT_VISIBILITY_PERMISSION COURSE_ABOUT_VISIBILITY_PERMISSION
) )
DEFAULT_MOBILE_AVAILABLE = ENV_TOKENS.get(
'DEFAULT_MOBILE_AVAILABLE',
DEFAULT_MOBILE_AVAILABLE
)
# Enrollment API Cache Timeout # Enrollment API Cache Timeout
ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT = ENV_TOKENS.get('ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT', 60) ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT = ENV_TOKENS.get('ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT', 60)
......
...@@ -2966,6 +2966,7 @@ COURSE_CATALOG_VISIBILITY_PERMISSION = 'see_exists' ...@@ -2966,6 +2966,7 @@ COURSE_CATALOG_VISIBILITY_PERMISSION = 'see_exists'
# visible. We default this to the legacy permission 'see_exists'. # visible. We default this to the legacy permission 'see_exists'.
COURSE_ABOUT_VISIBILITY_PERMISSION = 'see_exists' COURSE_ABOUT_VISIBILITY_PERMISSION = 'see_exists'
DEFAULT_MOBILE_AVAILABLE = True
# Enrollment API Cache Timeout # Enrollment API Cache Timeout
ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT = 60 ENROLLMENT_COURSE_DETAILS_CACHE_TIMEOUT = 60
......
...@@ -83,6 +83,8 @@ FEATURES['ENABLE_ENROLLMENT_TRACK_USER_PARTITION'] = True ...@@ -83,6 +83,8 @@ FEATURES['ENABLE_ENROLLMENT_TRACK_USER_PARTITION'] = True
FEATURES['ENABLE_BULK_ENROLLMENT_VIEW'] = True FEATURES['ENABLE_BULK_ENROLLMENT_VIEW'] = True
DEFAULT_MOBILE_AVAILABLE = True
# Need wiki for courseware views to work. TODO (vshnayder): shouldn't need it. # Need wiki for courseware views to work. TODO (vshnayder): shouldn't need it.
WIKI_ENABLED = True WIKI_ENABLED = True
......
...@@ -478,8 +478,9 @@ class CourseOverviewTestCase(CatalogIntegrationMixin, ModuleStoreTestCase): ...@@ -478,8 +478,9 @@ class CourseOverviewTestCase(CatalogIntegrationMixin, ModuleStoreTestCase):
) )
def test_get_all_courses_by_mobile_available(self): def test_get_all_courses_by_mobile_available(self):
non_mobile_course = CourseFactory.create(emit_signals=True) mobile_course = CourseFactory.create(emit_signals=True)
mobile_course = CourseFactory.create(mobile_available=True, emit_signals=True) non_mobile_course =\
CourseFactory.create(mobile_available=False, emit_signals=True)
test_cases = ( test_cases = (
(None, {non_mobile_course.id, mobile_course.id}), (None, {non_mobile_course.id, mobile_course.id}),
...@@ -495,7 +496,8 @@ class CourseOverviewTestCase(CatalogIntegrationMixin, ModuleStoreTestCase): ...@@ -495,7 +496,8 @@ class CourseOverviewTestCase(CatalogIntegrationMixin, ModuleStoreTestCase):
CourseOverview.get_all_courses(filter_=filter_) CourseOverview.get_all_courses(filter_=filter_)
}, },
expected_courses, expected_courses,
"testing CourseOverview.get_all_courses with filter_={}".format(filter_), "testing CourseOverview.get_all_courses with filter_={}"
.format(filter_),
) )
def test_get_from_ids_if_exists(self): def test_get_from_ids_if_exists(self):
......
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