Author: jmorliaguet
Date: Mon May  1 14:11:35 2006
New Revision: 3004

Modified:
   cpsskins/branches/paris-sprint-2006/ftests/test_appsetup.py
   cpsskins/branches/paris-sprint-2006/setup/configure.zcml
   cpsskins/branches/paris-sprint-2006/setup/interfaces.py
   cpsskins/branches/paris-sprint-2006/setup/io.py
   cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py
Log:

- the content type name is set as an XML attribute in case it is different from
  the resource type (as it's the case with portlets)



Modified: cpsskins/branches/paris-sprint-2006/ftests/test_appsetup.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ftests/test_appsetup.py (original)
+++ cpsskins/branches/paris-sprint-2006/ftests/test_appsetup.py Mon May  1 
14:11:35 2006
@@ -26,6 +26,7 @@
 from zope.app.testing.functional import FunctionalDocFileSuite
 from zope.interface import alsoProvides, Interface
 from zope.component.interfaces import IFactory
+from zope.app.content.interfaces import IContentType
 
 from cpsskins import elements
 from cpsskins.elements.interfaces import IElement
@@ -46,7 +47,7 @@
 
     # register the setting
     gsm.registerUtility(DummyFactory, IFactory, u'dummy')
-    alsoProvides(IDummyResource, IResourceType)
+    alsoProvides(IDummyResource, IContentType)
 
 def test_suite():
     return unittest.TestSuite((

Modified: cpsskins/branches/paris-sprint-2006/setup/configure.zcml
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/configure.zcml    (original)
+++ cpsskins/branches/paris-sprint-2006/setup/configure.zcml    Mon May  1 
14:11:35 2006
@@ -85,6 +85,10 @@
   />
 
   <adapter
+      factory="cpsskins.setup.io.TextField"
+  />
+
+  <adapter
       factory="cpsskins.setup.io.TextLineField"
   />
 

Modified: cpsskins/branches/paris-sprint-2006/setup/interfaces.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/interfaces.py     (original)
+++ cpsskins/branches/paris-sprint-2006/setup/interfaces.py     Mon May  1 
14:11:35 2006
@@ -143,17 +143,12 @@
 
     attributes = Attribute(u"The list of fields written as DOM attributes.")
 
-    properties = Attribute(u"Extra properties.")
-
     def setDocument(document):
         """Set the document element"""
 
     def getDocument():
         """Get the document element"""
 
-    def addProperty(name, value):
-        """Add a property"""
-
     def writeAsAttributes(attributes):
         """Set the list of fields written as attributes."""
 

Modified: cpsskins/branches/paris-sprint-2006/setup/io.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/setup/io.py     (original)
+++ cpsskins/branches/paris-sprint-2006/setup/io.py     Mon May  1 14:11:35 2006
@@ -21,12 +21,13 @@
 
 import zope.schema
 
-from zope.component import adapts, getMultiAdapter
+from zope.component import adapts, getMultiAdapter, getUtilitiesFor
 from zope.interface import implements, Interface
 from zope.app.container.interfaces import IItemContainer
 
 from cpsskins.relations.interfaces import IRelatable
 from cpsskins.setup.interfaces import IDOMAdapter, IIdentifiable, IType
+from cpsskins.setup.interfaces import IDOMAdapter, IIdentifiable
 
 logger = logging.getLogger("cpsskins")
 
@@ -36,7 +37,6 @@
     document = None
     mapping = {}
     attributes = ()
-    properties = {}
 
     def __init__(self, context, node):
         self.context = context
@@ -51,11 +51,6 @@
                 "use setDocument(document) to set the document element.")
         return self.document
 
-    def addProperty(self, name, value):
-        if not isinstance(value, basestring):
-            raise TypeError("Properties must be strings: %s" % value)
-        self.properties[name] = value
-
     def writeAsAttributes(self, attributes):
         self.attributes = attributes
 
@@ -77,20 +72,30 @@
     """
     implements(IDOMAdapter)
 
+    _reserved_attrs = u'id', u'type'
+
+    def writeAsAttributes(self, attributes):
+        for attr in self._reserved_attrs:
+            if attr in attributes:
+                raise ValueError("'%s' is a reserved attribute." % attr)
+        self.attributes = attributes
+
     def save(self):
         context = self.context
         node = self.node
 
         document = self.getDocument()
 
+        type = IType(context)
+
         element_el = document.createElement(IType(context).resourcename)
         element_el.setAttribute(u'id', unicode(IRelatable(context)))
 
-        for k, v in self.properties.items():
-            element_el.setAttribute(k, unicode(v))
+        if type.contentname != type.resourcename:
+            element_el.setAttribute(u'type', unicode(type.contentname))
 
         # properties
-        schema = IType(context).getContentType()
+        schema = type.getContentType()
 
         for attr, field in zope.schema.getFieldsInOrder(schema):
             obj = getattr(context, attr)
@@ -191,6 +196,12 @@
     adapts(zope.schema.interfaces.IInt)
     implements(IFieldIO)
 
+class TextField(BaseFieldIO):
+    """A text line field.
+    """
+    adapts(zope.schema.interfaces.IText)
+    implements(IFieldIO)
+
 class TextLineField(BaseFieldIO):
     """A text line field.
     """

Modified: cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py
==============================================================================
--- cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py 
(original)
+++ cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py Mon May 
 1 14:11:35 2006
@@ -250,13 +250,9 @@
         root = document.documentElement
 
         for id in storage:
-            item = storage[id]
-            type = IType(item)
-            exporter = getMultiAdapter((item, root), IDOMAdapter)
+            exporter = getMultiAdapter((storage[id], root), IDOMAdapter)
             exporter.setDocument(document)
-            #if type.contentname != type.resourcename:
-            #    exporter.addProperty(u'type', type.contentname)
-            exporter.writeAsAttributes((u'title', u'description', u'type'))
+            exporter.writeAsAttributes((u'title', u'description'))
             exporter.save()
 
         xml = document.toprettyxml(indent=u'  ', encoding=u'utf-8')
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to