summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorianb <devnull@localhost>2005-07-17 22:56:11 +0000
committerianb <devnull@localhost>2005-07-17 22:56:11 +0000
commit52b40a398aed35edfc135bf30410c7823593d85c (patch)
tree61df9450f6000de5b1cb7adc3c4c66acf17db802
parent427c001cc1dd122fd71b86b5ad90aa11b0b5ac40 (diff)
downloadpaste-52b40a398aed35edfc135bf30410c7823593d85c.tar.gz
Implemented proper file upload
-rw-r--r--examples/filebrowser/pathobj.py29
-rw-r--r--examples/filebrowser/templates/directory.pt3
2 files changed, 27 insertions, 5 deletions
diff --git a/examples/filebrowser/pathobj.py b/examples/filebrowser/pathobj.py
index 8b57504..34bc1e2 100644
--- a/examples/filebrowser/pathobj.py
+++ b/examples/filebrowser/pathobj.py
@@ -86,6 +86,15 @@ class Path(sitepage.SitePage):
def __repr__(self):
return '<%s %s>' % (self.__class__.__name__, self.path)
+ def size_text(self):
+ st = os.stat(self.filename)
+ size = st.st_size
+ if size < 1024:
+ return '%i bytes' % size
+ if size < 1024*1024:
+ return '%iKb' % (size/1024)
+ return '%.1fMb' % (size/1024.0/1024.0)
+
def setup(self):
self.title = 'File: %s' % self.basename
self.options.parent = {
@@ -341,6 +350,9 @@ class Dir(Path):
upload_id = itertools.count(random.randint(0, 15000))
+ def size_text(self):
+ return None
+
def setup_file(self):
files = []
for filename in sorted(os.listdir(self.filename)):
@@ -358,9 +370,11 @@ class Dir(Path):
files[-1]['name'] += '/'
self.options.files = files
self.options.upload_id = self.upload_id.next()
- self.options.upload_url = self.globalurl(
- 'uploader', upload_id=self.options.upload_id,
- redirect='/')
+ # With upload progress, something like this will be necessary:
+ #self.options.upload_url = self.globalurl(
+ # 'uploader', upload_id=self.options.upload_id,
+ # redirect='/')
+ self.options.upload_url = self.pathurl(action='upload')
def action_view_raw(self):
self.action_view()
@@ -368,5 +382,14 @@ class Dir(Path):
def action_view(self):
self.view = 'directory.pt'
+ def action_upload(self):
+ file = self.fields.file
+ filename = file.filename
+ content = file.value
+ f = self.join(filename)
+ f.write_text(content)
+ self.message.write('File %s uploaded' % filename)
+ self.redirect(self.pathurl(f.path, action='view'))
+
PathContext.register_class(Dir)
diff --git a/examples/filebrowser/templates/directory.pt b/examples/filebrowser/templates/directory.pt
index fb49642..1418ef0 100644
--- a/examples/filebrowser/templates/directory.pt
+++ b/examples/filebrowser/templates/directory.pt
@@ -40,8 +40,7 @@ There are no files in this directory
<form tal:attributes="action options/upload_url" method="POST"
enctype="multipart/form-data">
-Upload: <input type="hidden" name="action" value="upload">
-<input type="file" name="file">
+Upload: <input type="file" name="file">
<input type="submit" value="Upload">
</form>