[Zope3-checkins] SVN: messageboard/trunk/step06/ Updated step to reflect changes in interfaces and field/widget.

Stephan Richter srichter at cosmos.phy.tufts.edu
Thu Aug 12 09:34:39 EDT 2004


Log message for revision 27042:
  Updated step to reflect changes in interfaces and field/widget.
  


Changed:
  U   messageboard/trunk/step06/browser/widgets.py
  U   messageboard/trunk/step06/configure.zcml
  U   messageboard/trunk/step06/fields.py
  U   messageboard/trunk/step06/interfaces.py
  U   messageboard/trunk/step06/message.py


-=-
Modified: messageboard/trunk/step06/browser/widgets.py
===================================================================
--- messageboard/trunk/step06/browser/widgets.py	2004-08-11 21:42:23 UTC (rev 27041)
+++ messageboard/trunk/step06/browser/widgets.py	2004-08-12 13:34:39 UTC (rev 27042)
@@ -30,7 +30,7 @@
             input = re.sub(regex, '', input)
 
         if self.context.allowed_tags:
-            regex = allowed_regex %'|'.join(
+            regex = allowed_regex %'[ />]|'.join(
                 self.context.allowed_tags)
             input = re.sub(regex, '', input)
 

Modified: messageboard/trunk/step06/configure.zcml
===================================================================
--- messageboard/trunk/step06/configure.zcml	2004-08-11 21:42:23 UTC (rev 27041)
+++ messageboard/trunk/step06/configure.zcml	2004-08-12 13:34:39 UTC (rev 27042)
@@ -67,6 +67,10 @@
         interface=".interfaces.IMessage"
         />
     <require
+        permission="book.messageboard.View"
+        interface=".interfaces.IMessageContainer"
+        />
+    <require
         permission="book.messageboard.Add"
         set_schema=".interfaces.IMessage"
         />

Modified: messageboard/trunk/step06/fields.py
===================================================================
--- messageboard/trunk/step06/fields.py	2004-08-11 21:42:23 UTC (rev 27041)
+++ messageboard/trunk/step06/fields.py	2004-08-12 13:34:39 UTC (rev 27042)
@@ -24,7 +24,7 @@
 _ = MessageIDFactory('messageboard')
 
 forbidden_regex = r'</?(?:%s).*?/?>'
-allowed_regex = r'</??(?!%s)[a-zA-Z0-9]*? ?(?:[a-z0-9]*?=?".*?")*/??>'
+allowed_regex = r'</??(?!%s[ />])[a-zA-Z0-9]*? ?(?:[a-z0-9]*?=?".*?")*/??>'
 
 class ForbiddenTags(ValidationError):
     __doc__ = _("Forbidden HTML Tags used.")
@@ -49,7 +49,7 @@
                 raise ForbiddenTags(value, self.forbidden_tags)
 
         if self.allowed_tags:
-            regex = allowed_regex %'|'.join(self.allowed_tags)
+            regex = allowed_regex %'[ />]|'.join(self.allowed_tags)
             if re.findall(regex, value):
                 raise ForbiddenTags(value, self.allowed_tags)
 

Modified: messageboard/trunk/step06/interfaces.py
===================================================================
--- messageboard/trunk/step06/interfaces.py	2004-08-11 21:42:23 UTC (rev 27041)
+++ messageboard/trunk/step06/interfaces.py	2004-08-12 13:34:39 UTC (rev 27042)
@@ -18,13 +18,14 @@
 $Id$
 """
 from zope.i18n import MessageIDFactory
+from zope.interface import Interface
 from zope.interface import classImplements
 from zope.schema import Text, TextLine, Field, Tuple
 from zope.schema.interfaces import IText
 
 from zope.app.container.constraints import ContainerTypesConstraint
 from zope.app.container.constraints import ItemTypePrecondition
-from zope.app.container.interfaces import IContainer
+from zope.app.container.interfaces import IContained, IContainer
 from zope.app.file.interfaces import IFile
 
 from fields import HTML
@@ -32,12 +33,9 @@
 _ = MessageIDFactory('messageboard')
 
 
-class IMessage(IContainer):
-    """A message object. It can contain its own responses."""
+class IMessage(Interface):
+    """A message object."""
 
-    def __setitem__(name, object):
-        """Add a IMessage object."""
-
     title = TextLine(
         title=_("Title/Subject"),
         description=_("Title and/or subject of the message."),
@@ -72,12 +70,23 @@
         required=False)
 
 
-IMessage['__setitem__'].setTaggedValue('precondition',
-                                       ItemTypePrecondition(IMessage, IFile))
-IMessage.setTaggedValue('__parent__', Field(
-    constraint=ContainerTypesConstraint(IMessageBoard, IMessage)))
+class IMessageContained(IContained):
+    """Interface that specifies the type of objects that can contain
+    messages."""
+    __parent__ = Field(
+        constraint = ContainerTypesConstraint(IMessageBoard, IMessage))
 
 
+class IMessageContainer(IContainer):
+    """We also want to make the message object a container that can contain
+    responses (other messages) and attachments (files and images)."""
+
+    def __setitem__(name, object):
+        """Add a IMessage object."""
+
+    __setitem__.precondition = ItemTypePrecondition(IMessage, IFile)
+
+
 class IHTML(IText):
     """A text field that handles HTML input."""
 

Modified: messageboard/trunk/step06/message.py
===================================================================
--- messageboard/trunk/step06/message.py	2004-08-11 21:42:23 UTC (rev 27041)
+++ messageboard/trunk/step06/message.py	2004-08-12 13:34:39 UTC (rev 27042)
@@ -23,6 +23,7 @@
 from zope.app.size.interfaces import ISized
 
 from book.messageboard.interfaces import IMessage
+from book.messageboard.interfaces import IMessageContained, IMessageContainer
 
 _ = MessageIDFactory('messageboard')
 
@@ -50,7 +51,7 @@
     >>> message.body
     u'Message Body'
     """
-    implements(IMessage)
+    implements(IMessage, IMessageContained, IMessageContainer)
 
     # See book.messageboard.interfaces.IMessage
     title = u''



More information about the Zope3-Checkins mailing list