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