misc: move xml indenting function to a better place (#4739)

This commit is contained in:
Frédéric Péters 2014-11-25 11:46:02 +01:00
parent 7c592ad9d2
commit 3be51c00d2
5 changed files with 27 additions and 25 deletions

View File

@ -3,12 +3,13 @@ import shutil
import StringIO
import tempfile
import time
import xml.etree.ElementTree as ET
from quixote import cleanup
from wcs import publisher
from wcs.formdef import FormDef, fields
from wcs.admin.forms import ET, indent
from qommon.misc import indent_xml as indent
def setup_module(module):

View File

@ -2,15 +2,17 @@ import sys
import shutil
import StringIO
import tempfile
import xml.etree.ElementTree as ET
from quixote import cleanup
from wcs import publisher
from wcs.workflows import Workflow, CommentableWorkflowStatusItem
from wcs.roles import Role
from wcs.admin.forms import ET, indent
from wcs.fields import StringField
from qommon.misc import indent_xml as indent
def setup_module(module):
cleanup()

View File

@ -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',

View File

@ -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',

View File

@ -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