def getFieldsForATTypeWithFTI(self, typename):
     '''Returns schema fields (name and type) from the fti.'''
     results = []
     typesTool = getToolByName(self.context, 'portal_types')
     fti = typesTool.getTypeInfo(typename)
     archetype_tool = getToolByName(self.context, 'archetype_tool', None)
     if not fti or not archetype_tool:
         return results
     schema = None
     # a schema instance is stored in the archetype_tool
     for regType in archetype_tool.listRegisteredTypes():
         if regType['meta_type'] == fti.content_meta_type:
             if HAS_EXTENDER:
                 schema = instanceSchemaFactory(regType['klass'])
             else:
                 schema = regType['schema']
             break
     if not schema:
         return results
     for field in schema.fields():
         if not field.getName() in self.at_metadata_fields:
             translated_label = translate(field.widget.label)
             results.append(
                 {'id': field.getName(),
                  'title': '%s (%s)' % (translated_label, field.getType()),
                  'type': field.getType()})
     return results
 def getFieldsForATTypeWithFTI(self, typename):
     '''Returns schema fields (name and type) from the fti.'''
     results = []
     typesTool = getToolByName(self.context, 'portal_types')
     fti = typesTool.getTypeInfo(typename)
     archetype_tool = getToolByName(self.context, 'archetype_tool', None)
     if not fti or not archetype_tool:
         return results
     schema = None
     # a schema instance is stored in the archetype_tool
     for regType in archetype_tool.listRegisteredTypes():
         if regType['meta_type'] == fti.content_meta_type:
             if HAS_EXTENDER:
                 schema = instanceSchemaFactory(regType['klass'])
             else:
                 schema = regType['schema']
             break
     if not schema:
         return results
     for field in schema.fields():
         if not field.getName() in self.at_metadata_fields:
             translated_label = translate(field.widget.label)
             results.append({
                 'id':
                 field.getName(),
                 'title':
                 '%s (%s)' % (translated_label, field.getType()),
                 'type':
                 field.getType()
             })
     return results
Example #3
0
    def test_event_date_to_be_confirmed(self):
        """ Ticket #2341:
        Events need an extra field to show if the date is
        provisional and still needs to be confirmed.

        This field should appear directly after the date fields.
        """
        ttool = getToolByName(self.portal, 'portal_types')
        info = ttool.getTypeInfo("Event")
        event = info.constructInstance(self.portal, "Event")
        schema = instanceSchemaFactory(event)
        fields = [f.getName() for f in schema.getSchemataFields("default")]
        assert ('dateToBeConfirmed' in fields)
        self.assertEquals(fields.index('dateToBeConfirmed'),
                          fields.index('endDate') + 1)
Example #4
0
    def test_event_date_to_be_confirmed(self):
        """ Ticket #2341:
        Events need an extra field to show if the date is
        provisional and still needs to be confirmed.

        This field should appear directly after the date fields.
        """
        ttool = getToolByName(self.portal, 'portal_types')
        info = ttool.getTypeInfo("Event")
        event = info.constructInstance(self.portal, "Event")
        schema = instanceSchemaFactory(event)
        fields = [f.getName() for f in schema.getSchemataFields("default")]
        assert('dateToBeConfirmed' in fields)
        self.assertEquals(
            fields.index('dateToBeConfirmed'),
            fields.index('endDate') + 1
        )
Example #5
0
    def test_schema_modifications(self):
        """ Test that the extended types have the right fields in the
        correct order.
        """

        from AccessControl.unauthorized import Unauthorized

        for type_name in types_dict:
            #order = None
            pt = getToolByName(self.portal, 'portal_types')

            info = pt.getTypeInfo(type_name)
            try:
                obj = info.constructInstance(self.portal, type_name)
            except Unauthorized:
                continue

            schema = instanceSchemaFactory(obj)
            field_obs = schema.getSchemataFields('default')
            fields = [f.getName() for f in field_obs]
            config_fields = types_dict[type_name].keys()

            self.assertEquals(
                set(config_fields),
                set(fields),
                "%s has the following Default fields: %s but should " \
               "have %s" % \
                (type_name,
                 set(fields),
                 set(config_fields),
                )
            )

            for i in range(0, len(fields)):
                self.assertEquals(
                    field_obs[i].widget.visible,
                    types_dict[type_name][fields[i]],
                    "%s has field %s with widget visibility: %s but it "
                    "should be %s" % \
                    (type_name,
                     fields[i],
                     field_obs[i].widget.visible,
                     types_dict[type_name][fields[i]],
                    )
                )
Example #6
0
    def test_schema_modifications(self):
        """ Test that the extended types have the right fields in the
        correct order.
        """

        from AccessControl.unauthorized import Unauthorized

        for type_name in types_dict:
            #order = None
            pt = getToolByName(self.portal, 'portal_types')

            info = pt.getTypeInfo(type_name)
            try:
                obj = info.constructInstance(self.portal, type_name)
            except Unauthorized:
                continue

            schema = instanceSchemaFactory(obj)
            field_obs = schema.getSchemataFields('default')
            fields = [f.getName() for f in field_obs]
            config_fields = types_dict[type_name].keys()

            self.assertEquals(
                set(config_fields),
                set(fields),
                "%s has the following Default fields: %s but should " \
               "have %s" % \
                (type_name,
                 set(fields),
                 set(config_fields),
                )
            )

            for i in range(0, len(fields)):
                self.assertEquals(
                    field_obs[i].widget.visible,
                    types_dict[type_name][fields[i]],
                    "%s has field %s with widget visibility: %s but it "
                    "should be %s" % \
                    (type_name,
                     fields[i],
                     field_obs[i].widget.visible,
                     types_dict[type_name][fields[i]],
                    )
                )
Example #7
0
 def to_dict(self, *args, **kwargs):
     ret = super(ATSerializer, self).to_dict(*args, **kwargs)
     ret['portal_type'] = portal_type = self.instance.portal_type
     schema = instanceSchemaFactory(self.instance)
     for field_id in schema.keys():
         if field_id in self.skip_fields:
             continue
         field = schema[field_id]
         _schema = schema
         if field_id in self.instance.schema:
             _schema = self.instance.schema
         value = self._get_from_schema(field_id, _schema)
         if isinstance(field, ReferenceField):
             value = [
                 ReferenceSerializer(item).to_dict() for item in value]
         elif isinstance(field.widget, RichWidget):
             value = self.rich_text(value)
         elif isinstance(value, Item):
             serializer = interfaces.ISerializer(value)
             value = serializer.to_dict(recursive=True)
         elif field_id == 'image' and self.instance.portal_type == 'Image':
             continue
         elif field_id == 'leadImage':
             if value:
                 value = {
                     'dimensions': self.dimensionize(value, field_id),
                     'width': value.width,
                     'height': value.height,
                 }
             else:
                 value = ""
         elif hasattr(value, 'blob'):
             # file or image content, ignore
             continue
         ret[field_id] = value
     return ret
 def testNopExtender(self):
     schema = instanceSchemaFactory(self.instance)
     self.assertEqual(schema.signature(), self.instance.schema.signature())
Example #9
0
 def testExtendTwiceCreateOnce(self):
     Extender.fields = [MockField(), MockField()]
     schema = instanceSchemaFactory(self.instance)
     self.assertEqual(schema.keys().count("MockField"), 1)
Example #10
0
 def testFieldOrder(self):
     Extender.fields = [MockField()]
     schema = instanceSchemaFactory(self.instance)
     order = [f.getName() for f in schema.getSchemataFields("default")]
     self.assertEqual(order[0], "MockField")
Example #11
0
 def testNopExtender(self):
     schema = instanceSchemaFactory(self.instance)
     self.assertEqual(schema.signature(), self.instance.schema.signature())
Example #12
0
 def testExtendWithSingleField(self):
     Extender.fields = [MockField()]
     schema = instanceSchemaFactory(self.instance)
     self.assertTrue("MockField" in schema)
 def testExtendTwiceCreateOnce(self):
     Extender.fields = [MockField(), MockField()]
     schema = instanceSchemaFactory(self.instance)
     self.assertEqual(schema.keys().count("MockField"), 1)
Example #14
0
 def testNoExtenderMeansNoChanges(self):
     schema = instanceSchemaFactory(self.instance)
     self.assertTrue(schema is self.instance.schema)
 def testFieldOrder(self):
     Extender.fields = [MockField()]
     schema = instanceSchemaFactory(self.instance)
     order = [f.getName() for f in schema.getSchemataFields("default")]
     self.assertEqual(order[0], "MockField")
 def testNoExtenderMeansNoChanges(self):
     schema = instanceSchemaFactory(self.instance)
     self.assertTrue(schema is self.instance.schema)
 def testExtendWithSingleField(self):
     Extender.fields = [MockField()]
     schema = instanceSchemaFactory(self.instance)
     self.assertTrue("MockField" in schema)
Example #18
0
 def testExtendWithSingleField(self):
     Extender.fields=[MockField()]
     schema=instanceSchemaFactory(self.instance)
     self.failUnless("MockField" in schema)
Example #19
0
 def testNoExtenderMeansNoChanges(self):
     schema=instanceSchemaFactory(self.instance)
     self.failUnless(schema is self.instance.schema)