def detail(self, request): if not request.user.has_perm('auth.view_filebrowser'): raise PermissionDenied() """ Show detail page for a file. Rename existing File/Directory (deletes existing Image Versions/Thumbnails). """ from filebrowser.forms import ChangeForm query = request.GET path = u'%s' % os.path.join(self.directory, query.get('dir', '')) fileobject = FileObject(os.path.join(path, query.get('filename', '')), site=self) if request.method == 'POST': form = ChangeForm(request.POST, path=path, fileobject=fileobject, filebrowser_site=self) if form.is_valid(): new_name = form.cleaned_data['name'] new_file = form.cleaned_data['file'] action_name = form.cleaned_data['custom_action'] try: action_response = None if action_name: action = self.get_action(action_name) # Pre-action signal signals.filebrowser_actions_pre_apply.send(sender=request, action_name=action_name, fileobject=[fileobject], site=self) # Call the action to action action_response = action(request=request, fileobjects=[fileobject]) # Post-action signal signals.filebrowser_actions_post_apply.send(sender=request, action_name=action_name, fileobject=[fileobject], result=action_response, site=self) if new_name != fileobject.filename: signals.filebrowser_pre_rename.send(sender=request, path=fileobject.path, name=fileobject.filename, new_name=new_name, site=self) fileobject.delete_versions() self.storage.move(fileobject.path, os.path.join(fileobject.head, new_name)) signals.filebrowser_post_rename.send(sender=request, path=fileobject.path, name=fileobject.filename, new_name=new_name, site=self) messages.add_message(request, messages.SUCCESS, _('Renaming was successful.')) return HttpResponseRedirect('%s?dir=%s&filename=%s' % (reverse('fb_detail'), query.get('dir', ''), new_name)) if fileobject.filetype == "Code" and new_file != fileobject.read: fileobject.write(new_file) messages.add_message(request, messages.SUCCESS, u'Arquivo editado com sucesso!') if isinstance(action_response, HttpResponse): return action_response if "_continue" in request.POST: redirect_url = reverse("filebrowser:fb_detail", current_app=self.name) + query_helper(query, "filename="+new_name, "filename") else: redirect_url = reverse("filebrowser:fb_browse", current_app=self.name) + query_helper(query, "", "filename") return HttpResponseRedirect(redirect_url) except OSError: form.errors['name'] = forms.util.ErrorList([_('Error.')]) else: form = ChangeForm(initial={"name": fileobject.filename}, path=path, fileobject=fileobject, filebrowser_site=self) return render_to_response('filebrowser/detail.html', { 'form': form, 'fileobject': fileobject, 'query': query, 'title': u'%s' % fileobject.filename, 'is_popup': "pop" in request.REQUEST, 'settings_var': get_settings_var(directory=self.directory), 'breadcrumbs': get_breadcrumbs(query, query.get('dir', '')), 'breadcrumbs_title': u'%s' % fileobject.filename, 'filebrowser_site': self }, context_instance=Context(request, current_app=self.name))