[Checkins] SVN: grokapps/SmallELearningDemo/src/smallelearningdemo/filecontainer.py Add example code of zope.file.

Yusei Tahara yusei at domen.cx
Tue Oct 7 20:48:22 EDT 2008


Log message for revision 91888:
  Add example code of zope.file.
  

Changed:
  U   grokapps/SmallELearningDemo/src/smallelearningdemo/filecontainer.py

-=-
Modified: grokapps/SmallELearningDemo/src/smallelearningdemo/filecontainer.py
===================================================================
--- grokapps/SmallELearningDemo/src/smallelearningdemo/filecontainer.py	2008-10-07 23:34:56 UTC (rev 91887)
+++ grokapps/SmallELearningDemo/src/smallelearningdemo/filecontainer.py	2008-10-08 00:48:21 UTC (rev 91888)
@@ -1,5 +1,8 @@
 import grok
-import zope.app.file
+import zope.schema
+import zope.file.file
+import zope.file.upload
+import zope.file.download
 
 
 class FileContainer(grok.Container):
@@ -7,25 +10,60 @@
   pass
 
 
+#### Example of using zope.app.file
+## import zope.app.file
+##
+## class Add(grok.AddForm):
+##   """An addview for zope.app.file"""
+##   grok.context(FileContainer)
+##
+##   form_fields = grok.AutoFields(zope.app.file.interfaces.IFile).select('data')
+##
+##   @grok.action('Add file')
+##   def add(self, **data):
+##     self.upload(**data)
+##     self.redirect(self.url(self.context.__parent__))
+##
+##   def upload(self, **data):
+##     fileupload = self.request['form.data']
+##     if fileupload and fileupload.filename:
+##       contenttype = fileupload.headers.get('Content-Type')
+##       file_ = zope.app.file.File(data['data'], contenttype)
+##       self.context[fileupload.filename] = file_
+
+
 class Add(grok.AddForm):
+  """An addview for zope.file"""
 
   grok.context(FileContainer)
 
-  form_fields = grok.AutoFields(zope.app.file.interfaces.IFile).select('data')
+  form_fields = grok.Fields(
+    zope.schema.Bytes(__name__='data',
+                      title=u'Upload data',
+                      description=u'Upload file',),
+    )
 
   @grok.action('Add file')
-  def add(self, **data):
+  def addFile(self, data):
     self.upload(**data)
     self.redirect(self.url(self.context.__parent__))
 
-  def upload(self, **data):
+  def upload(self, data):
     fileupload = self.request['form.data']
-    if fileupload and fileupload.filename:
-      contenttype = fileupload.headers.get('Content-Type')
-      file_ = zope.app.file.File(data['data'], contenttype)
-      self.context[fileupload.filename] = file_
+    file_ = zope.file.file.File()
+    zope.file.upload.updateBlob(file_, fileupload)
+    self.context[fileupload.filename] = file_
 
 
 class Index(grok.View):
 
   pass
+
+
+class FileIndex(zope.file.download.Display, grok.View):
+  """Default view for zope.file.file.File"""
+  grok.name('index.html')
+  grok.context(zope.file.file.File)
+
+  def render(self):
+    return self()



More information about the Checkins mailing list