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): ...@@ -483,18 +483,11 @@ def _create_discussion_board_context(request, base_context, thread=None):
return context return context
@require_GET def create_user_profile_context(request, course_key, user_id):
@login_required """ Generate a context dictionary for the user profile. """
@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).
"""
user = cc.User.from_django_user(request.user) user = cc.User.from_django_user(request.user)
course = get_course_with_access(request.user, 'load', course_key, check_if_enrolled=True) 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. # If user is not enrolled in the course, do not proceed.
django_user = User.objects.get(id=user_id) django_user = User.objects.get(id=user_id)
if not CourseEnrollment.is_enrolled(django_user, course.id): if not CourseEnrollment.is_enrolled(django_user, course.id):
...@@ -505,10 +498,7 @@ def user_profile(request, course_key, user_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 '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) group_id = get_group_id_for_comments_service(request, course_key)
except ValueError:
return HttpResponseServerError("Invalid group_id")
if group_id is not None: if group_id is not None:
query_params['group_id'] = group_id query_params['group_id'] = group_id
profiled_user = cc.User(id=user_id, course_id=course_key, 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): ...@@ -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] threads = [utils.prepare_content(thread, course_key, is_staff) for thread in threads]
with function_trace("add_courseware_context"): with function_trace("add_courseware_context"):
add_courseware_context(threads, course, request.user) 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( user_roles = django_user.roles.filter(
course_id=course.id course_id=course.id
).order_by("name").values_list("name", flat=True).distinct() ).order_by("name").values_list("name", flat=True).distinct()
...@@ -556,10 +538,33 @@ def user_profile(request, course_key, user_id): ...@@ -556,10 +538,33 @@ def user_profile(request, course_key, user_id):
'sort_preference': user.default_sort_key, 'sort_preference': user.default_sort_key,
'learner_profile_page_url': reverse('learner_profile', kwargs={'username': django_user.username}), '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) return render_to_response('discussion/discussion_profile_page.html', context)
except User.DoesNotExist: except User.DoesNotExist:
raise Http404 raise Http404
except ValueError:
return HttpResponseServerError("Invalid group_id")
@login_required @login_required
......
...@@ -61,6 +61,7 @@ from openedx.features.course_experience import course_home_page_title ...@@ -61,6 +61,7 @@ from openedx.features.course_experience import course_home_page_title
'schedule': assignment_schedule, 'schedule': assignment_schedule,
'grading_policy': grading_policy, 'grading_policy': grading_policy,
'grades': assignment_grades, 'grades': assignment_grades,
'discussion_info': discussion_info,
} }
)} )}
</div> </div>
......
...@@ -16,8 +16,8 @@ from django.views.generic import View ...@@ -16,8 +16,8 @@ from django.views.generic import View
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from lms.djangoapps.course_api.blocks.api import get_blocks from lms.djangoapps.course_api.blocks.api import get_blocks
from lms.djangoapps.courseware.courses import get_course_with_access 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.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 openedx.features.course_experience import default_course_url_name
from xmodule.modulestore.django import modulestore from xmodule.modulestore.django import modulestore
from util.views import ensure_valid_course_key from util.views import ensure_valid_course_key
...@@ -51,7 +51,8 @@ class LearnerAnalyticsView(View): ...@@ -51,7 +51,8 @@ class LearnerAnalyticsView(View):
'uses_pattern_library': True, 'uses_pattern_library': True,
'grading_policy': course.grading_policy, 'grading_policy': course.grading_policy,
'assignment_grades': self.get_grade_data(request.user, course_key), '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) return render_to_response('learner_analytics/dashboard.html', context)
...@@ -74,7 +75,7 @@ class LearnerAnalyticsView(View): ...@@ -74,7 +75,7 @@ class LearnerAnalyticsView(View):
} }
return json.dumps(grades) 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. Collects and formats the discussion data from a particular user and course.
...@@ -82,7 +83,8 @@ class LearnerAnalyticsView(View): ...@@ -82,7 +83,8 @@ class LearnerAnalyticsView(View):
user: User user: User
course_key: CourseKey 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): 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