[Checkins] SVN: z3c.filetype/trunk/src/z3c/filetype/ added filetype adapter

Bernd Dorn bernd.dorn at fhv.at
Mon Aug 14 09:44:50 EDT 2006


Log message for revision 69470:
  added filetype adapter

Changed:
  U   z3c.filetype/trunk/src/z3c/filetype/README.txt
  A   z3c.filetype/trunk/src/z3c/filetype/adapters.py
  U   z3c.filetype/trunk/src/z3c/filetype/configure.zcml
  D   z3c.filetype/trunk/src/z3c/filetype/guess.py
  U   z3c.filetype/trunk/src/z3c/filetype/interfaces/__init__.py
  U   z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py

-=-
Modified: z3c.filetype/trunk/src/z3c/filetype/README.txt
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/README.txt	2006-08-14 13:40:51 UTC (rev 69469)
+++ z3c.filetype/trunk/src/z3c/filetype/README.txt	2006-08-14 13:44:49 UTC (rev 69470)
@@ -157,3 +157,13 @@
   [<InterfaceClass z3c.filetype.interfaces.filetypes.IHTMLFile>]
 
 
+There is also an adapter from ITypedFile to IFileType, which can be
+used to get the default content type for the interface.
+
+  >>> from z3c.filetype import adapters
+  >>> component.provideAdapter(adapters.TypedFileType)
+  >>> ft = interfaces.IFileType(foo)
+  >>> ft.contentType
+  'text/html'
+  
+

Added: z3c.filetype/trunk/src/z3c/filetype/adapters.py
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/adapters.py	2006-08-14 13:40:51 UTC (rev 69469)
+++ z3c.filetype/trunk/src/z3c/filetype/adapters.py	2006-08-14 13:44:49 UTC (rev 69470)
@@ -0,0 +1,31 @@
+from zope.cachedescriptors.property import Lazy
+import interfaces
+from interfaces import filetypes
+from zope import interface
+from zope import component
+
+class TypedFileType(object):
+
+    interface.implements(interfaces.IFileType)
+    component.adapts(filetypes.ITypedFile)
+
+    def __init__(self, context):
+        self.context = context
+
+    @property
+    def contentType(self):
+        decl = interface.Declaration(
+            *interface.directlyProvidedBy(self.context))
+        for iface in decl.flattened():
+            if not issubclass(iface, filetypes.ITypedFile):
+                continue
+            mt = iface.queryTaggedValue(filetypes.MT)
+            if mt is not None:
+                return mt
+
+                
+
+        
+    
+
+    


Property changes on: z3c.filetype/trunk/src/z3c/filetype/adapters.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Modified: z3c.filetype/trunk/src/z3c/filetype/configure.zcml
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/configure.zcml	2006-08-14 13:40:51 UTC (rev 69469)
+++ z3c.filetype/trunk/src/z3c/filetype/configure.zcml	2006-08-14 13:44:49 UTC (rev 69470)
@@ -6,5 +6,6 @@
  <subscriber for=".interfaces.ITypeableFile
                   zope.lifecycleevent.interfaces.IObjectModifiedEvent"
              handler=".api.handleModified"/>
- 
+
+ <adapter factory=".adapters.TypedFileType"/>
 </configure>

Deleted: z3c.filetype/trunk/src/z3c/filetype/guess.py
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/guess.py	2006-08-14 13:40:51 UTC (rev 69469)
+++ z3c.filetype/trunk/src/z3c/filetype/guess.py	2006-08-14 13:44:49 UTC (rev 69470)
@@ -1,9 +0,0 @@
-
-def getInterfacesFor(data=None, filename=None, mimeType=None):
-
-    """returns a sequence of interfaces that are provided by files
-    having data as content, filename as name and mimeType as
-    mime-type
-    """
-    raise NotImplementedError
-

Modified: z3c.filetype/trunk/src/z3c/filetype/interfaces/__init__.py
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/interfaces/__init__.py	2006-08-14 13:40:51 UTC (rev 69469)
+++ z3c.filetype/trunk/src/z3c/filetype/interfaces/__init__.py	2006-08-14 13:44:49 UTC (rev 69470)
@@ -1,6 +1,10 @@
 from zope.lifecycleevent.interfaces import IObjectModifiedEvent
-from zope import interface
+from zope import interface, schema
 
+class IFileType(interface.Interface):
+
+    contentType = schema.TextLine(title = u'Content Type')
+
 class IFileTypeModifiedEvent(IObjectModifiedEvent):
 
     """This event is fired when the filetypes change on an object"""

Modified: z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py
===================================================================
--- z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py	2006-08-14 13:40:51 UTC (rev 69469)
+++ z3c.filetype/trunk/src/z3c/filetype/interfaces/filetypes.py	2006-08-14 13:44:49 UTC (rev 69470)
@@ -20,7 +20,7 @@
 ITARFile.setTaggedValue(MTM,re.compile('application/x-tar'))
 ITARFile.setTaggedValue(MT,'application/x-tar')
 
-class IGZIPFile(ITypedFile):
+class IGZIPFile(IBinaryFile):
     """Binary file"""
 IGZIPFile.setTaggedValue(MTM,re.compile('application/x-gzip'))
 IGZIPFile.setTaggedValue(MT,'application/x-gzip')



More information about the Checkins mailing list