diff --git a/lms/djangoapps/django_comment_client/base/views.py b/lms/djangoapps/django_comment_client/base/views.py
index e20202538e..e619140993 100644
--- a/lms/djangoapps/django_comment_client/base/views.py
+++ b/lms/djangoapps/django_comment_client/base/views.py
@@ -64,7 +64,7 @@ def ajax_content_response(request, course_id, content, template_name):
def create_thread(request, course_id, commentable_id):
post = request.POST
thread = cc.Thread(**extract(post, ['body', 'title', 'tags']))
- thread.update_attributes({
+ thread.update_attributes(**{
'anonymous' : post.get('anonymous', 'false').lower() == 'true',
'commentable_id' : commentable_id,
'course_id' : course_id,
@@ -94,7 +94,7 @@ def update_thread(request, course_id, thread_id):
def _create_comment(request, course_id, thread_id=None, parent_id=None):
post = request.POST
comment = cc.Comment(**extract(post, ['body']))
- comment.update_attributes({
+ comment.update_attributes(**{
'anonymous' : post.get('anonymous', 'false').lower() == 'true',
'user_id' : request.user.id,
'course_id' : course_id,
diff --git a/lms/djangoapps/django_comment_client/forum/views.py b/lms/djangoapps/django_comment_client/forum/views.py
index b33b67aaee..bf263ffaa1 100644
--- a/lms/djangoapps/django_comment_client/forum/views.py
+++ b/lms/djangoapps/django_comment_client/forum/views.py
@@ -12,13 +12,14 @@ from courseware.courses import get_course_with_access
from dateutil.tz import tzlocal
from datehelper import time_ago_in_words
-import django_comment_client.utils as utils
from urllib import urlencode
from django_comment_client.permissions import check_permissions_by_view
+from django_comment_client.utils import merge_dict, extract, strip_none
import json
-import comment_client as cc
import dateutil
+import django_comment_client.utils as utils
+import comment_client as cc
THREADS_PER_PAGE = 5
@@ -65,11 +66,8 @@ def render_discussion(request, course_id, threads, *args, **kwargs):
'user': (lambda: reverse('django_comment_client.forum.views.user_profile', args=[course_id, user_id])),
}[discussion_type]()
- print "start annotating"
annotated_content_infos = map(lambda x: utils.get_annotated_content_infos(course_id, x, request.user), threads)
- print "start merging annotations"
- annotated_content_info = reduce(utils.merge_dict, annotated_content_infos, {})
- print "finished annotating"
+ annotated_content_info = reduce(merge_dict, annotated_content_infos, {})
context = {
'threads': threads,
@@ -82,7 +80,7 @@ def render_discussion(request, course_id, threads, *args, **kwargs):
'pages_nearby_delta': PAGES_NEARBY_DELTA,
'discussion_type': discussion_type,
'base_url': base_url,
- 'query_params': utils.strip_none(utils.extract(query_params, ['page', 'sort_key', 'sort_order', 'tags', 'text'])),
+ 'query_params': strip_none(extract(query_params, ['page', 'sort_key', 'sort_order', 'tags', 'text'])),
'annotated_content_info': json.dumps(annotated_content_info),
}
context = dict(context.items() + query_params.items())
@@ -98,17 +96,21 @@ def render_user_discussion(*args, **kwargs):
return render_discussion(discussion_type='user', *args, **kwargs)
def get_threads(request, course_id, discussion_id=None):
- query_params = {
- 'page': request.GET.get('page', 1),
- 'per_page': THREADS_PER_PAGE, #TODO maybe change this later
- 'sort_key': request.GET.get('sort_key', 'activity'),
- 'sort_order': request.GET.get('sort_order', 'desc'),
- 'text': request.GET.get('text', ''),
- 'tags': request.GET.get('tags', ''),
+
+ default_query_params = {
+ 'page': 1,
+ 'per_page': THREADS_PER_PAGE,
+ 'sort_key': 'activity',
+ 'sort_order': 'desc',
+ 'text': '',
+ 'tags': '',
'commentable_id': discussion_id,
'course_id': course_id,
}
+ query_params = merge_dict(default_query_params,
+ strip_none(extract(request.GET, ['page', 'sort_key', 'sort_order', 'text', 'tags'])))
+
threads, page, num_pages = cc.Thread.search(query_params)
query_params['page'] = page
@@ -138,7 +140,6 @@ def forum_form_discussion(request, course_id):
threads, query_params = get_threads(request, course_id)
content = render_forum_discussion(request, course_id, threads, discussion_id=_general_discussion_id(course_id), query_params=query_params)
-
recent_active_threads = cc.search_recent_active_threads(
course_id,
recursive=False,
@@ -159,6 +160,7 @@ def forum_form_discussion(request, course_id):
'recent_active_threads': recent_active_threads,
'trending_tags': trending_tags,
}
+ print "start rendering.."
return render_to_response('discussion/index.html', context)
def render_single_thread(request, discussion_id, course_id, thread_id):
@@ -209,14 +211,14 @@ def single_thread(request, course_id, discussion_id, thread_id):
def user_profile(request, course_id, user_id):
course = get_course_with_access(request.user, course_id, 'load')
- discussion_user = cc.User(id=user_id, course_id=course_id)
+ 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 = discussion_user.active_threads(query_params)
+ threads, page, num_pages = profiled_user.active_threads(query_params)
query_params['page'] = page
query_params['num_pages'] = num_pages
@@ -230,7 +232,7 @@ def user_profile(request, course_id, user_id):
'course': course,
'user': request.user,
'django_user': User.objects.get(id=user_id),
- 'discussion_user': discussion_user.to_dict(),
+ 'profiled_user': profiled_user.to_dict(),
'content': content,
}
diff --git a/lms/djangoapps/django_comment_client/utils.py b/lms/djangoapps/django_comment_client/utils.py
index 5075bff295..3ef33afbbf 100644
--- a/lms/djangoapps/django_comment_client/utils.py
+++ b/lms/djangoapps/django_comment_client/utils.py
@@ -20,9 +20,12 @@ def extract(dic, keys):
return {k: dic.get(k) for k in keys}
def strip_none(dic):
- def _is_none(v):
- return v is None or (isinstance(v, str) and len(v.strip()) == 0)
- return dict([(k, v) for k, v in dic.iteritems() if not _is_none(v)])
+ return dict([(k, v) for k, v in dic.iteritems() if v is not None])
+
+def strip_blank(dic):
+ def _is_blank(v):
+ return isinstance(v, str) and len(v.strip()) == 0
+ return dict([(k, v) for k, v in dic.iteritems() if not _is_blank(v)])
def merge_dict(dic1, dic2):
return dict(dic1.items() + dic2.items())
diff --git a/lms/envs/common.py b/lms/envs/common.py
index c6ed8a0c0c..139fb09226 100644
--- a/lms/envs/common.py
+++ b/lms/envs/common.py
@@ -41,7 +41,7 @@ PERFSTATS = False
# Features
MITX_FEATURES = {
'SAMPLE' : False,
- 'USE_DJANGO_PIPELINE' : True,
+ 'USE_DJANGO_PIPELINE' : False,
'DISPLAY_HISTOGRAMS_TO_STAFF' : True,
'REROUTE_ACTIVATION_EMAIL' : False, # nonempty string = address for all activation emails
'DEBUG_LEVEL' : 0, # 0 = lowest level, least verbose, 255 = max level, most verbose
diff --git a/lms/lib/comment_client/thread.py b/lms/lib/comment_client/thread.py
index e5fccb81d0..c203e22d22 100644
--- a/lms/lib/comment_client/thread.py
+++ b/lms/lib/comment_client/thread.py
@@ -30,8 +30,8 @@ class Thread(models.Model):
'per_page': 20,
'course_id': query_params['course_id'],
'recursive': False}
- params = merge_dict(default_params, strip_none(query_params))
- if query_params['text'] or query_params['tags']:
+ params = merge_dict(default_params, strip_blank(strip_none(query_params)))
+ if query_params.get('text') or query_params.get('tags'):
url = cls.url(action='search')
else:
url = cls.url(action='get_all', params=extract(params, 'commentable_id'))
diff --git a/lms/lib/comment_client/utils.py b/lms/lib/comment_client/utils.py
index 7e696bb99d..16b1952303 100644
--- a/lms/lib/comment_client/utils.py
+++ b/lms/lib/comment_client/utils.py
@@ -2,9 +2,12 @@ import requests
import json
def strip_none(dic):
- def _is_none(v):
- return v is None or (isinstance(v, str) and len(v.strip()) == 0)
- return dict([(k, v) for k, v in dic.iteritems() if not _is_none(v)])
+ return dict([(k, v) for k, v in dic.iteritems() if v is not None])
+
+def strip_blank(dic):
+ def _is_blank(v):
+ return isinstance(v, str) and len(v.strip()) == 0
+ return dict([(k, v) for k, v in dic.iteritems() if not _is_blank(v)])
def extract(dic, keys):
if isinstance(keys, str):
diff --git a/lms/static/coffee/src/discussion/content.coffee b/lms/static/coffee/src/discussion/content.coffee
index 2e26e191b0..a55322b9f5 100644
--- a/lms/static/coffee/src/discussion/content.coffee
+++ b/lms/static/coffee/src/discussion/content.coffee
@@ -402,5 +402,5 @@ initializeFollowThread = (thread) ->
$local(".admin-delete").remove()
if not Discussion.getContentInfo id, 'can_openclose'
$local(".discussion-openclose").remove()
- if not Discussion.getContentInfo id, 'can_vote'
- $local(".discussion-vote").css "visibility", "hidden"
+ #if not Discussion.getContentInfo id, 'can_vote'
+ # $local(".discussion-vote").css "visibility", "hidden"
diff --git a/lms/templates/discussion/_forum.html b/lms/templates/discussion/_forum.html
index 6ef21b6de7..f0c6ad4be9 100644
--- a/lms/templates/discussion/_forum.html
+++ b/lms/templates/discussion/_forum.html
@@ -1,5 +1,4 @@
<%namespace name="renderer" file="_thread.html"/>
-<%! from django.template.defaultfilters import escapejs %>
@@ -55,24 +58,13 @@- Edit
- Delete
% if type == "thread":
- -
- % if content['closed']:
- Re-open thread
- % else:
- Close thread
- % endif
-
+ - ${close_thread_text(content)}
% endif
- ${render_title(content, type, **kwargs)}