Пример #1
0
    def _finalize(self):
        """
        Correct same data based on specific rules
        """
        # make sure all strings are unicode
        for key in self._keys:
            if key in UNPRINTABLE_KEYS:
                continue
            value = getattr(self, key)
            if value is None:
                continue
            if key == 'image':
                if isinstance(value, unicode):
                    setattr(self, key, unicode_to_str(value))
                continue
            if isinstance(value, str):
                setattr(self, key, str_to_unicode(value))
            if isinstance(value, unicode):
                setattr(self, key, value.strip().rstrip().replace('\0', u''))
            if isinstance(value, list) and value and isinstance(
                    value[0], Media):
                for submenu in value:
                    submenu._finalize()

        # copy needed tags from tables
        for name, table in self.tables.items():
            mapping = self.table_mapping.get(name, {})
            for tag, attr in mapping.items():
                if self.get(attr):
                    continue
                value = table.get(tag, None)
                if value is not None:
                    if not isinstance(value, (str, unicode)):
                        value = str_to_unicode(str(value))
                    elif isinstance(value, str):
                        value = str_to_unicode(value)
                    value = value.strip().rstrip().replace('\0', u'')
                    setattr(self, attr, value)

        if 'fourcc' in self._keys and 'codec' in self._keys and self.codec is not None:
            # Codec may be a fourcc, in which case we resolve it to its actual
            # name and set the fourcc attribute.
            self.fourcc, self.codec = fourcc.resolve(self.codec)
        if 'language' in self._keys:
            self.langcode, self.language = language.resolve(self.language)
Пример #2
0
    def _finalize(self):
        """
        Correct same data based on specific rules
        """
        # make sure all strings are unicode
        for key in self._keys:
            if key in UNPRINTABLE_KEYS:
                continue
            value = getattr(self, key)
            if value is None:
                continue
            if key == 'image':
                if isinstance(value, unicode):
                    setattr(self, key, unicode_to_str(value))
                continue
            if isinstance(value, str):
                setattr(self, key, str_to_unicode(value))
            if isinstance(value, unicode):
                setattr(self, key, value.strip().rstrip().replace(u'\0', u''))
            if isinstance(value, list) and value and isinstance(value[0], Media):
                for submenu in value:
                    submenu._finalize()

        # copy needed tags from tables
        for name, table in self.tables.items():
            mapping = self.table_mapping.get(name, {})
            for tag, attr in mapping.items():
                if self.get(attr):
                    continue
                value = table.get(tag, None)
                if value is not None:
                    if not isinstance(value, (str, unicode)):
                        value = str_to_unicode(str(value))
                    elif isinstance(value, str):
                        value = str_to_unicode(value)
                    value = value.strip().rstrip().replace(u'\0', u'')
                    setattr(self, attr, value)

        if 'fourcc' in self._keys and 'codec' in self._keys and self.codec is not None:
            # Codec may be a fourcc, in which case we resolve it to its actual
            # name and set the fourcc attribute.
            self.fourcc, self.codec = fourcc.resolve(self.codec)
        if 'language' in self._keys:
            self.langcode, self.language = language.resolve(self.language)
Пример #3
0
 def _set(self, key, value):
     """
     Set key to value and add the key to the internal keys list if
     missing.
     """
     if value is None and getattr(self, key, None) is None:
         return
     if isinstance(value, str):
         value = str_to_unicode(value)
     setattr(self, key, value)
     if not key in self._keys:
         self._keys.append(key)
Пример #4
0
 def _set(self, key, value):
     """
     Set key to value and add the key to the internal keys list if
     missing.
     """
     if value is None and getattr(self, key, None) is None:
         return
     if isinstance(value, str):
         value = str_to_unicode(value)
     setattr(self, key, value)
     if not key in self._keys:
         self._keys.append(key)
Пример #5
0
 def __unicode__(self):
     """
     Convert the element into an XML unicode string.
     """
     result = u'<%s' % self.tagname
     if self.xmlns:
         result += u' xmlns="%s"' % self.xmlns
     for key, value in self._attr.items():
         if value is None:
             continue
         if isinstance(value, str):
             value = str_to_unicode(value)
         if not isinstance(value, unicode):
             value = unicode(value)
         result += u' %s=%s' % (key, xml.sax.saxutils.quoteattr(value))
     if not self._children and not self._content:
         return result + u'/>'
     result += u'>'
     for child in self._children:
         if not isinstance(child, Element):
             child = child.__xml__()
         result += unicode(child)
     return result + xml.sax.saxutils.escape(self._content.strip()) + u'</%s>' % self.tagname