Example #1
0
def add_module(request, id_number, type_id, revision_number=None,
        version_name=None):
    """
    Add new module to the PackageRevision
    """
    revision = get_package_revision(id_number, type_id, revision_number,
                                    version_name)
    if request.user.pk != revision.author.pk:
        log_msg = ("[security] Attempt to add a module to package (%s) by "
                   "non-owner (%s)" % (id_number, request.user))
        log.warning(log_msg)
        return HttpResponseForbidden(
            'You are not the author of this %s' % escape(
                revision.package.get_type_name()))

    filename = pathify(request.POST.get('filename'))

    mod = Module(
        filename=filename,
        author=request.user,
        code="""// %s.js - %s's module
// author: %s""" % (filename, revision.package.full_name,
            request.user.get_profile())
    )
    try:
        mod.save()
        revision.module_add(mod)
    except FilenameExistException, err:
        mod.delete()
        return HttpResponseForbidden(escape(str(err)))
Example #2
0
def remove_folder(request, revision_id):
    " removes an EmptyDir from a revision "
    revision = get_object_with_related_or_404(PackageRevision, pk=revision_id)
    if request.user.pk != revision.author.pk:
        log_msg = ("[security] Attempt to remove a folder from revision (%s) "
                   "by non-owner (%s)" % (revision_id, request.user))
        log.warning(log_msg)
        return HttpResponseForbidden('You are not the author of this Package')

    foldername, root = (pathify(request.POST.get('name', '')),
                        request.POST.get('root_dir'))
    try:
        folder = revision.folders.get(name=foldername, root_dir=root)
    except EmptyDir.DoesNotExist:
        response = None
        if root == 'data':
            response = revision.attachment_rmdir(foldername)
        if not response:
            log_msg = 'Attempt to delete a non existing folder %s from %s.' % (
                foldername, revision_id)
            log.warning(log_msg)
            return HttpResponseForbidden('There is no such folder in %s' %
                                         escape(revision.package.full_name))
        revision, removed_attachments, removed_emptydirs = response
        return render_json(
            request, 'json/%s_rmdir.json' % root, {
                'revision': revision,
                'path': foldername,
                'removed_attachments': simplejson.dumps(removed_attachments),
                'removed_dirs': simplejson.dumps(removed_emptydirs),
                'foldername': foldername
            })
    else:
        revision.folder_remove(folder)

    return render_json(request, "json/folder_removed.json", {
        'revision': revision,
        'folder': folder
    })
Example #3
0
def remove_folder(request, revision_id):
    " removes an EmptyDir from a revision "
    revision = get_object_with_related_or_404(PackageRevision, pk=revision_id)
    if request.user.pk != revision.author.pk:
        log_msg = ("[security] Attempt to remove a folder from revision (%s) "
                "by non-owner (%s)" % (revision_id, request.user))
        log.warning(log_msg)
        return HttpResponseForbidden('You are not the author of this Package')

    foldername, root = (
            pathify(request.POST.get('name', '')),
            request.POST.get('root_dir'))
    try:
        folder = revision.folders.get(name=foldername, root_dir=root)
    except EmptyDir.DoesNotExist:
        response = None
        if root == 'data':
            response = revision.attachment_rmdir(foldername)
        if not response:
            log_msg = 'Attempt to delete a non existing folder %s from %s.' % (
                foldername, revision_id)
            log.warning(log_msg)
            return HttpResponseForbidden(
                'There is no such folder in %s' % escape(
                    revision.package.full_name))
        revision, removed_attachments, removed_emptydirs = response
        return render_json(request,
                'json/%s_rmdir.json' % root, {
                'revision': revision, 'path': foldername,
                'removed_attachments': simplejson.dumps(removed_attachments),
                'removed_dirs': simplejson.dumps(removed_emptydirs),
                'foldername': foldername})
    else:
        revision.folder_remove(folder)

    return render_json(request,
            "json/folder_removed.json",
            {'revision': revision, 'folder': folder})
Example #4
0
def remove_folder(request, revision_id):
    " removes an EmptyDir from a revision "
    revision = get_object_with_related_or_404(PackageRevision, pk=revision_id)
    if request.user.pk != revision.author.pk:
        log_msg = "[security] Attempt to remove a folder from revision (%s) " "by non-owner (%s)" % (
            revision_id,
            request.user,
        )
        log.warning(log_msg)
        return HttpResponseForbidden("You are not the author of this Package")

    foldername, root = (pathify(request.POST.get("name", "")), request.POST.get("root_dir"))
    try:
        folder = revision.folders.get(name=foldername, root_dir=root)
    except EmptyDir.DoesNotExist:
        response = None
        if root == "data":
            response = revision.attachment_rmdir(foldername)
        if not response:
            log_msg = "Attempt to delete a non existing folder %s from %s." % (foldername, revision_id)
            log.warning(log_msg)
            return HttpResponseForbidden("There is no such folder in %s" % escape(revision.package.full_name))
        revision, removed_attachments, removed_emptydirs = response
        return render_json(
            request,
            "json/%s_rmdir.json" % root,
            {
                "revision": revision,
                "path": foldername,
                "removed_attachments": simplejson.dumps(removed_attachments),
                "removed_dirs": simplejson.dumps(removed_emptydirs),
                "foldername": foldername,
            },
        )
    else:
        revision.folder_remove(folder)

    return render_json(request, "json/folder_removed.json", {"revision": revision, "folder": folder})
Example #5
0
def package_remove_folder(r, id_number, type_id, revision_number):
    " removes an EmptyDir from a revision "
    revision = get_package_revision(id_number, type_id, revision_number)
    if r.user.pk != revision.author.pk:
        log_msg = ("[security] Attempt to remove a folder from package (%s) "
                "by non-owner (%s)" % (id_number, r.user))
        log.warning(log_msg)
        return HttpResponseForbidden('You are not the author of this Package')

    foldername, root = pathify(r.POST.get('name', '')), r.POST.get('root_dir')
    try:
        folder = revision.folders.get(name=foldername, root_dir=root)
    except EmptyDir.DoesNotExist:
        response = None
        if root == 'data':
            response = revision.attachment_rmdir(foldername)
        if not response:
            log_msg = 'Attempt to delete a non existing folder %s from %s.' % (
                foldername, id_number)
            log.warning(log_msg)
            return HttpResponseForbidden(
                'There is no such folder in %s' % escape(
                    revision.package.full_name))
        revision, removed_attachments, removed_emptydirs = response
        return render_to_response('json/%s_rmdir.json' % root, {
            'revision': revision, 'path': foldername,
            'removed_attachments': simplejson.dumps(removed_attachments),
            'removed_dirs': simplejson.dumps(removed_emptydirs),
            'foldername': foldername},
            context_instance=RequestContext(r), mimetype='application/json')
    else:
        revision.folder_remove(folder)

    return render_to_response("json/folder_removed.json",
                {'revision': revision, 'folder': folder},
                context_instance=RequestContext(r),
                mimetype='application/json')