Projet

Général

Profil

0001-misc-move-xml-indenting-function-to-a-better-place-4.patch

Frédéric Péters, 25 novembre 2014 12:18

Télécharger (3,94 ko)

Voir les différences:

Subject: [PATCH 1/3] misc: move xml indenting function to a better place
 (#4739)

 wcs/admin/forms.py     | 19 +------------------
 wcs/admin/workflows.py |  9 ++++-----
 wcs/qommon/misc.py     | 17 +++++++++++++++++
 3 files changed, 22 insertions(+), 23 deletions(-)
wcs/admin/forms.py
44 44

  
45 45
from fields import FieldDefPage, FieldsDirectory
46 46

  
47
def indent(elem, level=0):
48
    # in-place prettyprint formatter
49
    # http://effbot.org/zone/element-lib.htm#prettyprint
50
    i = "\n" + level*"  "
51
    if len(elem):
52
        if not elem.text or not elem.text.strip():
53
            elem.text = i + "  "
54
        for elem in elem:
55
            indent(elem, level+1)
56
        if not elem.tail or not elem.tail.strip():
57
            elem.tail = i
58
    else:
59
        if level and (not elem.tail or not elem.tail.strip()):
60
            elem.tail = i
61
    return elem
62

  
63

  
64 47
def get_categories():
65 48
    t = sorted([(misc.simplify(x.name), x.id, x.name, x.id) for x in Category.select()])
66 49
    return [x[1:] for x in t]
......
932 915

  
933 916
    def export(self):
934 917
        x = self.formdef.export_to_xml(include_id=True)
935
        indent(x)
918
        misc.indent_xml(x)
936 919
        response = get_response()
937 920
        response.set_content_type('application/x-wcs-form')
938 921
        response.set_header('content-disposition',
wcs/admin/workflows.py
18 18
from StringIO import StringIO
19 19
from subprocess import Popen, PIPE
20 20
import textwrap
21
import xml.etree.ElementTree as etree
21
import xml.etree.ElementTree as ET
22 22
import re
23 23
import urllib2
24 24

  
......
35 35
from wcs.workflows import *
36 36
from wcs.formdef import FormDef
37 37
from wcs.formdata import Evolution
38
from wcs.admin.forms import ET, indent
39 38

  
40 39

  
41 40
def svg(tag):
......
88 87
        If a color style is set to a name matching class-\w+, set the second
89 88
        part on as class selector on the top level svg:g element.
90 89
    '''
91
    tree = etree.fromstring(content)
90
    tree = ET.fromstring(content)
92 91

  
93 92
    for root in tree:
94 93
        remove_tag(root, TITLE)
95 94
        # remove_tag(root, POLYGON)
96 95
        for child in root:
97 96
            remove_style(child, child)
98
    return etree.tostring(tree)
97
    return ET.tostring(tree)
99 98

  
100 99
def graphviz(workflow, url_prefix='', select=None, svg=True,
101 100
        include=False):
......
787 786

  
788 787
    def export(self):
789 788
        x = self.workflow.export_to_xml(include_id=True)
790
        indent(x)
789
        misc.indent_xml(x)
791 790
        response = get_response()
792 791
        response.set_content_type('application/x-wcs-form')
793 792
        response.set_header('content-disposition',
wcs/qommon/misc.py
527 527
def zap_context(msg):
528 528
    '''Removes translation context from message'''
529 529
    return msg.split('|', 1)[1]
530

  
531

  
532
def indent_xml(elem, level=0):
533
    # in-place prettyprint formatter
534
    # http://effbot.org/zone/element-lib.htm#prettyprint
535
    i = "\n" + level*"  "
536
    if len(elem):
537
        if not elem.text or not elem.text.strip():
538
            elem.text = i + "  "
539
        for elem in elem:
540
            indent_xml(elem, level+1)
541
        if not elem.tail or not elem.tail.strip():
542
            elem.tail = i
543
    else:
544
        if level and (not elem.tail or not elem.tail.strip()):
545
            elem.tail = i
546
    return elem
530
-