def followed_threads(request, course_id, user_id): nr_transaction = newrelic.agent.current_transaction() course = get_course_with_access(request.user, course_id, 'load_forum') try: profiled_user = cc.User(id=user_id, course_id=course_id) query_params = { 'page': request.GET.get('page', 1), 'per_page': THREADS_PER_PAGE, # more than threads_per_page to show more activities 'sort_key': request.GET.get('sort_key', 'date'), 'sort_order': request.GET.get('sort_order', 'desc'), } threads, page, num_pages = profiled_user.subscribed_threads( query_params) query_params['page'] = page query_params['num_pages'] = num_pages user_info = cc.User.from_django_user(request.user).to_dict() with newrelic.agent.FunctionTrace(nr_transaction, "get_metadata_for_threads"): annotated_content_info = utils.get_metadata_for_threads( course_id, threads, request.user, user_info) if request.is_ajax(): return utils.JsonResponse({ 'annotated_content_info': annotated_content_info, 'discussion_data': map(utils.safe_content, threads), 'page': query_params['page'], 'num_pages': query_params['num_pages'], }) else: context = { 'course': course, 'user': request.user, 'django_user': User.objects.get(id=user_id), 'profiled_user': profiled_user.to_dict(), 'threads': saxutils.escape(json.dumps(threads), escapedict), 'user_info': saxutils.escape(json.dumps(user_info), escapedict), 'annotated_content_info': saxutils.escape(json.dumps(annotated_content_info), escapedict), # 'content': content, } return render_to_response('discussion/user_profile.html', context) except User.DoesNotExist: raise Http404
def update_moderator_status(request, course_id, user_id): """ given a course id and user id, check if the user has moderator and send back a user profile """ is_moderator = request.POST.get('is_moderator', '').lower() if is_moderator not in ["true", "false"]: return JsonError("Must provide is_moderator as boolean value") is_moderator = is_moderator == "true" user = User.objects.get(id=user_id) role = Role.objects.get(course_id=course_id, name="Moderator") if is_moderator: user.roles.add(role) else: user.roles.remove(role) if request.is_ajax(): course = get_course_with_access(request.user, course_id, 'load') discussion_user = cc.User(id=user_id, course_id=course_id) context = { 'course': course, 'course_id': course_id, 'user': request.user, 'django_user': user, 'profiled_user': discussion_user.to_dict(), } return JsonResponse({ 'html': render_to_string('discussion/ajax_user_profile.html', context) }) else: return JsonResponse({})
def user_profile(request, course_id, user_id): #TODO: Allow sorting? course = get_course_with_access(request.user, course_id, 'load') try: profiled_user = cc.User(id=user_id, course_id=course_id) query_params = { 'page': request.GET.get('page', 1), 'per_page': THREADS_PER_PAGE, # more than threads_per_page to show more activities } threads, page, num_pages = profiled_user.active_threads(query_params) query_params['page'] = page query_params['num_pages'] = num_pages user_info = cc.User.from_django_user(request.user).to_dict() annotated_content_info = utils.get_metadata_for_threads( course_id, threads, request.user, user_info) if request.is_ajax(): return utils.JsonResponse({ 'discussion_data': map(utils.safe_content, threads), 'page': query_params['page'], 'num_pages': query_params['num_pages'], 'annotated_content_info': saxutils.escape(json.dumps(annotated_content_info), escapedict), }) else: context = { 'course': course, 'user': request.user, 'django_user': User.objects.get(id=user_id), 'profiled_user': profiled_user.to_dict(), 'threads': saxutils.escape(json.dumps(threads), escapedict), 'user_info': saxutils.escape(json.dumps(user_info), escapedict), 'annotated_content_info': saxutils.escape(json.dumps(annotated_content_info), escapedict), # 'content': content, } return render_to_response('discussion/user_profile.html', context) except (cc.utils.CommentClientError, cc.utils.CommentClientUnknownError, User.DoesNotExist): raise Http404