Commit cdd43c02 authored by Andreas Jung's avatar Andreas Jung

deprecated OFS.content_types

parent 8ad477ec
......@@ -22,6 +22,11 @@ Zope Changes
- Collector #1233: port ZOPE_CONFIG patch from Zope 2.7 to Zope 2.8
after Zope 2.9.0 beta 2
Bugs fixed
- deprecated OFS.content_types
Zope 2.9.0 beta 2 (2005/12/24)
......
......@@ -14,62 +14,11 @@
$Id$
"""
import mimetypes
import os.path
import re
import warnings
warnings.warn('Using OFS.content_types is deprecated (will be removed in Zope '
'2.11). Instead use zope.app.contenttypes.',
DeprecationWarning,
stacklevel=2)
find_binary = re.compile('[\0-\7]').search
def text_type(s):
# Yuk. See if we can figure out the type by content.
if (s.strip().lower()[:6] == '<html>' or s.find('</') > 0):
return 'text/html'
elif s.strip().startswith('<?xml'):
return 'text/xml'
else:
return 'text/plain'
def guess_content_type(name='', body='', default=None):
# Attempt to determine the content type (and possibly
# content-encoding) based on an an object's name and
# entity body.
type, enc = mimetypes.guess_type(name)
if type is None:
if body:
if find_binary(body) is not None:
type = default or 'application/octet-stream'
else:
type = (default or text_type(body)
or 'text/x-unknown-content-type')
else:
type = default or 'text/x-unknown-content-type'
return type.lower(), enc and enc.lower() or None
def add_files(filenames):
# Make sure the additional files are either loaded or scheduled to
# be loaded:
if mimetypes.inited:
# Re-initialize the mimetypes module, loading additional files
mimetypes.init(filenames)
else:
# Tell the mimetypes module about the additional files so
# when it is initialized, it will pick up all of them, in
# the right order.
mimetypes.knownfiles.extend(filenames)
# Provide definitions shipped as part of Zope:
here = os.path.dirname(os.path.abspath(__file__))
add_files([os.path.join(here, "mime.types")])
if __name__ == '__main__':
items = mimetypes.types_map.items()
items.sort()
for item in items: print "%s:\t%s" % item
from zope.app.content_types import text_type, guess_content_type, add_files
##############################################################################
#
# Copyright (c) 2003 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Tests of the content_types extension mechanism.
$Id$
"""
import mimetypes
import os.path
import sys
import unittest
from OFS import content_types
try:
__file__
except NameError:
__file__ = os.path.realpath(sys.argv[0])
here = os.path.dirname(os.path.abspath(__file__))
MIME_TYPES_1 = os.path.join(here, "mime.types-1")
MIME_TYPES_2 = MIME_TYPES_1[:-1] + "2"
class ContentTypesTestCase(unittest.TestCase):
def setUp(self):
self._old_state = mimetypes.__dict__.copy()
def tearDown(self):
mimetypes.__dict__.update(self._old_state)
def check_types_count(self, delta):
self.assertEqual(len(mimetypes.types_map),
len(self._old_state["types_map"]) + delta)
def test_add_one_file(self):
ntypes = len(mimetypes.types_map)
content_types.add_files([MIME_TYPES_1])
ctype, encoding = content_types.guess_content_type("foo.ztmt-1")
self.assert_(encoding is None)
self.assertEqual(ctype, "text/x-vnd.zope.test-mime-type-1")
ctype, encoding = content_types.guess_content_type("foo.ztmt-1.gz")
self.assertEqual(encoding, "gzip")
self.assertEqual(ctype, "text/x-vnd.zope.test-mime-type-1")
self.check_types_count(1)
def test_add_two_files(self):
ntypes = len(mimetypes.types_map)
content_types.add_files([MIME_TYPES_1, MIME_TYPES_2])
ctype, encoding = content_types.guess_content_type("foo.ztmt-1")
self.assert_(encoding is None)
self.assertEqual(ctype, "text/x-vnd.zope.test-mime-type-1")
ctype, encoding = content_types.guess_content_type("foo.ztmt-2")
self.assert_(encoding is None)
self.assertEqual(ctype, "text/x-vnd.zope.test-mime-type-2")
self.check_types_count(2)
def test_suite():
return unittest.makeSuite(ContentTypesTestCase)
if __name__ == '__main__':
unittest.main()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment