def upload(request, url=None): """ Upload a new file. """ url = utils.clean_path(url) path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.UploadForm(path, data=request.POST, files=request.FILES) if form.is_valid(): file_path = os.path.join(path, form.cleaned_data['file'].name) destination = open(file_path, 'wb+') for chunk in form.cleaned_data['file'].chunks(): destination.write(chunk) obj_path = '/'+os.path.join(url, form.cleaned_data['file'].name) obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFREG) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: form = forms.UploadForm(path) return render_to_response("admin/file_manager/upload.html", {'form': form, 'url': url,}, context_instance=template.RequestContext(request))
def mkdir(request, url=None): "Make a new directory at the current url." url = utils.clean_path(url) full_path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.NameForm(full_path, None, request.POST) if form.is_valid(): #Make the directory os.mkdir(os.path.join(full_path, form.cleaned_data['name'])) obj_path = os.path.join(url, form.cleaned_data['name']) obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFDIR) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: form = forms.NameForm(full_path, None) # An unbound form return render_to_response("admin/file_manager/mkdir.html", {'form': form, 'url': url,}, context_instance=template.RequestContext(request))
def create(request, url=None): "Create a new text file at the url." # Create a new text file. url = utils.clean_path(url) parent = '/'.join(url.split('/')[:-1]) full_path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.CreateForm(full_path, None, request.POST) if form.is_valid(): file = codecs.open(os.path.join(full_path, form.cleaned_data['name']), encoding='utf-8', mode='w+') file.write(form.cleaned_data['content'].replace('\r\n', '\n')) file.close() obj_path = '/' + os.path.join(url, form.cleaned_data['name']) obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFREG) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: # Read the data from file form = forms.CreateForm(full_path, None) # An unbound form return render_to_response("admin/file_manager/create.html", {'form': form, 'url': url,}, context_instance=template.RequestContext(request))
def mkln(request, url=None): "Make a new link at the current url." url = utils.clean_path(url) full_path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.CreateLinkForm(full_path, None, full_path, request.POST) if form.is_valid(): src = os.path.join(full_path, form.cleaned_data['link']) dest = os.path.join(full_path, form.cleaned_data['name']) try: relative = os.path.relpath(src, full_path) except AttributeError: relative = utils.relpath(src, full_path) os.symlink(relative, dest) obj_path = os.path.join(url, form.cleaned_data['link']) obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFLNK) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: form = forms.CreateLinkForm(full_path, None, full_path) return render_to_response("admin/file_manager/mkln.html", {'form': form, 'url': url,}, context_instance=template.RequestContext(request))
def upload(request, url=None): """ Upload a new file. """ url = utils.clean_path(url) path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.UploadForm(path, data=request.POST, files=request.FILES) if form.is_valid(): file_path = os.path.join(path, form.cleaned_data['file'].name) destination = open(file_path, 'wb+') for chunk in form.cleaned_data['file'].chunks(): destination.write(chunk) obj_path = '/' + os.path.join(url, form.cleaned_data['file'].name) obj, created = models.File.objects.get_or_create( path=obj_path, type=models.File.S_IFREG) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: form = forms.UploadForm(path) return render_to_response( "admin/file_manager/upload.html", { 'form': form, 'url': url, }, context_instance=template.RequestContext(request))
def mkdir(request, url=None): "Make a new directory at the current url." url = utils.clean_path(url) full_path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.NameForm(full_path, None, request.POST) if form.is_valid(): #Make the directory os.mkdir(os.path.join(full_path, form.cleaned_data['name'])) obj_path = os.path.join(url, form.cleaned_data['name']) obj, created = models.File.objects.get_or_create( path=obj_path, type=models.File.S_IFDIR) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: form = forms.NameForm(full_path, None) # An unbound form return render_to_response( "admin/file_manager/mkdir.html", { 'form': form, 'url': url, }, context_instance=template.RequestContext(request))
def copy(request, url=None): "Copy file/directory to a new location." # Not really happy about the l/rstrips. url = utils.clean_path(url) parent = '/'.join(url.split('/')[:-1]) full_parent = os.path.join(utils.get_document_root(), parent).rstrip('/') full_path = os.path.join(utils.get_document_root(), url) directory = url.replace(parent, "", 1).lstrip('/') if request.method == 'POST': form = forms.CopyForm(full_path, '', directory, full_path, request.POST) if form.is_valid(): new_path = os.path.join(form.cleaned_data['parent'], form.cleaned_data['name']) if os.path.isdir(full_path): shutil.copytree(full_path, new_path) obj_path = os.path.join(url, form.cleaned_data['name']) file_type = models.File.S_IFDIR else: shutil.copy(full_path, new_path) # Log the copy. obj_path = os.path.join(url, form.cleaned_data['name']) file_type = models.File.S_IFREG obj, created = models.File.objects.get_or_create(path=obj_path, type=file_type) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=parent) else: form = forms.CopyForm(full_path, '', directory, full_path, initial={ 'parent': full_parent, 'name': directory }) return render_to_response( "admin/file_manager/copy.html", { 'form': form, 'url': url, 'current': "/%s" % parent, 'directory': os.path.isdir(full_path) }, context_instance=template.RequestContext(request))
def copy(request, url=None): "Copy file/directory to a new location." # Not really happy about the l/rstrips. url = utils.clean_path(url) parent = '/'.join(url.split('/')[:-1]) full_parent = os.path.join(utils.get_document_root(), parent).rstrip('/') full_path = os.path.join(utils.get_document_root(), url) directory = url.replace(parent, "", 1).lstrip('/') if request.method == 'POST': form = forms.CopyForm(full_path, '', directory, full_path, request.POST) if form.is_valid(): new_path = os.path.join(form.cleaned_data['parent'], form.cleaned_data['name']) if os.path.isdir(full_path): shutil.copytree(full_path, new_path) obj_path = os.path.join(url, form.cleaned_data['name']) file_type = models.File.S_IFDIR else: shutil.copy(full_path, new_path) # Log the copy. obj_path = os.path.join(url, form.cleaned_data['name']) file_type = models.File.S_IFREG obj, created = models.File.objects.get_or_create(path=obj_path, type=file_type) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=parent) else: form = forms.CopyForm(full_path, '', directory, full_path, initial={'parent':full_parent, 'name': directory}) return render_to_response("admin/file_manager/copy.html", {'form': form, 'url': url, 'current': "/%s" % parent, 'directory': os.path.isdir(full_path)}, context_instance=template.RequestContext(request))
def create(request, url=None): "Create a new text file at the url." # Create a new text file. url = utils.clean_path(url) parent = '/'.join(url.split('/')[:-1]) full_path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.CreateForm(full_path, None, request.POST) if form.is_valid(): file = codecs.open(os.path.join(full_path, form.cleaned_data['name']), encoding='utf-8', mode='w+') file.write(form.cleaned_data['content'].replace('\r\n', '\n')) file.close() obj_path = '/' + os.path.join(url, form.cleaned_data['name']) obj, created = models.File.objects.get_or_create( path=obj_path, type=models.File.S_IFREG) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: # Read the data from file form = forms.CreateForm(full_path, None) # An unbound form return render_to_response( "admin/file_manager/create.html", { 'form': form, 'url': url, }, context_instance=template.RequestContext(request))
def mkln(request, url=None): "Make a new link at the current url." url = utils.clean_path(url) full_path = os.path.join(utils.get_document_root(), url) if request.method == 'POST': form = forms.CreateLinkForm(full_path, None, full_path, request.POST) if form.is_valid(): src = os.path.join(full_path, form.cleaned_data['link']) dest = os.path.join(full_path, form.cleaned_data['name']) try: relative = os.path.relpath(src, full_path) except AttributeError: relative = utils.relpath(src, full_path) os.symlink(relative, dest) obj_path = os.path.join(url, form.cleaned_data['link']) obj, created = models.File.objects.get_or_create( path=obj_path, type=models.File.S_IFLNK) utils.log_addition(request, obj) return redirect('admin_file_manager_list', url=url) else: form = forms.CreateLinkForm(full_path, None, full_path) return render_to_response( "admin/file_manager/mkln.html", { 'form': form, 'url': url, }, context_instance=template.RequestContext(request))