Changeset 1566 in products
- Timestamp:
- Jan 15, 2010 11:35:14 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.transmogrifier/trunk/quintagroup/transmogrifier/portlets.py
r1564 r1566 1 import logging 1 2 from xml.dom import minidom 2 3 … … 6 7 from zope.component.interfaces import IFactory 7 8 from zope.app.container.interfaces import INameChooser 9 from zope.schema._bootstrapinterfaces import ConstraintNotSatisfied 10 from zope.schema.interfaces import ICollection 11 8 12 9 13 from plone.portlets.interfaces import ILocalPortletAssignable, IPortletManager,\ … … 51 55 52 56 root = self.doc.createElement('portlets') 57 53 58 for elem in self.exportAssignments(obj): 54 59 root.appendChild(elem) … … 174 179 assignment_handler.import_assignment(portlet_interface, node) 175 180 181 logger = logging.getLogger('quintagroup.transmogrifier.portletsimporter') 182 176 183 class PortletAssignmentExportImportHandler(PropertyPortletAssignmentExportImportHandler): 177 184 """ This adapter is needed because original fails to handle text from … … 185 192 # and the end 186 193 return text.strip() 194 195 def import_node(self, interface, child): 196 """Import a single <property /> node 197 """ 198 property_name = child.getAttribute('name') 199 200 field = interface.get(property_name, None) 201 if field is None: 202 return 203 204 field = field.bind(self.assignment) 205 value = None 206 207 # If we have a collection, we need to look at the value_type. 208 # We look for <element>value</element> child nodes and get the 209 # value from there 210 if ICollection.providedBy(field): 211 value_type = field.value_type 212 value = [] 213 for element in child.childNodes: 214 if element.nodeName != 'element': 215 continue 216 element_value = self.extract_text(element) 217 value.append(self.from_unicode(value_type, element_value)) 218 value = self.field_typecast(field, value) 219 220 # Otherwise, just get the value of the <property /> node 221 else: 222 value = self.extract_text(child) 223 value = self.from_unicode(field, value) 224 225 try: 226 field.validate(value) 227 except ConstraintNotSatisfied, e: 228 logger.warning('"%s" value doesn\'t satisfy constaints for "%s:%s" field' % \ 229 (value, self.assignment.__name__, field.__name__)) 230 231 field.set(self.assignment, value)
Note: See TracChangeset
for help on using the changeset viewer.