Skip to content
Snippets Groups Projects
Unverified Commit 2a38e256 authored by Robert Raposa's avatar Robert Raposa Committed by GitHub
Browse files

Merge pull request #17221 from edx/robrap/LEARNER-3881-LA-for-verified-only

LEARNER-3881: Disable Learner Analytics for non-verified users.
parents 5a13f4c7 740be6b3
No related merge requests found
Learner Analytics
-----------------
This is the current home of the Learner Analytics feature. This is not a fully
supported feature.
See LEARNER-3854 for details.
TODO: LEARNER-3854: If this feature gets implemented, this directory should
move to lms/djangoapps and out of openedx/features.
......@@ -48,19 +48,26 @@ from openedx.features.course_experience import course_home_page_title
</header>
<div class="page-content learner-analytics-dashboard-wrapper">
<div class="learner-analytics-dashboard">
${static.renderReact(
component="LearnerAnalyticsDashboard",
id="react-learner-analytics-dashboard",
props={
'schedule': assignment_schedule,
'grading_policy': grading_policy,
'grades': assignment_grades,
'discussion_info': discussion_info,
'weekly_active_users': weekly_active_users,
'week_streak': week_streak,
'profile_images': profile_image_urls,
}
)}
% if is_verified:
${static.renderReact(
component="LearnerAnalyticsDashboard",
id="react-learner-analytics-dashboard",
props={
'schedule': assignment_schedule,
'grading_policy': grading_policy,
'grades': assignment_grades,
'discussion_info': discussion_info,
'weekly_active_users': weekly_active_users,
'week_streak': week_streak,
'profile_images': profile_image_urls,
}
)}
% else:
## TODO: LEARNER-3854: Clean-up after Learner Analytics test.
## If we move forward with this, the upsell information should
## be added here.
Page is not available.
% endif
</div>
</div>
</div>
......
......@@ -27,6 +27,7 @@ from lms.djangoapps.course_api.blocks.api import get_blocks
from lms.djangoapps.courseware.courses import get_course_with_access
from lms.djangoapps.discussion.views import create_user_profile_context
from lms.djangoapps.grades.course_grade_factory import CourseGradeFactory
from lms.lib.comment_client.utils import CommentClient500Error
from openedx.features.course_experience import default_course_url_name
from openedx.core.djangoapps.user_api.accounts.image_helpers import get_profile_image_urls_for_user
......@@ -62,31 +63,36 @@ class LearnerAnalyticsView(View):
course_url_name = default_course_url_name(course.id)
course_url = reverse(course_url_name, kwargs={'course_id': unicode(course.id)})
grading_policy = course.grading_policy
(grade_data, answered_percent) = self.get_grade_data(request.user, course_key, grading_policy['GRADE_CUTOFFS'])
schedule_data = self.get_assignments_with_due_date(request, course_key)
(grade_data, schedule_data) = self.sort_grade_and_schedule_data(grade_data, schedule_data)
is_verified = CourseEnrollment.is_enrolled_as_verified(request.user, course_key)
context = {
'course': course,
'course_url': course_url,
'disable_courseware_js': True,
'uses_pattern_library': True,
'is_self_paced': course.self_paced,
'is_verified': CourseEnrollment.is_enrolled_as_verified(request.user, course_key),
'grading_policy': grading_policy,
'assignment_grades': grade_data,
'answered_percent': answered_percent,
'assignment_schedule': schedule_data,
'profile_image_urls': get_profile_image_urls_for_user(request.user, request),
'discussion_info': self.get_discussion_data(request, course_key),
'weekly_active_users': self.get_weekly_course_activity_count(course_key),
'week_streak': self.consecutive_weeks_of_course_activity_for_user(
request.user.username, course_key
)
'is_verified': is_verified,
}
if (is_verified):
grading_policy = course.grading_policy
(grade_data, answered_percent) = self.get_grade_data(request.user, course_key, grading_policy['GRADE_CUTOFFS'])
schedule_data = self.get_assignments_with_due_date(request, course_key)
(grade_data, schedule_data) = self.sort_grade_and_schedule_data(grade_data, schedule_data)
context.update({
'grading_policy': grading_policy,
'assignment_grades': grade_data,
'answered_percent': answered_percent,
'assignment_schedule': schedule_data,
'profile_image_urls': get_profile_image_urls_for_user(request.user, request),
'discussion_info': self.get_discussion_data(request, course_key),
'weekly_active_users': self.get_weekly_course_activity_count(course_key),
'week_streak': self.consecutive_weeks_of_course_activity_for_user(
request.user.username, course_key
)
})
return render_to_response('learner_analytics/dashboard.html', context)
def get_grade_data(self, user, course_key, grade_cutoffs):
......@@ -151,7 +157,15 @@ class LearnerAnalyticsView(View):
request (HttpRequest)
course_key (CourseKey)
"""
context = create_user_profile_context(request, course_key, request.user.id)
try:
context = create_user_profile_context(request, course_key, request.user.id)
except CommentClient500Error:
# TODO: LEARNER-3854: Clean-up error handling if continuing support.
return {
'content_authored': 0,
'thread_votes': 0,
}
threads = context['threads']
profiled_user = context['profiled_user']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment