[CMF-checkins] CVS: Products/CMFCore - FSFile.py:1.12

Jens Vagelpohl jens at dataflake.org
Mon Sep 6 03:58:22 EDT 2004


Update of /cvs-repository/Products/CMFCore
In directory cvs.zope.org:/tmp/cvs-serv28648/CMFCore

Modified Files:
	FSFile.py 
Log Message:
- FSFile: Allow setting a content_type value using a .metadata file
  (http://www.zope.org/Collectors/CMF/281)



=== Products/CMFCore/FSFile.py 1.11 => 1.12 ===
--- Products/CMFCore/FSFile.py:1.11	Thu Aug 12 11:07:39 2004
+++ Products/CMFCore/FSFile.py	Mon Sep  6 03:57:51 2004
@@ -59,13 +59,25 @@
         return File(self.getId(), '', self._readFile(1))
 
     def _get_content_type(self, file, body, id, content_type=None):
+        # Consult self.content_type first, this is either
+        # the default (unknown/unknown) or it got a value from a
+        # .metadata file
+        default_type = 'unknown/unknown'
+        if getattr(self, 'content_type', default_type) != default_type:
+            return self.content_type
+
+        # Next, look at file headers
         headers=getattr(file, 'headers', None)
         if headers and headers.has_key('content-type'):
             content_type=headers['content-type']
         else:
+            # Last resort: Use the (imperfect) content type guessing
+            # mechanism from OFS.Image, which ultimately uses the
+            # Python mimetypes module.
             if type(body) is not type(''): body=body.data
             content_type, enc=guess_content_type(
                 getattr(file, 'filename',id), body, content_type)
+
         return content_type
 
     def _readFile(self, reparse):



More information about the CMF-checkins mailing list