def project_save(request, project_id): project = get_object_or_404(Project, pk=project_id, course=request.course) if not project.can_edit(request.course, request.user): return HttpResponseRedirect(project.get_absolute_url()) # verify user is in course in_course_or_404(project.author.username, request.course) projectform = ProjectForm(request, instance=project, data=request.POST) if projectform.is_valid(): # legacy and for optimizing queries projectform.instance.submitted = \ request.POST.get('publish', None) != 'PrivateEditorsAreOwners' # this changes for version-tracking purposes projectform.instance.author = request.user projectform.save() projectform.instance.participants.add(request.user) # update the collaboration policy_name = request.POST.get('publish', 'PrivateEditorsAreOwners') projectform.instance.create_or_update_collaboration(policy_name) v_num = projectform.instance.get_latest_version() is_assignment = projectform.instance.is_assignment(request.course, request.user) return HttpResponse(json.dumps({ 'status': 'success', 'is_assignment': is_assignment, 'title': projectform.instance.title, 'revision': { 'id': v_num, 'public_url': projectform.instance.public_url(), 'visibility': project.visibility_short(), 'due_date': project.get_due_date() } }, indent=2), content_type='application/json') else: ctx = {'status': 'error', 'msg': ""} for key, value in projectform.errors.items(): if key == '__all__': ctx['msg'] = ctx['msg'] + value[0] + "\n" else: ctx['msg'] = \ '%s "%s" is not valid for the %s field.\n %s\n' % \ (ctx['msg'], projectform.data[key], projectform.fields[key].label, value[0].lower()) return HttpResponse(json.dumps(ctx, indent=2), content_type='application/json')
def post(self, request, *args, **kwargs): frm = ProjectForm(request, instance=self.project, data=request.POST) if frm.is_valid(): policy = request.POST.get('publish', PUBLISH_DRAFT[0]) if policy == PUBLISH_DRAFT[0]: frm.instance.date_submitted = None else: frm.instance.date_submitted = datetime.now() frm.instance.author = request.user project = frm.save() project.participants.add(request.user) item_id = request.POST.get('item', None) project.create_or_update_item(item_id) # update the collaboration collaboration = project.create_or_update_collaboration(policy) DiscussionIndex.update_class_references(project.body, None, None, collaboration, project.author) parent_id = request.POST.get('parent', None) project.set_parent(parent_id) ctx = { 'status': 'success', 'is_essay_assignment': project.is_essay_assignment(), 'title': project.title, 'context': { 'project': { 'url': project.get_absolute_url() } }, 'revision': { 'id': project.latest_version(), 'public_url': project.public_url(), 'visibility': project.visibility_short(), 'due_date': project.get_due_date() } } else: ctx = {'status': 'error', 'msg': ""} for key, value in frm.errors.items(): if key == '__all__': ctx['msg'] = ctx['msg'] + value[0] + "\n" else: ctx['msg'] = \ '%s "%s" is not valid for the %s field.\n %s\n' % \ (ctx['msg'], frm.data[key], frm.fields[key].label, value[0].lower()) return self.render_to_json_response(ctx)
def post(self, request, *args, **kwargs): frm = ProjectForm(request, instance=self.project, data=request.POST) if frm.is_valid(): policy = request.POST.get('publish', PUBLISH_DRAFT[0]) if policy == PUBLISH_DRAFT[0]: frm.instance.date_submitted = None else: frm.instance.date_submitted = datetime.now() frm.instance.author = request.user project = frm.save() project.participants.add(request.user) item_id = request.POST.get('item', None) project.create_or_update_item(item_id) # update the collaboration collaboration = project.create_or_update_collaboration(policy) DiscussionIndex.update_class_references( project.body, None, None, collaboration, project.author) parent_id = request.POST.get('parent', None) project.set_parent(parent_id) ctx = { 'status': 'success', 'is_assignment': project.is_assignment(), 'title': project.title, 'context': { 'project': { 'url': project.get_absolute_url() } }, 'revision': { 'id': project.latest_version(), 'public_url': project.public_url(), 'visibility': project.visibility_short(), 'due_date': project.get_due_date() } } else: ctx = {'status': 'error', 'msg': ""} for key, value in frm.errors.items(): if key == '__all__': ctx['msg'] = ctx['msg'] + value[0] + "\n" else: ctx['msg'] = \ '%s "%s" is not valid for the %s field.\n %s\n' % \ (ctx['msg'], frm.data[key], frm.fields[key].label, value[0].lower()) return self.render_to_json_response(ctx)
def project_save(request, project_id): project = get_object_or_404(Project, pk=project_id, course=request.course) if not project.can_edit(request): return HttpResponseRedirect(project.get_absolute_url()) # verify user is in course in_course_or_404(project.author.username, request.course) projectform = ProjectForm(request, instance=project, data=request.POST) if projectform.is_valid(): # legacy and for optimizing queries projectform.instance.submitted = request.POST.get("publish", None) != "PrivateEditorsAreOwners" # this changes for version-tracking purposes projectform.instance.author = request.user projectform.save() projectform.instance.collaboration(request, sync_group=True) v_num = projectform.instance.get_latest_version() return HttpResponse( simplejson.dumps( { "status": "success", "is_assignment": projectform.instance.is_assignment(request), "title": projectform.instance.title, "revision": { "id": v_num, "public_url": projectform.instance.public_url(), "visibility": project.visibility_short(), "due_date": project.get_due_date(), }, }, indent=2, ), mimetype="application/json", ) else: ctx = {"status": "error", "msg": ""} for key, value in projectform.errors.items(): if key == "__all__": ctx["msg"] = ctx["msg"] + value[0] + "\n" else: ctx["msg"] = '%s "%s" is not valid for the %s field.\n %s\n' % ( ctx["msg"], projectform.data[key], projectform.fields[key].label, value[0].lower(), ) return HttpResponse(simplejson.dumps(ctx, indent=2), mimetype="application/json")
def project_save(request, project_id): project = get_object_or_404(Project, pk=project_id, course=request.course) if not project.can_edit(request): return HttpResponseRedirect(project.get_absolute_url()) # verify user is in course in_course_or_404(project.author.username, request.course) projectform = ProjectForm(request, instance=project, data=request.POST) if projectform.is_valid(): # legacy and for optimizing queries projectform.instance.submitted = \ request.POST.get('publish', None) != 'PrivateEditorsAreOwners' # this changes for version-tracking purposes projectform.instance.author = request.user projectform.save() projectform.instance.collaboration(request, sync_group=True) v_num = projectform.instance.get_latest_version() return HttpResponse(json.dumps( { 'status': 'success', 'is_assignment': projectform.instance.is_assignment(request), 'title': projectform.instance.title, 'revision': { 'id': v_num, 'public_url': projectform.instance.public_url(), 'visibility': project.visibility_short(), 'due_date': project.get_due_date() } }, indent=2), mimetype='application/json') else: ctx = {'status': 'error', 'msg': ""} for key, value in projectform.errors.items(): if key == '__all__': ctx['msg'] = ctx['msg'] + value[0] + "\n" else: ctx['msg'] = \ '%s "%s" is not valid for the %s field.\n %s\n' % \ (ctx['msg'], projectform.data[key], projectform.fields[key].label, value[0].lower()) return HttpResponse(json.dumps(ctx, indent=2), mimetype='application/json')