5 def merge_events(master, localization):
7 Merge two event definition files
10 master_xml = xml.dom.minidom.parse(master)
11 l10n_xml = xml.dom.minidom.parse(localization)
12 impl = xml.dom.minidom.getDOMImplementation()
14 merged = impl.createDocument(None, 'ils_events', None)
17 notes = master_xml.getElementsByTagName('notes')[0]
18 merged.documentElement.appendChild(notes)
20 events = master_xml.getElementsByTagName('event')
22 merged.documentElement.appendChild(merged.createTextNode("\n"))
23 l10n_node = get_l10n_event_desc(l10n_xml, event.getAttribute('code'))
24 for child in event.childNodes:
25 if child.nodeName == 'desc':
26 if child.getAttribute('xml:lang') == l10n_node.getAttribute('xml:lang'):
27 event.removeChild(child)
28 event.appendChild(l10n_node)
29 merged.documentElement.appendChild(event)
30 merged.documentElement.appendChild(merged.createTextNode("\n"))
34 def get_l10n_event_desc(l10n_xml, code):
36 Gets a localized event description
41 events = l10n_xml.getElementsByTagName('event')
43 if event.getAttribute('code') == code:
44 for node in event.childNodes:
45 if node.nodeName == 'desc':
52 Determine what action to take
54 opts = optparse.OptionParser()
55 opts.add_option('-m', '--master', action='store', \
56 help='Master ils_events.xml file into which we are merging our additional localized strings', \
58 opts.add_option('-l', '--localization', action='store', \
59 help='Localized ils_events.xml file', \
61 opts.add_option('-o', '--output', dest='outfile', \
62 help='Write output to FILE (defaults to STDOUT)', metavar='FILE')
63 opts.add_option('-p', '--pretty', action='store', \
64 help='Write pretty XML output')
65 (options, args) = opts.parse_args()
67 if not options.master:
68 opts.error('Must specify the master ils_events file (-m option)')
69 elif not options.localization:
70 opts.error('Must specify the localized ils_events file to merge (-l option)')
72 merged = merge_events(options.master, options.localization)
75 outfile = open(options.outfile, 'w')
77 outfile.write(merged.toprettyxml(encoding='utf-8'))
79 outfile.write(merged.toxml(encoding='utf-8'))
82 print merged.toprettyxml(encoding='utf-8')
84 print merged.toxml(encoding='utf-8')
86 if __name__ == '__main__':