0002094: Book report - user enter a multiline text into a custom text block, with quote char
svn: r10599
This commit is contained in:
parent
81bc827030
commit
e3140b4fce
@ -941,7 +941,7 @@ def get_type_converter_by_name(val_str):
|
||||
elif val_str == 'float':
|
||||
return float
|
||||
elif val_str == 'bool':
|
||||
return bool
|
||||
return cast_to_bool
|
||||
elif val_str in ('str', 'unicode'):
|
||||
return unicode
|
||||
return unicode
|
||||
|
@ -47,8 +47,10 @@ log = logging.getLogger(".BookReport")
|
||||
#-------------------------------------------------------------------------
|
||||
try:
|
||||
from xml.sax import make_parser, handler, SAXParseException
|
||||
from xml.sax.saxutils import escape
|
||||
except:
|
||||
from _xmlplus.sax import make_parser, handler, SAXParseException
|
||||
from _xmlplus.sax.saxutils import escape
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -458,21 +460,35 @@ class BookList:
|
||||
for item in book.get_item_list():
|
||||
f.write(' <item name="%s" trans_name="%s">\n' %
|
||||
(item.get_name(),item.get_translated_name() ) )
|
||||
option_handler = item.option_class.handler
|
||||
for option_name in option_handler.options_dict.keys():
|
||||
option_value = option_handler.options_dict[option_name]
|
||||
if type(option_value) in (list, tuple):
|
||||
f.write(' <option name="%s" length="%d">\n' % (
|
||||
option_name, len(option_value) ) )
|
||||
for list_index in range(len(option_value)):
|
||||
option_type = Utils.type_name(option_value[list_index])
|
||||
f.write(' <listitem number="%d" type="%s" value="%s"/>\n' % (
|
||||
list_index, option_type, option_value[list_index]) )
|
||||
options = item.option_class.handler.options_dict
|
||||
for option_name in options.keys():
|
||||
option_value = options[option_name]
|
||||
if type(option_value) in (type(list()), type(tuple())):
|
||||
f.write(' <option name="%s" value="" '
|
||||
'length="%d">\n' % (
|
||||
escape(option_name),
|
||||
len(options[option_name]) ) )
|
||||
for list_index in range(len(options[option_name])):
|
||||
option_type = \
|
||||
Utils.type_name(option_value[list_index])
|
||||
value = escape(unicode(option_value[list_index]))
|
||||
value = value.replace('"', '"')
|
||||
f.write(' <listitem number="%d" type="%s" '
|
||||
'value="%s"/>\n' % (
|
||||
list_index,
|
||||
option_type,
|
||||
value ) )
|
||||
f.write(' </option>\n')
|
||||
else:
|
||||
option_type = Utils.type_name(option_value)
|
||||
f.write(' <option name="%s" type="%s" value="%s"/>\n' % (
|
||||
option_name, option_type, option_value) )
|
||||
value = escape(unicode(option_value))
|
||||
value = value.replace('"', '"')
|
||||
f.write(' <option name="%s" type="%s" '
|
||||
'value="%s"/>\n' % (
|
||||
escape(option_name),
|
||||
option_type,
|
||||
value) )
|
||||
|
||||
f.write(' <style name="%s"/>\n' % item.get_style_name() )
|
||||
f.write(' </item>\n')
|
||||
f.write('</book>\n')
|
||||
|
Loading…
Reference in New Issue
Block a user