From e0849e8b5a772b2cbe6c7aadb4fd456cf3e4d36b Mon Sep 17 00:00:00 2001 From: Don Mitchell Date: Thu, 13 Dec 2012 16:34:58 -0500 Subject: [PATCH] Cache to debug other branch --- cms/djangoapps/contentstore/views.py | 20 +++++ .../models/settings/course_grading.py | 21 +++++ cms/static/js/models/course_relative.js | 12 +-- cms/templates/overview.html | 80 ++++--------------- cms/urls.py | 3 + 5 files changed, 68 insertions(+), 68 deletions(-) diff --git a/cms/djangoapps/contentstore/views.py b/cms/djangoapps/contentstore/views.py index d2f19802af..1a0317212b 100644 --- a/cms/djangoapps/contentstore/views.py +++ b/cms/djangoapps/contentstore/views.py @@ -167,6 +167,7 @@ def course_index(request, org, course, name): 'active_tab': 'courseware', 'context_course': course, 'sections': sections, + 'course_graders': json.dumps(CourseGradingModel.fetch(course.location).graders), 'parent_location': course.location, 'new_section_template': Location('i4x', 'edx', 'templates', 'chapter', 'Empty'), 'new_subsection_template': Location('i4x', 'edx', 'templates', 'sequential', 'Empty'), # for now they are the same, but the could be different at some point... @@ -339,6 +340,25 @@ def preview_component(request, location): 'editor': wrap_xmodule(component.get_html, component, 'xmodule_edit.html')(), }) +@expect_json +@login_required +@ensure_csrf_cookie +def assignment_type_update(request, org, course, category, name): + ''' + CRUD operations on assignment types for sections and subsections and anything else gradable. + ''' + location = Location(['i4x', org, course, category, name]) + if not has_access(request.user, location): + raise HttpResponseForbidden() + + if request.method == 'GET': + # Cannot just do a get w/o knowing the course name :-( + return HttpResponse(json.dumps(CourseGradingModel.get_section_grader_type(location)), + mimetype="application/json") + elif request.method == 'POST': # post or put, doesn't matter. + return HttpResponse(json.dumps(CourseGradingModel.update_section_grader_type(location, request.POST)), + mimetype="application/json") + def user_author_string(user): '''Get an author string for commits by this user. Format: diff --git a/cms/djangoapps/models/settings/course_grading.py b/cms/djangoapps/models/settings/course_grading.py index fe10e651e3..1e856ce477 100644 --- a/cms/djangoapps/models/settings/course_grading.py +++ b/cms/djangoapps/models/settings/course_grading.py @@ -202,6 +202,27 @@ class CourseGradingModel: del descriptor.metadata['graceperiod'] get_modulestore(course_location).update_metadata(course_location, descriptor.metadata) + @staticmethod + def get_section_grader_type(location): + """ + + """ + if not isinstance(location, Location): + location = Location(location) + + # TODO impl to return {grader-type, location, id (random)} + + @staticmethod + def update_section_grader_type(location, jsondict): + """ + + """ + if not isinstance(location, Location): + location = Location(location) + + # TODO impl to return {grader-type, location, id (random)} + + @staticmethod def convert_set_grace_period(descriptor): # 5 hours 59 minutes 59 seconds => converted to iso format diff --git a/cms/static/js/models/course_relative.js b/cms/static/js/models/course_relative.js index c33339ff48..85ba6004ff 100644 --- a/cms/static/js/models/course_relative.js +++ b/cms/static/js/models/course_relative.js @@ -8,11 +8,11 @@ CMS.Models.Location = Backbone.Model.extend({ }, toUrl: function(overrides) { return - (overrides['tag'] ? overrides['tag'] : this.get('tag')) + "://" + - (overrides['org'] ? overrides['org'] : this.get('org')) + "/" + - (overrides['course'] ? overrides['course'] : this.get('course')) + "/" + - (overrides['category'] ? overrides['category'] : this.get('category')) + "/" + - (overrides['name'] ? overrides['name'] : this.get('name')) + "/"; + (overrides && overrides['tag'] ? overrides['tag'] : this.get('tag')) + "://" + + (overrides && overrides['org'] ? overrides['org'] : this.get('org')) + "/" + + (overrides && overrides['course'] ? overrides['course'] : this.get('course')) + "/" + + (overrides && overrides['category'] ? overrides['category'] : this.get('category')) + "/" + + (overrides && overrides['name'] ? overrides['name'] : this.get('name')) + "/"; }, _tagPattern : /[^:]+/g, _fieldPattern : new RegExp('[^/]+','g'), @@ -28,6 +28,7 @@ CMS.Models.Location = Backbone.Model.extend({ } } else if (_.isString(payload)) { + this._tagPattern.lastIndex = 0; // odd regex behavior requires this to be reset sometimes var foundTag = this._tagPattern.exec(payload); if (foundTag) { this._fieldPattern.lastIndex = this._tagPattern.lastIndex + 1; // skip over the colon @@ -36,6 +37,7 @@ CMS.Models.Location = Backbone.Model.extend({ org: this._fieldPattern.exec(payload)[0], course: this._fieldPattern.exec(payload)[0], category: this._fieldPattern.exec(payload)[0], + // FIXME handle no trailing / name: this._fieldPattern.exec(payload)[0] } } diff --git a/cms/templates/overview.html b/cms/templates/overview.html index df89f0af61..132dbee5aa 100644 --- a/cms/templates/overview.html +++ b/cms/templates/overview.html @@ -17,41 +17,23 @@ + @@ -167,21 +149,7 @@ -
-

Not Graded

- - - - - - +
@@ -207,21 +175,7 @@
-
-

Not Graded

- - - - - - +
diff --git a/cms/urls.py b/cms/urls.py index 29eae044b5..ad4b83c923 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -39,6 +39,9 @@ urlpatterns = ('', url(r'^(?P[^/]+)/(?P[^/]+)/settings/(?P[^/]+)$', 'contentstore.views.get_course_settings', name='course_settings'), url(r'^(?P[^/]+)/(?P[^/]+)/settings/(?P[^/]+)/section/(?P
[^/]+).*$', 'contentstore.views.course_settings_updates', name='course_settings'), url(r'^(?P[^/]+)/(?P[^/]+)/grades/(?P[^/]+)/(?P.*)$', 'contentstore.views.course_grader_updates', name='course_settings'), + + url(r'^(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/gradeas.*$', 'contentstore.views.assignment_type_update', name='assignment_type_update'), + url(r'^pages/(?P[^/]+)/(?P[^/]+)/course/(?P[^/]+)$', 'contentstore.views.static_pages', name='static_pages'), url(r'^edit_static/(?P[^/]+)/(?P[^/]+)/course/(?P[^/]+)$', 'contentstore.views.edit_static', name='edit_static'),