From 4142438372635623cc26ea2f808ab4d5832ce924 Mon Sep 17 00:00:00 2001 From: erm0l0v Date: Tue, 5 May 2015 15:46:06 +0300 Subject: [PATCH] add CourseTalk widget Move tests to one test class --- cms/envs/common.py | 1 + .../courseware/tests/test_course_info.py | 4 +- lms/djangoapps/courseware/views.py | 14 +++-- lms/envs/common.py | 3 + .../sass/multicourse/_course_about.scss | 5 ++ lms/templates/courseware/course_about.html | 12 +++- lms/templates/courseware/info.html | 11 ++++ .../core/djangoapps/coursetalk/__init__.py | 0 openedx/core/djangoapps/coursetalk/admin.py | 8 +++ openedx/core/djangoapps/coursetalk/helpers.py | 35 +++++++++++ .../coursetalk/migrations/0001_initial.py | 30 ++++++++++ .../coursetalk/migrations/__init__.py | 0 openedx/core/djangoapps/coursetalk/models.py | 39 +++++++++++++ .../djangoapps/coursetalk/tests/__init__.py | 0 .../coursetalk/tests/test_helpers.py | 58 +++++++++++++++++++ 15 files changed, 213 insertions(+), 7 deletions(-) create mode 100644 openedx/core/djangoapps/coursetalk/__init__.py create mode 100644 openedx/core/djangoapps/coursetalk/admin.py create mode 100644 openedx/core/djangoapps/coursetalk/helpers.py create mode 100644 openedx/core/djangoapps/coursetalk/migrations/0001_initial.py create mode 100644 openedx/core/djangoapps/coursetalk/migrations/__init__.py create mode 100644 openedx/core/djangoapps/coursetalk/models.py create mode 100644 openedx/core/djangoapps/coursetalk/tests/__init__.py create mode 100644 openedx/core/djangoapps/coursetalk/tests/test_helpers.py diff --git a/cms/envs/common.py b/cms/envs/common.py index 7a853681d8..9c2112ca75 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -788,6 +788,7 @@ INSTALLED_APPS = ( 'external_auth', 'student', # misleading name due to sharing with lms 'openedx.core.djangoapps.course_groups', # not used in cms (yet), but tests run + 'openedx.core.djangoapps.coursetalk', # not used in cms (yet), but tests run 'xblock_config', # Tracking diff --git a/lms/djangoapps/courseware/tests/test_course_info.py b/lms/djangoapps/courseware/tests/test_course_info.py index 2040c30307..952e1bc21f 100644 --- a/lms/djangoapps/courseware/tests/test_course_info.py +++ b/lms/djangoapps/courseware/tests/test_course_info.py @@ -269,7 +269,7 @@ class SelfPacedCourseInfoTestCase(LoginEnrollmentTestCase, SharedModuleStoreTest self.assertEqual(resp.status_code, 200) def test_num_queries_instructor_paced(self): - self.fetch_course_info_with_queries(self.instructor_paced_course, 19, 4) + self.fetch_course_info_with_queries(self.instructor_paced_course, 20, 4) def test_num_queries_self_paced(self): - self.fetch_course_info_with_queries(self.self_paced_course, 19, 4) + self.fetch_course_info_with_queries(self.self_paced_course, 20, 4) diff --git a/lms/djangoapps/courseware/views.py b/lms/djangoapps/courseware/views.py index 15cb6b8f34..98635c1018 100644 --- a/lms/djangoapps/courseware/views.py +++ b/lms/djangoapps/courseware/views.py @@ -65,6 +65,8 @@ from courseware.user_state_client import DjangoXBlockUserStateClient from edxmako.shortcuts import render_to_response, render_to_string, marketing_link from instructor.enrollment import uses_shib from openedx.core.djangoapps.content.course_overviews.models import CourseOverview +from openedx.core.djangoapps.coursetalk.helpers import inject_coursetalk_keys_into_context +from openedx.core.djangoapps.user_api.preferences.api import get_user_preference from openedx.core.djangoapps.credit.api import ( get_credit_requirement_status, is_user_eligible_for_credit, @@ -97,8 +99,6 @@ from .entrance_exams import ( from .module_render import toc_for_course, get_module_for_descriptor, get_module, get_module_by_usage_id from lang_pref import LANGUAGE_KEY -from openedx.core.djangoapps.user_api.preferences.api import get_user_preference - log = logging.getLogger("edx.courseware") @@ -727,6 +727,9 @@ def course_info(request, course_id): # course is not yet visible to students. context['disable_student_access'] = True + if CourseEnrollment.is_enrolled(request.user, course.id): + inject_coursetalk_keys_into_context(context, course_key) + return render_to_response('courseware/info.html', context) @@ -935,7 +938,7 @@ def course_about(request, course_id): # Overview overview = CourseOverview.get_from_id(course.id) - return render_to_response('courseware/course_about.html', { + context = { 'course': course, 'staff_access': staff_access, 'studio_url': studio_url, @@ -961,7 +964,10 @@ def course_about(request, course_id): 'cart_link': reverse('shoppingcart.views.show_cart'), 'pre_requisite_courses': pre_requisite_courses, 'course_image_urls': overview.image_urls, - }) + } + inject_coursetalk_keys_into_context(context, course_key) + + return render_to_response('courseware/course_about.html', context) @transaction.non_atomic_requests diff --git a/lms/envs/common.py b/lms/envs/common.py index 44c7671c18..de98686bce 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -1976,6 +1976,9 @@ INSTALLED_APPS = ( # Static i18n support 'statici18n', + + # Review widgets + 'openedx.core.djangoapps.coursetalk', ) # Migrations which are not in the standard module "migrations" diff --git a/lms/static/sass/multicourse/_course_about.scss b/lms/static/sass/multicourse/_course_about.scss index c26c439b4d..73c8c470b9 100644 --- a/lms/static/sass/multicourse/_course_about.scss +++ b/lms/static/sass/multicourse/_course_about.scss @@ -424,6 +424,11 @@ } } + >.coursetalk-read-reviews { + margin-top: -200px; + margin-bottom: 220px; + } + header { margin-bottom: 30px; padding-bottom: 16px; diff --git a/lms/templates/courseware/course_about.html b/lms/templates/courseware/course_about.html index b733c8811c..466cbc3c2b 100644 --- a/lms/templates/courseware/course_about.html +++ b/lms/templates/courseware/course_about.html @@ -17,7 +17,10 @@ from openedx.core.lib.courses import course_image_url <%block name="js_extra"> - + ## CourseTalk widget js script + % if show_coursetalk_widget: + + % endif + % endif