Hallo @bb und @danielstraub, mit dem Branch variant_parent_id habe ich noch ein gedankliches Problem:
Wie habt Ihr das bei Euch umgesetzt, denn das Attribut variantparent_id
funktioniert? In meinen Tests/nach meinem Wissen geht es nicht in allen Fällen dms.XmlImport()
, sondern, nur wenn es effektiv ein dms.XmlInsert()
auslöst, da es keine Suchtreffer gegeben hat.
Eure Implementation:
object_element = XmlElement('Object', a={'variantparent_id': (variant_parent_id if variant_parent_id != None else '-1')},
Grundsätzlich hätte ich es jetzt so vorgesehen:
object_element = XmlElement('Object',
s=[ XmlElement(
'Search', s=[ search_fields_element := XmlElement('Fields') ]),
import_fields_element := XmlElement('Fields')
])
...
if variant_parent_id:
if len(search_fields) > 0:
raise ValueError('search_fields must be empty when variant_parant_id is set.')
search_fields = { SystemFields.OBJECT_ID.name: '-1' }
object_element.set('variantparent_id', str(variant_parent_id))
Dadurch gelingt mein Test:
def test_xml_import_parent_variant_id(self):
client = TcpPoolClient(self.connection_string, 'TestApp', 'root', 'optimal', self.use_ssl)
result = client.xml_import(
object_name='UnittestDoc',
search_fields={'StringField': 'Test Variant'},
import_fields={'StringField': 'Test Variant'},
folder_id=self.folder_id,
action1=ImportActions.NONE,
main_type=MainTypeId.DOC_WINDOWS,
files=['README.md']
)
parent_id = result.values['ObjectID']
result = client.xml_import(
object_name='UnittestDoc',
search_fields={},
import_fields={'StringField': 'Test Variant'},
folder_id=self.folder_id,
files=['README.md'],
main_type=MainTypeId.DOC_WINDOWS,
variant_parent_id=parent_id
)
self.assertEqual(result.return_code, 0)
self.assertEqual(result.values['Action'], ImportActions.INSERT.value)
Ist das in Eurem Sinne? Dann würde ich einen Merge Request entgegennehmen