From 44f7b37bfb4ee853ba1449219b146c8cad513f9a Mon Sep 17 00:00:00 2001 From: Rocky Duan Date: Sun, 12 Aug 2012 12:56:55 -0700 Subject: [PATCH] refactored comment_client working --- .../django_comment_client/base/views.py | 117 +++++++++--------- .../django_comment_client/forum/views.py | 13 +- .../coffee/src/discussion/content.coffee | 2 - .../coffee/src/discussion/discussion.coffee | 1 - lms/static/coffee/src/discussion/utils.coffee | 1 - lms/templates/discussion/_inline.html | 14 +-- 6 files changed, 68 insertions(+), 80 deletions(-) diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py index cc5c9ad851..2b03313241 100644 --- a/lms/djangoapps/django_comment_client/base/views.py +++ b/lms/djangoapps/django_comment_client/base/views.py @@ -5,7 +5,7 @@ import os.path import logging import urlparse -import comment_client as c +import comment_client as cc from django.core import exceptions from django.contrib.auth.decorators import login_required @@ -19,7 +19,6 @@ from mitxmako.shortcuts import render_to_response, render_to_string from django_comment_client.utils import JsonResponse, JsonError, extract from django_comment_client.permissions import check_permissions_by_view -from collection import defaultdict import functools def permitted(fn): @@ -27,9 +26,9 @@ def permitted(fn): def wrapper(request, *args, **kwargs): def fetch_content(): if "thread_id" in kwargs: - content = dict(c.Thread.find(kwargs["thread_id"])) + content = cc.Thread.find(kwargs["thread_id"]).to_dict() elif "comment_id" in kwargs: - content = dict(c.Comment.find(kwargs["comment_id"])) + content = cc.Comment.find(kwargs["comment_id"]).to_dict() else: content = None return content @@ -45,71 +44,71 @@ def permitted(fn): @permitted def create_thread(request, course_id, commentable_id): post = request.POST - thread = c.Thread(**extract(post, ['body', 'title', 'tags'])) + thread = cc.Thread(**extract(post, ['body', 'title', 'tags'])) thread.anonymous = post.get('anonymous', 'false').lower() == 'true' thread.course_id = course_id thread.user_id = request.user.id thread.save() if post.get('auto_subscribe', 'false').lower() == 'true': - user = c.User.from_django_user(request.user) - user.subscribe(thread) + user = cc.User.from_django_user(request.user) + user.follow(thread) if request.is_ajax(): context = { 'course_id': course_id, - 'thread': dict(thread), + 'thread': thread.to_dict(), } html = render_to_string('discussion/ajax_create_thread.html', context) return JsonResponse({ 'html': html, - 'content': dict(thread), + 'content': thread.to_dict(), }) else: - return JsonResponse(dict(thread)) + return JsonResponse(thread.to_dict()) @require_POST @login_required @permitted def update_thread(request, course_id, thread_id): - thread = c.Thread.find(thread_id) + thread = cc.Thread.find(thread_id) thread.update_attributes(**extract(request.POST, ['body', 'title', 'tags'])) thread.save() if request.is_ajax(): context = { - 'thread': dict(thread), + 'thread': thread.to_dict(), 'course_id': course_id, } html = render_to_string('discussion/ajax_update_thread.html', context) return JsonResponse({ 'html': html, - 'content': dict(thread), + 'content': thread.to_dict(), }) else: - return JsonResponse(dict(thread)) + return JsonResponse(thread.to_dict()) def _create_comment(request, course_id, thread_id=None, parent_id=None): post = request.POST - comment = c.Comment(**extract(post, ['body'])) + comment = cc.Comment(**extract(post, ['body'])) comment.anonymous = post.get('anonymous', 'false').lower() == 'true' comment.user_id = request.user.id comment.course_id = course_id comment.thread_id = thread_id comment.parent_id = parent_id comment.save() - dict_comment = dict(comment) + dict_comment = comment.to_dict() if post.get('auto_subscribe', 'false').lower() == 'true': - user = c.User.from_django_user(request.user) - user.subscribe(comment.thread) + user = cc.User.from_django_user(request.user) + user.follow(comment.thread) if request.is_ajax(): context = { - 'comment': dict(comment), + 'comment': comment.to_dict(), } html = render_to_string('discussion/ajax_create_comment.html', context) return JsonResponse({ 'html': html, - 'content': dict(comment), + 'content': comment.to_dict(), }) else: - return JsonResponse(dict(comment)) + return JsonResponse(comment.to_dict()) @require_POST @login_required @@ -121,47 +120,47 @@ def create_comment(request, course_id, thread_id): @login_required @permitted def delete_thread(request, course_id, thread_id): - thread = c.Thread.find(thread_id) + thread = cc.Thread.find(thread_id) thread.delete() - return JsonResponse(dict(thread)) + return JsonResponse(thread.to_dict()) @require_POST @login_required @permitted def update_comment(request, course_id, comment_id): - comment = c.Comment.find(comment_id) + comment = cc.Comment.find(comment_id) comment.update_attributes(**extract(request.POST, ['body'])) comment.save() if request.is_ajax(): context = { - 'comment': dict(comment), + 'comment': comment.to_dict(), 'course_id': course_id, } html = render_to_string('discussion/ajax_update_comment.html', context) return JsonResponse({ 'html': html, - 'content': dict(comment), + 'content': comment.to_dict(), }) else: - return JsonResponse(dict(comment)), + return JsonResponse(comment.to_dict()), @require_POST @login_required @permitted def endorse_comment(request, course_id, comment_id): - comment = c.Comment.find(comment_id) + comment = cc.Comment.find(comment_id) comment.endorsed = request.POST.get('endorsed', 'false').lower() == 'true' comment.save() - return JsonResponse(dict(response)) + return JsonResponse(comment.to_dict()) @require_POST @login_required @permitted def openclose_thread(request, course_id, thread_id): - comment = c.Comment.find(comment_id) + comment = cc.Comment.find(comment_id) comment.endorsed = request.POST.get('closed', 'false').lower() == 'true' comment.save() - return JsonResponse(dict(response)) + return JsonResponse(comment.to_dict()) @require_POST @login_required @@ -173,53 +172,53 @@ def create_sub_comment(request, course_id, comment_id): @login_required @permitted def delete_comment(request, course_id, comment_id): - comment = c.Comment.find(comment_id) + comment = cc.Comment.find(comment_id) comment.delete() - return JsonResponse(dict(response)) + return JsonResponse(comment.to_dict()) @require_POST @login_required @permitted def vote_for_comment(request, course_id, comment_id, value): - user = c.User.from_django_user(request.user) - comment = c.Comment.find(comment_id) + user = cc.User.from_django_user(request.user) + comment = cc.Comment.find(comment_id) user.vote(comment, value) - return JsonResponse(dict(comment)) + return JsonResponse(comment.to_dict()) @require_POST @login_required @permitted def undo_vote_for_comment(request, course_id, comment_id): - user = c.User.from_django_user(request.user) - comment = c.Comment.find(comment_id) + user = cc.User.from_django_user(request.user) + comment = cc.Comment.find(comment_id) user.unvote(comment) - return JsonResponse(dict(comment)) + return JsonResponse(comment.to_dict()) @require_POST @login_required @permitted def vote_for_thread(request, course_id, thread_id, value): - user = c.User.from_django_user(request.user) - thread = c.Thread.find(thread_id) + user = cc.User.from_django_user(request.user) + thread = cc.Thread.find(thread_id) user.vote(thread, value) - return JsonResponse(dict(thread)) + return JsonResponse(thread.to_dict()) @require_POST @login_required @permitted def undo_vote_for_thread(request, course_id, thread_id): - user = c.User.from_django_user(request.user) - thread = c.Thread.find(thread_id) + user = cc.User.from_django_user(request.user) + thread = cc.Thread.find(thread_id) user.unvote(thread) - return JsonResponse(dict(thread)) + return JsonResponse(thread.to_dict()) @require_POST @login_required @permitted def follow_thread(request, course_id, thread_id): - user = c.User.from_django_user(request.user) - thread = c.Thread.find(thread_id) + user = cc.User.from_django_user(request.user) + thread = cc.Thread.find(thread_id) user.follow(thread) return JsonResponse({}) @@ -227,8 +226,8 @@ def follow_thread(request, course_id, thread_id): @login_required @permitted def follow_commentable(request, course_id, commentable_id): - user = c.User.from_django_user(request.user) - commentable = c.Commentable.find(commentable_id) + user = cc.User.from_django_user(request.user) + commentable = cc.Commentable.find(commentable_id) user.follow(commentable) return JsonResponse({}) @@ -236,8 +235,8 @@ def follow_commentable(request, course_id, commentable_id): @login_required @permitted def follow_user(request, course_id, followed_user_id): - user = c.User.from_django_user(request.user) - followed_user = c.User.find(followed_user_id) + user = cc.User.from_django_user(request.user) + followed_user = cc.User.find(followed_user_id) user.follow(followed_user) return JsonResponse({}) @@ -245,8 +244,8 @@ def follow_user(request, course_id, followed_user_id): @login_required @permitted def unfollow_thread(request, course_id, thread_id): - user = c.User.from_django_user(request.user) - thread = c.Thread.find(thread_id) + user = cc.User.from_django_user(request.user) + thread = cc.Thread.find(thread_id) user.unfollow(thread) return JsonResponse({}) @@ -254,8 +253,8 @@ def unfollow_thread(request, course_id, thread_id): @login_required @permitted def unfollow_commentable(request, course_id, commentable_id): - user = c.User.from_django_user(request.user) - commentable = c.Commentable.find(commentable_id) + user = cc.User.from_django_user(request.user) + commentable = cc.Commentable.find(commentable_id) user.unfollow(commentable) return JsonResponse({}) @@ -263,8 +262,8 @@ def unfollow_commentable(request, course_id, commentable_id): @login_required @permitted def unfollow_user(request, course_id, followed_user_id): - user = c.User.from_django_user(request.user) - followed_user = c.User.find(followed_user_id) + user = cc.User.from_django_user(request.user) + followed_user = cc.User.find(followed_user_id) user.unfollow(followed_user) return JsonResponse({}) @@ -273,7 +272,7 @@ def search_similar_threads(request, course_id, commentable_id): text = request.GET.get('text', None) if text: return JsonResponse( - c.search_similar_threads( + cc.search_similar_threads( course_id, recursive=False, query_params={ @@ -289,7 +288,7 @@ def tags_autocomplete(request, course_id): value = request.GET.get('q', None) results = [] if value: - results = c.tags_autocomplete(value) + results = cc.tags_autocomplete(value) return JsonResponse(results) @require_POST diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py index 3415ff1365..fa7621fddc 100644 --- a/lms/djangoapps/django_comment_client/forum/views.py +++ b/lms/djangoapps/django_comment_client/forum/views.py @@ -59,7 +59,7 @@ def render_discussion(request, course_id, threads, discussion_id=None, \ context = { 'threads': threads, 'discussion_id': discussion_id, - 'user_info': dict(cc.User.from_django_user(request.user)),#comment_client.get_user_info(request.user.id, raw=True), + 'user_info': json.dumps(cc.User.from_django_user(request.user).to_dict()), 'course_id': course_id, 'request': request, 'performed_search': _should_perform_search(request), @@ -90,7 +90,6 @@ def get_threads(request, course_id, discussion_id): 'course_id': course_id, } - import pdb; pdb.set_trace() threads, page, num_pages = cc.Thread.search(query_params) #if _should_perform_search(request): @@ -172,16 +171,16 @@ def get_annotated_content_infos(course_id, thread, user, is_thread=True): def render_single_thread(request, discussion_id, course_id, thread_id): - thread = cc.Thread.find(thread_id).retrieve_with_comments() + thread = cc.Thread.find(thread_id).retrieve(recursive=True) #comment_client.get_thread(thread_id, recursive=True) - annotated_content_info = get_annotated_content_infos(course_id, thread=dict(thread), \ + annotated_content_info = get_annotated_content_infos(course_id, thread=thread.to_dict(), \ user=request.user, is_thread=True) context = { 'discussion_id': discussion_id, 'thread': thread, - 'user_info': dict(cc.User.from_django_user(request.user)),#get_user_info(request.user.id, raw=True), + 'user_info': cc.User.from_django_user(request.user).to_dict(),#get_user_info(request.user.id, raw=True), 'annotated_content_info': json.dumps(annotated_content_info), 'course_id': course_id, 'request': request, @@ -192,9 +191,9 @@ def single_thread(request, course_id, discussion_id, thread_id): if request.is_ajax(): - thread = cc.Thread.find(thread_id).retrieve_with_comments()#comment_client.get_thread(thread_id, recursive=True) + thread = cc.Thread.find(thread_id).retrieve(recursive=True) annotated_content_info = get_annotated_content_infos(course_id, thread, request.user) - context = {'thread': dict(thread)} + context = {'thread': thread.to_dict()} html = render_to_string('discussion/_ajax_single_thread.html', context) return utils.JsonResponse({ diff --git a/lms/static/coffee/src/discussion/content.coffee b/lms/static/coffee/src/discussion/content.coffee index ac1ed4c93b..cd217b5e52 100644 --- a/lms/static/coffee/src/discussion/content.coffee +++ b/lms/static/coffee/src/discussion/content.coffee @@ -183,8 +183,6 @@ initializeFollowThread = (thread) -> handleEndorse = (elem, endorsed) -> url = Discussion.urlFor('endorse_comment', id) - console.log endorsed - console.log url Discussion.safeAjax $elem: $(elem) url: url diff --git a/lms/static/coffee/src/discussion/discussion.coffee b/lms/static/coffee/src/discussion/discussion.coffee index a528b0914b..8cf2596e0e 100644 --- a/lms/static/coffee/src/discussion/discussion.coffee +++ b/lms/static/coffee/src/discussion/discussion.coffee @@ -79,7 +79,6 @@ initializeFollowDiscussion = (discussion) -> data: text: $local(".new-post-title").val() success: (response, textStatus) -> - console.log "request" $similarPosts.empty() if $.type(response) == "array" and response.length $wrapper.show() diff --git a/lms/static/coffee/src/discussion/utils.coffee b/lms/static/coffee/src/discussion/utils.coffee index ba13cc9b65..f73119c4a6 100644 --- a/lms/static/coffee/src/discussion/utils.coffee +++ b/lms/static/coffee/src/discussion/utils.coffee @@ -116,7 +116,6 @@ wmdEditors = {} appended_id = "-#{cls_identifier}-#{id}" imageUploadUrl = Discussion.urlFor('upload') editor = Markdown.makeWmdEditor elem, appended_id, imageUploadUrl, Discussion.postMathJaxProcessor - console.log editor wmdEditors["#{cls_identifier}-#{id}"] = editor $input = $("#wmd-input-#{cls_identifier}-#{id}") $input.attr("placeholder", "post a new topic...").bind 'focus', (e) -> diff --git a/lms/templates/discussion/_inline.html b/lms/templates/discussion/_inline.html index 61ebd1f070..8fc266a160 100644 --- a/lms/templates/discussion/_inline.html +++ b/lms/templates/discussion/_inline.html @@ -1,4 +1,5 @@ <%namespace name="renderer" file="_thread.html"/> +<%! from django.template.defaultfilters import escapejs %>
@@ -27,18 +28,11 @@ <%include file="_paginator.html" />
-<%! - def escape_quotes(text): - return text.replace('\"', '\\\"').replace("\'", "\\\'") -%> - - -