From 4139f702ffc98c8e163684ad0e10009fb068e66e Mon Sep 17 00:00:00 2001 From: Kevin Chugh Date: Thu, 6 Dec 2012 10:30:06 -0500 Subject: [PATCH 1/4] debugging thread --- lms/djangoapps/django_comment_client/forum/views.py | 8 +++----- lms/lib/comment_client/thread.py | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 35e7fd6618..bcd1477553 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -161,21 +161,19 @@ def forum_form_discussion(request, course_id): @login_required def single_thread(request, course_id, discussion_id, thread_id): - course = get_course_with_access(request.user, course_id, 'load') cc_user = cc.User.from_django_user(request.user) user_info = cc_user.to_dict() try: - thread = cc.Thread.find(thread_id).retrieve(recursive=True, user_id=request.user.id) + thread = cc.Thread.find(thread_id).retrieve(recursive=True, user_id=request.user.id) except (cc.utils.CommentClientError, cc.utils.CommentClientUnknownError) as err: - log.error("Error loading single thread.") - raise Http404 + log.error("Error loading single thread.") + raise Http404 if request.is_ajax(): courseware_context = get_courseware_context(thread, course) - annotated_content_info = utils.get_annotated_content_infos(course_id, thread, request.user, user_info=user_info) context = {'thread': thread.to_dict(), 'course_id': course_id} # TODO: Remove completely or switch back to server side rendering diff --git a/lms/lib/comment_client/thread.py b/lms/lib/comment_client/thread.py index 5fd10a3e69..856d65d634 100644 --- a/lms/lib/comment_client/thread.py +++ b/lms/lib/comment_client/thread.py @@ -26,6 +26,7 @@ class Thread(models.Model): @classmethod def search(cls, query_params, *args, **kwargs): + default_params = {'page': 1, 'per_page': 20, 'course_id': query_params['course_id'], @@ -65,7 +66,6 @@ class Thread(models.Model): # that subclasses don't need to override for this. def _retrieve(self, *args, **kwargs): url = self.url(action='get', params=self.attributes) - request_params = { 'recursive': kwargs.get('recursive'), 'user_id': kwargs.get('user_id'), From 70b0b5beb8e5b9179d10d04bab7bde4da8c1998c Mon Sep 17 00:00:00 2001 From: Kevin Chugh Date: Thu, 6 Dec 2012 10:43:51 -0500 Subject: [PATCH 2/4] update models --- .../django_comment_client/base/urls.py | 2 +- .../django_comment_client/base/views.py | 16 ++++++++-------- lms/lib/comment_client/thread.py | 12 +++++++++--- .../views/discussion_thread_show_view.coffee | 2 +- .../discussion/_underscore_templates.html | 5 +++-- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/lms/djangoapps/django_comment_client/base/urls.py b/lms/djangoapps/django_comment_client/base/urls.py index 87b427d73a..1a0498b1ce 100644 --- a/lms/djangoapps/django_comment_client/base/urls.py +++ b/lms/djangoapps/django_comment_client/base/urls.py @@ -10,7 +10,7 @@ urlpatterns = patterns('django_comment_client.base.views', url(r'threads/(?P[\w\-]+)/reply$', 'create_comment', name='create_comment'), url(r'threads/(?P[\w\-]+)/delete', 'delete_thread', name='delete_thread'), url(r'threads/(?P[\w\-]+)/upvote$', 'vote_for_thread', {'value': 'up'}, name='upvote_thread'), - url(r'threads/(?P[\w\-]+)/flagAbuse$', 'flag_abuse_for_thread', {'value': 'up'}, name='flag_abuse_for_thread'), + url(r'threads/(?P[\w\-]+)/flagAbuse$', 'flag_abuse_for_thread', name='flag_abuse_for_thread'), url(r'threads/(?P[\w\-]+)/unFlagAbuse$', 'un_flag_abuse_for_thread', name='un_flag_abuse_for_thread'), url(r'threads/(?P[\w\-]+)/downvote$', 'vote_for_thread', name='downvote_thread'), url(r'threads/(?P[\w\-]+)/unvote$', 'undo_vote_for_thread', name='undo_vote_for_thread'), diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py index 9958fe5171..2582a78169 100644 --- a/lms/djangoapps/django_comment_client/base/views.py +++ b/lms/djangoapps/django_comment_client/base/views.py @@ -238,28 +238,28 @@ def vote_for_thread(request, course_id, thread_id, value): @require_POST @login_required @permitted -def flag_abuse_for_thread(request, course_id, thread_id, value): +def flag_abuse_for_thread(request, course_id, thread_id): user = cc.User.from_django_user(request.user) thread = cc.Thread.find(thread_id) - thread.flagAbuse(user,thread, value) + thread.flagAbuse(user,thread) return JsonResponse(utils.safe_content(thread.to_dict())) -def un_flag_abuse_for_thread(request, course_id, thread_id, value): +def un_flag_abuse_for_thread(request, course_id, thread_id): user = cc.User.from_django_user(request.user) thread = cc.Thread.find(thread_id) - thread.unFlagAbuse(user,thread, value) + thread.unFlagAbuse(user,thread) return JsonResponse(utils.safe_content(thread.to_dict())) -def flag_abuse_for_comment(request, course_id, comment_id, value): +def flag_abuse_for_comment(request, course_id, comment_id): user = cc.User.from_django_user(request.user) comment = cc.Comment.find(thread_id) - comment.flagAbuse(user,comment, value) + comment.flagAbuse(user,comment) return JsonResponse(utils.safe_content(comment.to_dict())) -def un_flag_abuse_for_comment(request, course_id, comment_id, value): +def un_flag_abuse_for_comment(request, course_id, comment_id): user = cc.User.from_django_user(request.user) comment = cc.Comment.find(thread_id) - comment.unFlagAbuse(user,comment, value) + comment.unFlagAbuse(user,comment) return JsonResponse(utils.safe_content(comment.to_dict())) @require_POST diff --git a/lms/lib/comment_client/thread.py b/lms/lib/comment_client/thread.py index 856d65d634..e4a9cdb6c1 100644 --- a/lms/lib/comment_client/thread.py +++ b/lms/lib/comment_client/thread.py @@ -72,8 +72,14 @@ class Thread(models.Model): 'mark_as_read': kwargs.get('mark_as_read', True), } - - def flagAbuse(self, user, voteable, value): + # user_id may be none, in which case it shouldn't be part of the + # request. + request_params = strip_none(request_params) + + response = perform_request('get', url, request_params) + self.update_attributes(**response) + + def flagAbuse(self, user, voteable): if voteable.type == 'thread': url = _url_for_flag_abuse_thread(voteable.id) elif voteable.type == 'comment': @@ -84,7 +90,7 @@ class Thread(models.Model): request = perform_request('put', url, params) voteable.update_attributes(request) - def unFlagAbuse(self, user, voteable, value): + def unFlagAbuse(self, user, voteable): if voteable.type == 'thread': url = _url_for_unflag_abuse_thread(voteable.id) elif voteable.type == 'comment': diff --git a/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee b/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee index b60581f9f5..e33a7d4942 100644 --- a/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee +++ b/lms/static/coffee/src/discussion/views/discussion_thread_show_view.coffee @@ -72,7 +72,7 @@ if Backbone? toggleFollowing: (event) -> $elem = $(event.target) - url = nullunFlagAbuse: -> + url = nullunFollow: -> url = @model.urlFor("unFlagAbuse") DiscussionUtil.safeAjax $elem: @$(".discussion-flag-abuse") diff --git a/lms/templates/discussion/_underscore_templates.html b/lms/templates/discussion/_underscore_templates.html index 6f7b933d12..6bbb9575f1 100644 --- a/lms/templates/discussion/_underscore_templates.html +++ b/lms/templates/discussion/_underscore_templates.html @@ -44,7 +44,7 @@
${'<%- body %>'}
- + POST
Report Misuse
@@ -111,7 +111,7 @@

${'<%- created_at %>'}

${"<%- body %>"}
- + RESPONSE
Report Misuse
@@ -137,6 +137,7 @@