Exemplo n.º 1
0
    def render(self):
        self.request['disable_border'] = True

        for field in self.fields.keys():
            if field in self.schema:
                if ILanguageIndependentField.providedBy(self.schema[field]):
                    self.widgets[field].addClass('languageindependent')
            # With plone.autoform, fieldnames from additional schematas
            # reference their schema by prefixing their fieldname
            # with schema.__identifier__ and then a dot as a separator
            # See autoform.txt in the autoform package
            if '.' not in field:
                continue
            schemaname, fieldname = field.split('.')
            for add_schema in self.additionalSchemata:
                if (
                    schemaname == add_schema.__identifier__
                    and fieldname in add_schema
                    and ILanguageIndependentField.providedBy(
                        add_schema[fieldname])
                ):
                    self.widgets[field].addClass('languageindependent')

        self.babel_content = super(MultilingualAddForm, self).render()
        return self.babel()
Exemplo n.º 2
0
    def copy_fields(self, translation):
        doomed = False

        target_language = queryAdapter(translation, ILanguage).get_language()

        def relation_copier(rel, lang=target_language, fun=self.copy_relation):
            return fun(rel, lang)

        for schema in iterSchemata(self.context):
            for field_name in schema:
                if ILanguageIndependentField.providedBy(schema[field_name]):
                    value = getattr(schema(self.context), field_name, _marker)

                    if value == _marker:
                        continue
                    elif IRelationValue.providedBy(value):
                        value = self.copy_relation(value, target_language)
                    elif IRelationList.providedBy(schema[field_name]):
                        value = map(relation_copier, value or [])

                    doomed = True
                    setattr(schema(translation), field_name, value)

        # If at least one field has been copied over to the translation
        # we need to inform subscriber to trigger an ObjectModifiedEvent
        # on that translation.
        return doomed
Exemplo n.º 3
0
    def copy_fields(self, translation):
        doomed = False

        target_language = queryAdapter(translation, ILanguage).get_language()
        relation_copier = lambda r, l=target_language, f=self.copy_relation: f(r, l)

        for schema in iterSchemata(self.context):
            for field_name in schema:
                if ILanguageIndependentField.providedBy(schema[field_name]):
                    value = getattr(schema(self.context), field_name, _marker)

                    if value == _marker:
                        continue
                    elif IRelationValue.providedBy(value):
                        value = self.copy_relation(value, target_language)
                    elif IRelationList.providedBy(schema[field_name]):
                        value = map(relation_copier, value or [])

                    doomed = True
                    setattr(schema(translation), field_name, value)

        # If at least one field has been copied over to the translation
        # we need to inform subscriber to trigger an ObjectModifiedEvent
        # on that translation.
        return doomed
Exemplo n.º 4
0
    def render(self):
        self.request['disable_border'] = True

        for field in self.fields.keys():
            if field in self.schema:
                if ILanguageIndependentField.providedBy(self.schema[field]):
                    self.widgets[field].addClass('languageindependent')
            # With plone.autoform, fieldnames from additional schematas
            # reference their schema by prefixing their fieldname
            # with schema.__identifier__ and then a dot as a separator
            # See autoform.txt in the autoform package
            if '.' in field:
                schemaname, fieldname = field.split('.')
                for schema in self.additionalSchemata:
                    if schemaname == schema.__identifier__ \
                       and fieldname in schema:
                        if ILanguageIndependentField.providedBy(schema[fieldname]):  # noqa
                            self.widgets[field].addClass('languageindependent')
        self.babel_content = super(MultilingualEditForm, self).render()
        return self.babel()
    def test_inherited_schema_still_has_tagged_value(self):
        """An inherited schema should still have the tagged value information
        inherited from its superclass.
        """
        class IFoo(model.Schema):
            """Class with a searchable field
            """
            languageindependent('baz')
            baz = schema.TextLine(title=u'baz')

        class IBar(IFoo):
            """Schema class which inherits a field from IFoo.
            """

        self.assertEqual([(Interface, 'baz', 'true')],
                         mergedTaggedValueList(IFoo, languageindependent.key))
        self.assertTrue(ILanguageIndependentField.providedBy(IFoo['baz']))

        self.assertEqual([(Interface, 'baz', 'true')],
                         mergedTaggedValueList(IBar, languageindependent.key))
        self.assertTrue(ILanguageIndependentField.providedBy(IBar['baz']))
Exemplo n.º 6
0
 def set_field_language_independent(self, portal_type, field, value="1"):
     """Set the given field in the given portal type language independent
     or unset from being one
     """
     for schema in iterSchemataForType(portal_type):
         if field in schema:
             ob = schema[field]
             if ILanguageIndependentField.providedBy(ob):
                 if value.lower() not in ("true", "on", "yes", "y", "1"):
                     noLongerProvides(schema[ob], ILanguageIndependentField)
             else:
                 if value.lower() in ("true", "on", "yes", "y", "1"):
                     alsoProvides(ob, ILanguageIndependentField)
    def test_inherited_schema_still_has_tagged_value(self):
        """An inherited schema should still have the tagged value information
        inherited from its superclass.
        """

        class IFoo(model.Schema):
            """Class with a searchable field
            """
            languageindependent('baz')
            baz = schema.TextLine(title=u'baz')

        class IBar(IFoo):
            """Schema class which inherits a field from IFoo.
            """

        self.assertEqual([(Interface, 'baz', 'true')],
                         mergedTaggedValueList(IFoo, languageindependent.key))
        self.assertTrue(ILanguageIndependentField.providedBy(IFoo['baz']))

        self.assertEqual([(Interface, 'baz', 'true')],
                         mergedTaggedValueList(IBar, languageindependent.key))
        self.assertTrue(ILanguageIndependentField.providedBy(IBar['baz']))
Exemplo n.º 8
0
 def set_field_language_independent(self, portal_type, field, value='1'):
     """Set the given field in the given portal type language independent
     or unset from being one
     """
     for schema in iterSchemataForType(portal_type):
         if field in schema:
             ob = schema[field]
             if ILanguageIndependentField.providedBy(ob):
                 if value.lower() not in ('true', 'on', 'yes', 'y', '1'):
                     noLongerProvides(schema[ob], ILanguageIndependentField)
             else:
                 if value.lower() in ('true', 'on', 'yes', 'y', '1'):
                     alsoProvides(ob, ILanguageIndependentField)
Exemplo n.º 9
0
 def set_field_language_independent(self, portal_type, field, value='1'):
     """Set the given field in the given portal type language independent
     or unset from being one
     """
     disableCSRFProtection()
     for schema in iterSchemataForType(portal_type):
         if field in schema:
             ob = schema[field]
             if ILanguageIndependentField.providedBy(ob):
                 if value.lower() not in ('true', 'on', 'yes', 'y', '1'):
                     noLongerProvides(schema[ob], ILanguageIndependentField)
             else:
                 if value.lower() in ('true', 'on', 'yes', 'y', '1'):
                     alsoProvides(ob, ILanguageIndependentField)
    def test_schema_directives_store_tagged_values(self):
        """Test, if the schema directive values are stored as tagged values.
        """
        class IDummy(model.Schema):
            """Dummy schema class.
            """
            languageindependent('foo')
            foo = schema.TextLine(title=u'Foo')

        self.assertEqual([(Interface, 'foo', 'true')],
                         mergedTaggedValueList(IDummy,
                                               languageindependent.key))

        self.assertTrue(ILanguageIndependentField.providedBy(IDummy['foo']))
Exemplo n.º 11
0
    def test_schema_directives_store_tagged_values(self):
        """Test, if the schema directive values are stored as tagged values.
        """

        class IDummy(model.Schema):
            """Dummy schema class.
            """
            languageindependent('foo')
            foo = schema.TextLine(title=u'Foo')

        self.assertEqual([(Interface, 'foo', 'true')],
                         mergedTaggedValueList(IDummy,
                                               languageindependent.key))

        self.assertTrue(ILanguageIndependentField.providedBy(IDummy['foo']))
Exemplo n.º 12
0
    def has_independent_fields(self):
        fti = getUtility(IDexterityFTI, name=self.context.portal_type)
        schemas = []
        schemas.append(fti.lookupSchema())

        for behavior_schema in \
                utils.getAdditionalSchemata(self.context,
                                            self.context.portal_type):
            if behavior_schema is not None:
                schemas.append(behavior_schema)

        for schema in schemas:
            for field_name in schema:
                if ILanguageIndependentField.providedBy(schema[field_name]):
                    return True
        return False
Exemplo n.º 13
0
    def _process_language_independent(self, fields, widgets):
        for field_key in fields.keys():
            if field_key in self.schema:
                schema_field = self.schema[field_key]
            else:
                # With plone.autoform, fieldnames from additional schematas
                # reference their schema by prefixing their fieldname
                # with schema.__identifier__ and then a dot as a separator
                # See autoform.txt in the autoform package
                if '.' not in field_key:
                    continue
                schema_name, field_name = field_key.split('.')
                for aschema in self.additionalSchemata:
                    if schema_name == aschema.__name__ \
                       and field_name in aschema:
                        schema_field = aschema[field_name]
                        break

            if ILanguageIndependentField.providedBy(schema_field):
                widgets[field_key].addClass('languageindependent')
Exemplo n.º 14
0
    def _process_language_independent(self, fields, widgets):
        for field_key in fields.keys():
            if field_key in self.schema:
                schema_field = self.schema[field_key]
            else:
                # With plone.autoform, fieldnames from additional schematas
                # reference their schema by prefixing their fieldname
                # with schema.__identifier__ and then a dot as a separator
                # See autoform.txt in the autoform package
                if '.' not in field_key:
                    continue
                schema_name, field_name = field_key.split('.')
                for aschema in self.additionalSchemata:
                    if schema_name == aschema.__name__ \
                       and field_name in aschema:
                        schema_field = aschema[field_name]
                        break

            if ILanguageIndependentField.providedBy(schema_field):
                widgets[field_key].addClass('languageindependent')
Exemplo n.º 15
0
    def copy_fields(self, translation):

        fti = getUtility(IDexterityFTI, name=self.context.portal_type)
        schemas = []
        schemas.append(fti.lookupSchema())

        for behavior_schema in \
                utils.getAdditionalSchemata(self.context,
                                            self.context.portal_type):
            if behavior_schema is not None:
                schemas.append(behavior_schema)

        doomed = False
        for schema in schemas:
            for field_name in schema:
                if ILanguageIndependentField.providedBy(schema[field_name]):
                    doomed = True

                    value = getattr(schema(self.context), field_name, _marker)
                    if IRelationValue.providedBy(value):
                        obj = value.to_object
                        adapter = queryAdapter(translation, ILanguage)
                        trans_obj = ITranslationManager(obj)\
                            .get_translation(adapter.get_language())
                        if trans_obj:
                            intids = component.getUtility(IIntIds)
                            value = RelationValue(intids.getId(trans_obj))
                    if not (value == _marker):
                        # We check if not (value == _marker) because
                        # z3c.relationfield has an __eq__
                        setattr(schema(translation), field_name, value)

        # If at least one field has been copied over to the translation
        # we need to inform subscriber to trigger an ObjectModifiedEvent
        # on that translation.
        return doomed
Exemplo n.º 16
0
 def test_field_is_independent(self):
     self.assertTrue(ILanguageIndependentField.providedBy(self.field))
Exemplo n.º 17
0
 def write(self, fieldNode, schema, field):
     if ILanguageIndependentField.providedBy(field):
         fieldNode.set(ns('independent', self.namespace), "true")
Exemplo n.º 18
0
 def has_independent_fields(self):
     for schema in iterSchemata(self.context):
         for field_name in schema:
             if ILanguageIndependentField.providedBy(schema[field_name]):
                 return True
     return False
Exemplo n.º 19
0
 def _read_languageindependent(self):
     return ILanguageIndependentField.providedBy(self.field)
Exemplo n.º 20
0
 def has_independent_fields(self):
     for schema in iterSchemata(self.context):
         for field_name in schema:
             if ILanguageIndependentField.providedBy(schema[field_name]):
                 return True
     return False
Exemplo n.º 21
0
 def test_field_is_independent(self):
     self.assertTrue(ILanguageIndependentField.providedBy(self.field))
Exemplo n.º 22
0
 def _read_languageindependent(self):
     return ILanguageIndependentField.providedBy(self.field)
Exemplo n.º 23
0
 def write(self, fieldNode, schema, field):
     if ILanguageIndependentField.providedBy(field):
         fieldNode.set(ns('independent', self.namespace), "true")