Commit ca6da2db by Diana Huang

Add discussion information to learner context.

parent 5f5df7e7
......@@ -483,18 +483,11 @@ def _create_discussion_board_context(request, base_context, thread=None):
return context
@require_GET
@login_required
@use_bulk_ops
def user_profile(request, course_key, user_id):
"""
Renders a response to display the user profile page (shown after clicking
on a post author's username).
"""
def create_user_profile_context(request, course_key, user_id):
""" Generate a context dictionary for the user profile. """
user = cc.User.from_django_user(request.user)
course = get_course_with_access(request.user, 'load', course_key, check_if_enrolled=True)
try:
# If user is not enrolled in the course, do not proceed.
django_user = User.objects.get(id=user_id)
if not CourseEnrollment.is_enrolled(django_user, course.id):
......@@ -505,10 +498,7 @@ def user_profile(request, course_key, user_id):
'per_page': THREADS_PER_PAGE, # more than threads_per_page to show more activities
}
try:
group_id = get_group_id_for_comments_service(request, course_key)
except ValueError:
return HttpResponseServerError("Invalid group_id")
if group_id is not None:
query_params['group_id'] = group_id
profiled_user = cc.User(id=user_id, course_id=course_key, group_id=group_id)
......@@ -527,14 +517,6 @@ def user_profile(request, course_key, user_id):
threads = [utils.prepare_content(thread, course_key, is_staff) for thread in threads]
with function_trace("add_courseware_context"):
add_courseware_context(threads, course, request.user)
if request.is_ajax():
return utils.JsonResponse({
'discussion_data': threads,
'page': query_params['page'],
'num_pages': query_params['num_pages'],
'annotated_content_info': annotated_content_info,
})
else:
user_roles = django_user.roles.filter(
course_id=course.id
).order_by("name").values_list("name", flat=True).distinct()
......@@ -556,10 +538,33 @@ def user_profile(request, course_key, user_id):
'sort_preference': user.default_sort_key,
'learner_profile_page_url': reverse('learner_profile', kwargs={'username': django_user.username}),
})
return context
@require_GET
@login_required
@use_bulk_ops
def user_profile(request, course_key, user_id):
"""
Renders a response to display the user profile page (shown after clicking
on a post author's username).
"""
try:
context = create_user_profile_context(request, course_key, user_id)
if request.is_ajax():
return utils.JsonResponse({
'discussion_data': context['threads'],
'page': context['page'],
'num_pages': context['num_pages'],
'annotated_content_info': context['annotated_content_info'],
})
else:
print context
return render_to_response('discussion/discussion_profile_page.html', context)
except User.DoesNotExist:
raise Http404
except ValueError:
return HttpResponseServerError("Invalid group_id")
@login_required
......
......@@ -61,6 +61,7 @@ from openedx.features.course_experience import course_home_page_title
'schedule': assignment_schedule,
'grading_policy': grading_policy,
'grades': assignment_grades,
'discussion_info': discussion_info,
}
)}
</div>
......
......@@ -16,8 +16,8 @@ from django.views.generic import View
from opaque_keys.edx.keys import CourseKey
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 openedx.core.djangoapps.plugin_api.views import EdxFragmentView
from openedx.features.course_experience import default_course_url_name
from xmodule.modulestore.django import modulestore
from util.views import ensure_valid_course_key
......@@ -51,7 +51,8 @@ class LearnerAnalyticsView(View):
'uses_pattern_library': True,
'grading_policy': course.grading_policy,
'assignment_grades': self.get_grade_data(request.user, course_key),
'assignment_schedule': self.get_schedule(request, course_key)
'assignment_schedule': self.get_schedule(request, course_key),
'discussion_info': self.get_discussion_data(request, course_key)
}
return render_to_response('learner_analytics/dashboard.html', context)
......@@ -74,7 +75,7 @@ class LearnerAnalyticsView(View):
}
return json.dumps(grades)
def get_discussion_data(self, user, course_key):
def get_discussion_data(self, request, course_key):
"""
Collects and formats the discussion data from a particular user and course.
......@@ -82,7 +83,8 @@ class LearnerAnalyticsView(View):
user: User
course_key: CourseKey
"""
pass
discussion_data = create_user_profile_context(request, course_key, request.user.id)
return json.dumps(discussion_data)
def get_schedule(self, request, course_key):
"""
......
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