コード例 #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)
    }
コード例 #2
0
ファイル: dynamic_folder.py プロジェクト: nicolasderam/shop
 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
コード例 #3
0
ファイル: dynamic_folder.py プロジェクト: nicolasderam/shop
    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)
コード例 #4
0
ファイル: dynamic_folder.py プロジェクト: nicolasderam/shop
    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)
コード例 #5
0
ファイル: dynamic_folder.py プロジェクト: nicolasderam/shop
 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
コード例 #6
0
ファイル: metadata.py プロジェクト: pombredanne/itools
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'), ))
    }
コード例 #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)
コード例 #8
0
ファイル: test_datatypes.py プロジェクト: Nabellaleen/itools
 def test_Tokens(self):
     data = "value1 value2 value3"
     result = ("value1", "value2", "value3")
     self.assertEqual(Tokens.decode(data), result)
     self.assertEqual(Tokens.encode(result), data)