Commit b8176e5e by Tom Giannattasio

Merge branch 'master' into feature/tomg/fall-design

parents 0ebcf25a bd0b9aca
...@@ -273,7 +273,7 @@ def add_user_to_default_group(user, group): ...@@ -273,7 +273,7 @@ def add_user_to_default_group(user, group):
utg.users.add(User.objects.get(username=user)) utg.users.add(User.objects.get(username=user))
utg.save() utg.save()
# @receiver(post_save, sender=User) @receiver(post_save, sender=User)
def update_user_information(sender, instance, created, **kwargs): def update_user_information(sender, instance, created, **kwargs):
try: try:
cc_user = cc.User.from_django_user(instance) cc_user = cc.User.from_django_user(instance)
......
...@@ -73,10 +73,12 @@ class CorrectMap(object): ...@@ -73,10 +73,12 @@ class CorrectMap(object):
return answer_id in self.cmap and self.cmap[answer_id]['queuekey'] == test_key return answer_id in self.cmap and self.cmap[answer_id]['queuekey'] == test_key
def get_npoints(self, answer_id): def get_npoints(self, answer_id):
if self.is_correct(answer_id): npoints = self.get_property(answer_id, 'npoints')
npoints = self.cmap[answer_id].get('npoints', 1) # default to 1 point if correct if npoints is not None:
return npoints or 1 return npoints
return 0 # if not correct, return 0 elif self.is_correct(answer_id):
return 1
return 0 # if not correct and no points have been assigned, return 0
def set_property(self, answer_id, property, value): def set_property(self, answer_id, property, value):
if answer_id in self.cmap: self.cmap[answer_id][property] = value if answer_id in self.cmap: self.cmap[answer_id][property] = value
......
...@@ -199,7 +199,10 @@ def _get_module(user, request, location, student_module_cache, course_id, positi ...@@ -199,7 +199,10 @@ def _get_module(user, request, location, student_module_cache, course_id, positi
) )
# Fully qualified callback URL for external queueing system # Fully qualified callback URL for external queueing system
xqueue_callback_url = request.build_absolute_uri('/')[:-1] # Trailing slash provided by reverse xqueue_callback_url = '{proto}://{host}'.format(
host=request.get_host(),
proto=request.META.get('HTTP_X_FORWARDED_PROTO', 'https' if request.is_secure() else 'http')
)
xqueue_callback_url += reverse('xqueue_callback', xqueue_callback_url += reverse('xqueue_callback',
kwargs=dict(course_id=course_id, kwargs=dict(course_id=course_id,
userid=str(user.id), userid=str(user.id),
...@@ -346,10 +349,10 @@ def xqueue_callback(request, course_id, userid, id, dispatch): ...@@ -346,10 +349,10 @@ def xqueue_callback(request, course_id, userid, id, dispatch):
get = request.POST.copy() get = request.POST.copy()
for key in ['xqueue_header', 'xqueue_body']: for key in ['xqueue_header', 'xqueue_body']:
if not get.has_key(key): if not get.has_key(key):
return Http404 raise Http404
header = json.loads(get['xqueue_header']) header = json.loads(get['xqueue_header'])
if not isinstance(header, dict) or not header.has_key('lms_key'): if not isinstance(header, dict) or not header.has_key('lms_key'):
return Http404 raise Http404
# Retrieve target StudentModule # Retrieve target StudentModule
user = User.objects.get(id=userid) user = User.objects.get(id=userid)
......
...@@ -51,7 +51,7 @@ def ajax_content_response(request, course_id, content, template_name): ...@@ -51,7 +51,7 @@ def ajax_content_response(request, course_id, content, template_name):
'content': content, 'content': content,
} }
html = render_to_string(template_name, context) html = render_to_string(template_name, context)
user_info = cc.User.from_django_user(request.user).safe_attributes() user_info = cc.User.from_django_user(request.user).to_dict()
annotated_content_info = utils.get_annotated_content_info(course_id, content, request.user, user_info) annotated_content_info = utils.get_annotated_content_info(course_id, content, request.user, user_info)
return JsonResponse({ return JsonResponse({
'html': html, 'html': html,
......
...@@ -64,7 +64,7 @@ def render_discussion(request, course_id, threads, *args, **kwargs): ...@@ -64,7 +64,7 @@ def render_discussion(request, course_id, threads, *args, **kwargs):
'user': (lambda: reverse('django_comment_client.forum.views.user_profile', args=[course_id, user_id])), 'user': (lambda: reverse('django_comment_client.forum.views.user_profile', args=[course_id, user_id])),
}[discussion_type]() }[discussion_type]()
user_info = cc.User.from_django_user(request.user).safe_attributes() user_info = cc.User.from_django_user(request.user).to_dict()
def infogetter(thread): def infogetter(thread):
return utils.get_annotated_content_infos(course_id, thread, request.user, user_info) return utils.get_annotated_content_infos(course_id, thread, request.user, user_info)
...@@ -176,7 +176,7 @@ def render_single_thread(request, discussion_id, course_id, thread_id): ...@@ -176,7 +176,7 @@ def render_single_thread(request, discussion_id, course_id, thread_id):
thread = cc.Thread.find(thread_id).retrieve(recursive=True).to_dict() thread = cc.Thread.find(thread_id).retrieve(recursive=True).to_dict()
user_info = cc.User.from_django_user(request.user).safe_attributes() user_info = cc.User.from_django_user(request.user).to_dict()
annotated_content_info = utils.get_annotated_content_infos(course_id, thread=thread, user=request.user, user_info=user_info) annotated_content_info = utils.get_annotated_content_infos(course_id, thread=thread, user=request.user, user_info=user_info)
...@@ -194,7 +194,7 @@ def single_thread(request, course_id, discussion_id, thread_id): ...@@ -194,7 +194,7 @@ def single_thread(request, course_id, discussion_id, thread_id):
if request.is_ajax(): if request.is_ajax():
user_info = cc.User.from_django_user(request.user).safe_attributes() user_info = cc.User.from_django_user(request.user).to_dict()
thread = cc.Thread.find(thread_id).retrieve(recursive=True) thread = cc.Thread.find(thread_id).retrieve(recursive=True)
annotated_content_info = utils.get_annotated_content_infos(course_id, thread, request.user, user_info=user_info) 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} context = {'thread': thread.to_dict(), 'course_id': course_id}
......
...@@ -332,6 +332,8 @@ WIKI_CAN_CHANGE_PERMISSIONS = lambda article, user: user.is_staff or user.is_sup ...@@ -332,6 +332,8 @@ WIKI_CAN_CHANGE_PERMISSIONS = lambda article, user: user.is_staff or user.is_sup
WIKI_CAN_ASSIGN = lambda article, user: user.is_staff or user.is_superuser WIKI_CAN_ASSIGN = lambda article, user: user.is_staff or user.is_superuser
WIKI_USE_BOOTSTRAP_SELECT_WIDGET = False WIKI_USE_BOOTSTRAP_SELECT_WIDGET = False
WIKI_LINK_LIVE_LOOKUPS = False
WIKI_LINK_DEFAULT_LEVEL = 2
################################# Jasmine ################################### ################################# Jasmine ###################################
JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee'
......
...@@ -33,16 +33,6 @@ class User(models.Model): ...@@ -33,16 +33,6 @@ class User(models.Model):
params = {'source_type': source.type, 'source_id': source.id} params = {'source_type': source.type, 'source_id': source.id}
response = perform_request('delete', _url_for_subscription(self.id), params) response = perform_request('delete', _url_for_subscription(self.id), params)
# TODO this is a hack to compensate for the fact that synchronization isn't
# happening properly.
def safe_attributes(self):
try:
return self.to_dict()
except:
self.save()
self._retrieve()
return self.to_dict()
def vote(self, voteable, value): def vote(self, voteable, value):
if voteable.type == 'thread': if voteable.type == 'thread':
url = _url_for_vote_thread(voteable.id) url = _url_for_vote_thread(voteable.id)
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
</section> </section>
<section class="course-content"> <section class="course-content">
${content} ${content.decode('utf-8')}
</section> </section>
</div> </div>
</section> </section>
......
-e git://github.com/MITx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles -e git://github.com/MITx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles
-e git://github.com/MITx/django-pipeline.git#egg=django-pipeline -e git://github.com/MITx/django-pipeline.git#egg=django-pipeline
-e git://github.com/benjaoming/django-wiki.git@533c7fc#egg=django-wiki -e git://github.com/benjaoming/django-wiki.git@7e42bce#egg=django-wiki
-e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev -e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev
-e common/lib/capa -e common/lib/capa
-e common/lib/xmodule -e common/lib/xmodule
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