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)))
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 })
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})
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})
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')