예제 #1
0
파일: views.py 프로젝트: avorio/mediathread
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')
예제 #2
0
파일: views.py 프로젝트: kochw/mediathread
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")
예제 #3
0
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')
예제 #4
0
    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)
예제 #5
0
파일: views.py 프로젝트: c0cky/mediathread
    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)