Ejemplo n.º 1
0
class ITWSHOPConfig(ConfigFile):

    schema = {
        'url': String(default=''),
        'source_language': LanguageTag(default=('en', 'EN')),
        'target_languages': Tokens(default=(('en', 'EN'), )),
        'skin_path': String(default=''),
        'show_language_title': Boolean(default=False)
    }
Ejemplo n.º 2
0
 def get_dynamic_property_and_language(self, name, dynamic_schema, language=None):
     value, language = ShopFolder.get_property_and_language(self, name, language)
     datatype = dynamic_schema[name]
     # Default value
     if value is None:
         value = datatype.get_default()
     elif getattr(datatype, "multiple", False):
         if not isinstance(value, list):
             # Decode the property
             # Only support list of strings
             value = list(Tokens.decode(value))
         # Else a list was already set by "set_property"
     else:
         value = datatype.decode(value)
     return value, language
Ejemplo n.º 3
0
    def set_property(self, name, value, language=None, with_dynamic=True):
        """Added to handle dynamic properties.
        The value is encoded because metadata won't know about its datatype.
        The multilingual status must be detected to give or not the
        "language" argument.
        """
        dynamic_schema = self.get_dynamic_schema() if with_dynamic else None

        # Fire listeners
        if dynamic_schema and name in dynamic_schema:
            # dynamic value
            old_value = self.get_dynamic_property(name, dynamic_schema,
                                                  language)
        else:
            old_value = self.get_property(name)
        new_value = value
        alert_listerners('set_property', self, self.class_id, name, old_value,
                         new_value)

        # Dynamic property?
        if with_dynamic is True:
            if name in dynamic_schema:
                datatype = dynamic_schema[name]
                if getattr(datatype, 'multiple', False):
                    return ShopFolder.set_property(self, name,
                                                   Tokens.encode(value))
                elif getattr(datatype, 'multilingual', False):
                    # If the value equals the default value
                    # set the property to None (String's default value)
                    # to avoid problems during the language negociation
                    if value == datatype.get_default():
                        # XXX Should not be hardcoded
                        # Default value for String datatype is None
                        value = None
                    else:
                        value = datatype.encode(value)
                    return ShopFolder.set_property(self, name, value, language)
                # Even if the language was not None, this property is not
                # multilingual so ignore it.
                return ShopFolder.set_property(self, name,
                                               datatype.encode(value))

        # Standard property
        schema = self.get_metadata_schema()
        datatype = schema[name]
        if getattr(datatype, 'multilingual', False):
            return ShopFolder.set_property(self, name, value, language)
        return ShopFolder.set_property(self, name, value)
Ejemplo n.º 4
0
    def set_property(self, name, value, language=None, with_dynamic=True):
        """Added to handle dynamic properties.
        The value is encoded because metadata won't know about its datatype.
        The multilingual status must be detected to give or not the
        "language" argument.
        """
        dynamic_schema = self.get_dynamic_schema() if with_dynamic else None

        # Fire listeners
        if dynamic_schema and name in dynamic_schema:
            # dynamic value
            old_value = self.get_dynamic_property(name, dynamic_schema, language)
        else:
            old_value = self.get_property(name)
        new_value = value
        alert_listerners("set_property", self, self.class_id, name, old_value, new_value)

        # Dynamic property?
        if with_dynamic is True:
            if name in dynamic_schema:
                datatype = dynamic_schema[name]
                if getattr(datatype, "multiple", False):
                    return ShopFolder.set_property(self, name, Tokens.encode(value))
                elif getattr(datatype, "multilingual", False):
                    # If the value equals the default value
                    # set the property to None (String's default value)
                    # to avoid problems during the language negociation
                    if value == datatype.get_default():
                        # XXX Should not be hardcoded
                        # Default value for String datatype is None
                        value = None
                    else:
                        value = datatype.encode(value)
                    return ShopFolder.set_property(self, name, value, language)
                # Even if the language was not None, this property is not
                # multilingual so ignore it.
                return ShopFolder.set_property(self, name, datatype.encode(value))

        # Standard property
        schema = self.get_metadata_schema()
        datatype = schema[name]
        if getattr(datatype, "multilingual", False):
            return ShopFolder.set_property(self, name, value, language)
        return ShopFolder.set_property(self, name, value)
Ejemplo n.º 5
0
 def get_dynamic_property_and_language(self,
                                       name,
                                       dynamic_schema,
                                       language=None):
     value, language = ShopFolder.get_property_and_language(
         self, name, language)
     datatype = dynamic_schema[name]
     # Default value
     if value is None:
         value = datatype.get_default()
     elif getattr(datatype, 'multiple', False):
         if not isinstance(value, list):
             # Decode the property
             # Only support list of strings
             value = list(Tokens.decode(value))
         # Else a list was already set by "set_property"
     else:
         value = datatype.decode(value)
     return value, language
Ejemplo n.º 6
0
class SetupFile(ConfigFile):
    """abstract a setup.conf file
    """

    schema = {
        'name': String(default=''),
        'title': String(default=''),
        'url': String(default=''),
        'author_name': String(default=''),
        'author_email': String(default=''),
        'license': String(default=''),
        'description': String(default=''),
        'packages': Tokens,
        'requires': Tokens,
        'provides': Tokens,
        'scripts': Tokens,
        'source_language': LanguageTag(default=('en', 'EN')),
        'target_languages': Tokens(default=(('en', 'EN'), ))
    }
Ejemplo n.º 7
0
 def test_Tokens(self):
     data = 'value1 value2 value3'
     result = ('value1', 'value2', 'value3')
     self.assertEqual(Tokens.decode(data), result)
     self.assertEqual(Tokens.encode(result), data)
Ejemplo n.º 8
0
 def test_Tokens(self):
     data = "value1 value2 value3"
     result = ("value1", "value2", "value3")
     self.assertEqual(Tokens.decode(data), result)
     self.assertEqual(Tokens.encode(result), data)