From f0c5bfe4bfe1a3cd8d1df26f1f1a920209c953cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 25 Nov 2014 11:46:02 +0100 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(-) diff --git a/wcs/admin/forms.py b/wcs/admin/forms.py index cf1775c..6b7c4c5 100644 --- a/wcs/admin/forms.py +++ b/wcs/admin/forms.py @@ -44,23 +44,6 @@ from wcs.forms.root import qrcode from fields import FieldDefPage, FieldsDirectory -def indent(elem, level=0): - # in-place prettyprint formatter - # http://effbot.org/zone/element-lib.htm#prettyprint - i = "\n" + level*" " - if len(elem): - if not elem.text or not elem.text.strip(): - elem.text = i + " " - for elem in elem: - indent(elem, level+1) - if not elem.tail or not elem.tail.strip(): - elem.tail = i - else: - if level and (not elem.tail or not elem.tail.strip()): - elem.tail = i - return elem - - def get_categories(): t = sorted([(misc.simplify(x.name), x.id, x.name, x.id) for x in Category.select()]) return [x[1:] for x in t] @@ -932,7 +915,7 @@ class FormDefPage(Directory): def export(self): x = self.formdef.export_to_xml(include_id=True) - indent(x) + misc.indent_xml(x) response = get_response() response.set_content_type('application/x-wcs-form') response.set_header('content-disposition', diff --git a/wcs/admin/workflows.py b/wcs/admin/workflows.py index 88c8d5d..7b79598 100644 --- a/wcs/admin/workflows.py +++ b/wcs/admin/workflows.py @@ -18,7 +18,7 @@ import time from StringIO import StringIO from subprocess import Popen, PIPE import textwrap -import xml.etree.ElementTree as etree +import xml.etree.ElementTree as ET import re import urllib2 @@ -35,7 +35,6 @@ from qommon import get_logger from wcs.workflows import * from wcs.formdef import FormDef from wcs.formdata import Evolution -from wcs.admin.forms import ET, indent def svg(tag): @@ -88,14 +87,14 @@ def graphviz_post_treatment(content): If a color style is set to a name matching class-\w+, set the second part on as class selector on the top level svg:g element. ''' - tree = etree.fromstring(content) + tree = ET.fromstring(content) for root in tree: remove_tag(root, TITLE) # remove_tag(root, POLYGON) for child in root: remove_style(child, child) - return etree.tostring(tree) + return ET.tostring(tree) def graphviz(workflow, url_prefix='', select=None, svg=True, include=False): @@ -787,7 +786,7 @@ class WorkflowPage(Directory): def export(self): x = self.workflow.export_to_xml(include_id=True) - indent(x) + misc.indent_xml(x) response = get_response() response.set_content_type('application/x-wcs-form') response.set_header('content-disposition', diff --git a/wcs/qommon/misc.py b/wcs/qommon/misc.py index 4686e34..3fb7a8a 100644 --- a/wcs/qommon/misc.py +++ b/wcs/qommon/misc.py @@ -527,3 +527,20 @@ def get_foreground_colour(background_colour): def zap_context(msg): '''Removes translation context from message''' return msg.split('|', 1)[1] + + +def indent_xml(elem, level=0): + # in-place prettyprint formatter + # http://effbot.org/zone/element-lib.htm#prettyprint + i = "\n" + level*" " + if len(elem): + if not elem.text or not elem.text.strip(): + elem.text = i + " " + for elem in elem: + indent_xml(elem, level+1) + if not elem.tail or not elem.tail.strip(): + elem.tail = i + else: + if level and (not elem.tail or not elem.tail.strip()): + elem.tail = i + return elem -- 2.1.3