Пример #1
0
    def to_str(self):
        output = []

        # Opent tag
        open_tag = '<file original="%s"%s>\n'
        attributes = [
            ' %s="%s"' % (key, XMLAttribute.encode(value))
            for key, value in self.attributes.items() if key != 'space'
        ]
        if 'space' in self.attributes:
            attributes.append(' xml:space="%s"' % self.attributes['space'])
        attributes = ''.join(attributes)
        open_tag = open_tag % (self.original, attributes)
        output.append(open_tag)
        # The header
        if self.header:
            output.append('<header>\n')
            for line in self.header:
                output.append(line.to_str())
            output.append('</header>\n')
        # The body
        output.append('<body>\n')
        if self.body:
            output.extend([unit.to_str() for unit in self.body.values()])
        output.append('</body>\n')
        # Close tag
        output.append('</file>\n')

        return ''.join(output)
Пример #2
0
def _make_start_format(tag_uri, tag_name, attributes, encoding):
    # We must search for translatable attributes
    result = [(u'<%s' % get_qname(tag_uri, tag_name), False, None)]

    for attr_uri, attr_name in attributes:
        qname = get_attribute_qname(attr_uri, attr_name)
        qname = Unicode.decode(qname, encoding=encoding)
        value = attributes[(attr_uri, attr_name)]
        value = Unicode.decode(value, encoding=encoding)
        value = XMLAttribute.encode(value)

        datatype = get_attr_datatype(tag_uri, tag_name, attr_uri, attr_name,
                                     attributes)
        if issubclass(datatype, Unicode):
            result[-1] = (result[-1][0] + u' %s="' % qname, False, None)
            context = _get_attr_context(datatype, tag_name, attr_name)
            result.append((value, True, context))
            result.append((u'"', False, None))
        else:
            result[-1] = (result[-1][0] + u' %s="%s"' % (qname, value), False, None)
    # Close the start tag
    if is_empty(tag_uri, tag_name):
        result[-1] = (result[-1][0] + u'/>', False, None)
    else:
        result[-1] = (result[-1][0] + u'>', False, None)

    return result
Пример #3
0
    def to_str(self):
        output = []

        # Opent tag
        open_tag = '<file original="%s"%s>\n'
        attributes = [
            ' %s="%s"' % (key, XMLAttribute.encode(value))
            for key, value in self.attributes.items() if key != 'space']
        if 'space' in self.attributes:
            attributes.append(' xml:space="%s"' % self.attributes['space'])
        attributes = ''.join(attributes)
        open_tag = open_tag % (self.original, attributes)
        output.append(open_tag)
        # The header
        if self.header:
            output.append('<header>\n')
            for line in self.header:
                output.append(line.to_str())
            output.append('</header>\n')
        # The body
        output.append('<body>\n')
        if self.body:
            output.extend([ unit.to_str() for unit in self.body.values() ])
        output.append('</body>\n')
        # Close tag
        output.append('</file>\n')

        return ''.join(output)
Пример #4
0
    def to_str(self, encoding=None):
        # The XML prolog
        output = [
            '<?xml version="1.0" encoding="%s"?>\n' % encoding,
            '<!DOCTYPE tmx SYSTEM "http://www.lisa.org/tmx/tmx14.dtd">\n'
        ]

        # TMX header
        output.append('<tmx version="%s">\n' % self.version)
        attributes = [
            ' %s="%s"' % (key, XMLAttribute.encode(value))
            for key, value in self.header.items()
        ]
        output.append('<header%s>\n' % ''.join(attributes))
        # TMX header / notes
        for note in self.header_notes:
            output.append(note.to_str())
        output.append('</header>\n')

        # TMX body
        output.append('<body>\n')
        messages = self.messages
        msgids = messages.keys()
        msgids.sort()
        for msgid in msgids:
            output.append(messages[msgid].to_str())
        output.append('</body>\n')

        # Ok
        output.append('</tmx>\n')
        return ''.join(output)
Пример #5
0
    def to_str(self, encoding=None):
        # The XML prolog
        output = [
            '<?xml version="1.0" encoding="%s"?>\n' % encoding,
            '<!DOCTYPE tmx SYSTEM "http://www.lisa.org/tmx/tmx14.dtd">\n']

        # TMX header
        output.append('<tmx version="%s">\n' % self.version)
        attributes = [
            ' %s="%s"' % (key, XMLAttribute.encode(value))
            for key, value in self.header.items() ]
        output.append('<header%s>\n' % ''.join(attributes))
        # TMX header / notes
        for note in self.header_notes:
            output.append(note.to_str())
        output.append('</header>\n')

        # TMX body
        output.append('<body>\n')
        messages = self.messages
        msgids = messages.keys()
        msgids.sort()
        for msgid in msgids:
            output.append(messages[msgid].to_str())
        output.append('</body>\n')

        # Ok
        output.append('</tmx>\n')
        return ''.join(output)
Пример #6
0
def get_start_tag(value):
    tag_uri, tag_name, attributes = value
    s = '<%s' % get_qname(tag_uri, tag_name)
    # Output the attributes
    for attr_uri, attr_name in attributes:
        value = attributes[(attr_uri, attr_name)]
        qname = get_attribute_qname(attr_uri, attr_name)
        value = XMLAttribute.encode(value)
        s += ' %s="%s"' % (qname, value)
    return s + '>'
Пример #7
0
def get_start_tag(value):
    tag_uri, tag_name, attributes = value
    s = '<%s' % get_qname(tag_uri, tag_name)
    # Output the attributes
    for attr_uri, attr_name in attributes:
        value = attributes[(attr_uri, attr_name)]
        qname = get_attribute_qname(attr_uri, attr_name)
        value = XMLAttribute.encode(value)
        s += ' %s="%s"' % (qname, value)
    return s + '>'
Пример #8
0
def text_widget(context,
                form,
                datatype,
                name,
                value,
                schema,
                fields,
                readonly,
                tabindex=None):
    # Reçoit des int en GET
    if not isinstance(value, basestring):
        value = datatype.encode(value)
    if isinstance(datatype, NumDecimal):
        try:
            value = context.format_number(value, places=datatype.decimals)
        except InvalidOperation:
            pass
    # Reçoit des str en POST
    if not type(value) is unicode:
        value = unicode(value, 'utf8')
    if readonly:
        tagname = u"div"
        attributes = {u"class": [u"readonly"]}
        content = XMLContent.encode(value)
    else:
        tagname = u"input"
        attributes = {
            u"type": u"text",
            u"id": u"field_{name}".format(name=name),
            u"name": name,
            u"value": XMLAttribute.encode(value),
            u"size": str(datatype.size),
            u"maxlength": str(datatype.length)
        }
        content = u""
    # Right-align numeric fields
    if issubclass(datatype, Numeric):
        attributes.setdefault(u"class", []).append(u"num")
        attributes.setdefault(u"style", []).append(u"text-align:right")
    # Check for errors
    check_errors(context,
                 form,
                 datatype,
                 name,
                 value,
                 schema,
                 fields,
                 readonly,
                 attributes,
                 tabindex=None)
    return make_element(tagname, attributes, content)
Пример #9
0
 def test_decode(self):
     self.assertEqual(XMLContent.decode(self.result1), self.data)
     self.assertEqual(XMLAttribute.decode(self.result2), self.data)
Пример #10
0
 def test_encode(self):
     self.assertEqual(XMLContent.encode(self.data), self.result1)
     self.assertEqual(XMLAttribute.encode(self.data), self.result2)
Пример #11
0
def file_widget(context,
                form,
                datatype,
                name,
                value,
                schema,
                fields,
                readonly,
                tabindex=None):
    if readonly:
        tagname = u"div"
        attributes = {u"class": [u"readonly"]}
        content = XMLContent.encode(value)
    else:
        tagname = u"input"
        attributes = {
            u"type": u"file",
            u"id": u"field_{name}".format(name=name),
            u"name": name,
            u"value": XMLAttribute.encode(value),
            u"size": str(datatype.size),
            u"maxlength": str(datatype.length)
        }
        content = u""
    # Check for errors
    check_errors(context,
                 form,
                 datatype,
                 name,
                 value,
                 schema,
                 fields,
                 readonly,
                 attributes,
                 tabindex=None)
    html = make_element(tagname, attributes, content)
    # Preview
    if not value:
        return html
    resource = form.parent.get_resource(value, soft=True)
    if resource is None:
        return html
    context = get_context()
    link = context.get_link(resource)
    href = u"{0}/;download".format(link)
    src = u"{0}/;thumb?width=128&amp;height=128".format(link)
    preview = make_element(u"a", {
        u"href": href,
        u"target": u"_new"
    }, make_element(u"img", {u"src": src}))
    field_id = u"field_{name}_delete".format(name=name)
    if readonly:
        delete = u""
    else:
        delete = make_element(
            u"input", {
                u"type": u"checkbox",
                u"id": field_id,
                u"name": u"{name}_delete".format(name=name),
                u"value": u"1"
            }, make_element(u"label", {u"for": field_id}, MSG(u"Delete")))
    html = html + preview + delete
    return html