[Zope-Checkins] SVN: Zope/trunk/ Make the App and reStructuredText dependencies in DocumentTemplate optional

Hanno Schlichting hannosch at hannosch.eu
Sun Jun 13 14:44:46 EDT 2010


Log message for revision 113431:
  Make the App and reStructuredText dependencies in DocumentTemplate optional
  

Changed:
  U   Zope/trunk/AC-vs-DTML-TODO.txt
  U   Zope/trunk/src/DocumentTemplate/DT_Var.py

-=-
Modified: Zope/trunk/AC-vs-DTML-TODO.txt
===================================================================
--- Zope/trunk/AC-vs-DTML-TODO.txt	2010-06-13 18:33:39 UTC (rev 113430)
+++ Zope/trunk/AC-vs-DTML-TODO.txt	2010-06-13 18:44:46 UTC (rev 113431)
@@ -46,11 +46,3 @@
   * Missing
   * RestrictedPython
   * zExceptions
-
-- Remaining outside imports:
-
-  * App (getConfiguration().structured_text_header_level)
-  * reStructuredText (HTML) - Both of these deal with format support and
-    configuration via zope.conf. The calls are localized to one function each.
-    Add an optional dependency on Zope2? Configure if it is available,
-    otherwise use some default?

Modified: Zope/trunk/src/DocumentTemplate/DT_Var.py
===================================================================
--- Zope/trunk/src/DocumentTemplate/DT_Var.py	2010-06-13 18:33:39 UTC (rev 113430)
+++ Zope/trunk/src/DocumentTemplate/DT_Var.py	2010-06-13 18:44:46 UTC (rev 113431)
@@ -148,22 +148,23 @@
 
    A 'call' tag is provided for evaluating named objects or expressions
    without rendering the result.
-
-$Id$
 """
 
-import string, re, sys
+import logging
+import re
+import string
+import sys
 from urllib import quote, quote_plus, unquote, unquote_plus
 
+from Acquisition import aq_base
+from AccessControl.tainted import TaintedString
+from zope.structuredtext.document import DocumentWithImages
+
 # for import by other modules, dont remove!
 from DocumentTemplate.html_quote import html_quote
 from DocumentTemplate.DT_Util import parse_params, name_param, str, ustr
 
-from Acquisition import aq_base
-from AccessControl.tainted import TaintedString
-from zope.structuredtext.html import HTML
-from zope.structuredtext.document import DocumentWithImages
-from App.config import getConfiguration
+logger = logging.getLogger('DocumentTemplate')
 
 
 class Var:
@@ -399,30 +400,43 @@
 def len_comma(v, name='(Unknown name)', md={}):
     return thousands_commas(str(len(v)))
 
+
 def restructured_text(v, name='(Unknown name)', md={}):
+    try:
+        from reStructuredText import HTML
+    except ImportError:
+        logger.info('The reStructuredText package is not available, therefor '
+                    'the DT_Var.restructured_text function returns None.')
+        return None
 
-    from reStructuredText import HTML
-
-    if isinstance(v, str): 
+    if isinstance(v, str):
         txt = v
     elif aq_base(v).meta_type in ['DTML Document','DTML Method']:
         txt = aq_base(v).read_raw()
-    else: 
+    else:
         txt = str(v)
 
     return HTML(txt)
 
 
 def structured_text(v, name='(Unknown name)', md={}):
+    from zope.structuredtext.html import HTML
 
-    if isinstance(v, str): 
+    if isinstance(v, str):
         txt = v
     elif aq_base(v).meta_type in ['DTML Document','DTML Method']:
         txt = aq_base(v).read_raw()
-    else: 
+    else:
         txt = str(v)
 
-    level = getConfiguration().structured_text_header_level
+    level = 3
+    try:
+        from App.config import getConfiguration
+    except ImportError:
+        pass
+    else:
+        level = getConfiguration().structured_text_header_level
+
     doc = DocumentWithImages()(txt)
     return HTML()(doc, level, header=False)
 



More information about the Zope-Checkins mailing list