[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/ Check for valid charset added and test for it.

Charlie Clark charlie at begeistert.org
Sun Sep 26 16:59:47 EDT 2010


Log message for revision 116959:
  Check for valid charset added and test for it.

Changed:
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py
  U   Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/tests/portal_config.txt

-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py	2010-09-26 20:43:25 UTC (rev 116958)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/interfaces.py	2010-09-26 20:59:47 UTC (rev 116959)
@@ -1,4 +1,5 @@
 """Schema for portal forms"""
+import codecs
 
 from zope.interface import Interface
 from zope.schema import TextLine, ASCIILine, Bool, Choice
@@ -13,6 +14,14 @@
          ]
          )
 
+def check_encoding(value):
+    encoding = ""
+    try:
+        encoding = codecs.lookup(value)
+    except LookupError:
+        pass
+    return encoding != ""
+
 class IPortalConfig(Interface):
     
     email_from_name = TextLine(
@@ -48,14 +57,16 @@
 
     default_charset = ASCIILine(
                     title=_(u"Portal default encoding"),
-                    description=_(u"Charset used to decode portal content strings. If empty, 'ascii' is used."),
+                    description=_(u"Charset used to decode portal content strings. If empty, 'utf-8' is used."),
                     required=False,
+                    constraint=check_encoding,
                     default="UTF-8")
                     
     email_charset = ASCIILine(
                     title=_(u"Portal email encoding"),
                     description=_(u"Charset used to encode emails send by the portal. If empty, 'utf-8' is used if necessary."),
                     required=False,
+                    constraint=check_encoding,
                     default="UTF-8")
     
     enable_actionicons = Bool(

Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/tests/portal_config.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/tests/portal_config.txt	2010-09-26 20:43:25 UTC (rev 116958)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/portal/tests/portal_config.txt	2010-09-26 20:59:47 UTC (rev 116959)
@@ -45,4 +45,8 @@
     >>> browser.getControl(name="form.default_charset").value = "Caché"
     >>> browser.getControl(name="form.actions.change").click()
     >>> "[[cmf_default][[[zope][There were errors]" in browser.contents
+    True
+    >>> browser.getControl(name="form.default_charset").value = "utf-9"
+    >>> browser.getControl(name="form.actions.change").click()
+    >>> "[Constraint not satisfied]" in browser.contents
     True
\ No newline at end of file



More information about the checkins mailing list