xref: /trunk/test/odf-validate/fixtures/xforms-list/make.py (revision 0e16a31d78a652c56c5c0fc79c752f48b9048df9)
1*0e16a31dSJim Jagielski# usage: python3 -I fixtures/xforms-list/make.py <xforms-ubl.odt> <out.odt>
2*0e16a31dSJim Jagielski# Derives a document with a combobox and a listbox that both have form:xforms-list-source.
3*0e16a31dSJim Jagielskiimport re, sys, zipfile
4*0e16a31dSJim Jagielski
5*0e16a31dSJim Jagielskisrc, out = sys.argv[1], sys.argv[2]
6*0e16a31dSJim Jagielskizin = zipfile.ZipFile(src)
7*0e16a31dSJim Jagielskizout = zipfile.ZipFile(out, "w", zipfile.ZIP_DEFLATED)
8*0e16a31dSJim Jagielskifor info in zin.infolist():
9*0e16a31dSJim Jagielski    data = zin.read(info.filename)
10*0e16a31dSJim Jagielski    if info.filename == "content.xml":
11*0e16a31dSJim Jagielski        s = data.decode("utf-8")
12*0e16a31dSJim Jagielski        m = re.search(r'<form:combobox form:name="ComboBox1"[^>]*>.*?</form:combobox>', s, re.S)
13*0e16a31dSJim Jagielski        assert m, "ComboBox1 not found"
14*0e16a31dSJim Jagielski        lb = '<form:listbox form:name="ListBox1" form:control-implementation="ooo:com.sun.star.form.component.ListBox" form:id="control50" form:dropdown="true" form:tab-index="29" xforms:bind="Bindung 45" form:xforms-list-source="currencies"/>'
15*0e16a31dSJim Jagielski        s = s[:m.start()] + lb + s[m.end():]
16*0e16a31dSJim Jagielski        data = s.encode("utf-8")
17*0e16a31dSJim Jagielski    zout.writestr(info, data, zipfile.ZIP_STORED if info.filename == "mimetype" else zipfile.ZIP_DEFLATED)
18*0e16a31dSJim Jagielskizout.close()
19