Benutzer über die Server-API anlegen

Nachdem ich mich gerade verwirren habe lassen, hoffe ich mich diesem Beitrag jemand anderen frühzeitig zu entwirren :wink:

In der englischsprachigen Doku der enaio Server-API ist das Beispiel für das hinzufügen eines Users so angegeben:

<AdmInfo>
<Users>
<User account_type="0" comment="" user="TESTUSER" flags="1"
changed="1" langid="0" locked="0" logincount="0"
loginstation="" logintime="0" name="Peter Muster"
osemail=""
password="B62441422712357307" profile="-1" server_id="3"
station="" supervisor="0" validfrom="" validto="">
</User>
</Users>
</AdmInfo>

Mit diesem Beispiel konnte ich keinen User anlegen, da ich immer wieder die Fehlermeldung bekommen habe, dass name leer sei, oder ungültige Zeichen enthalte.
Nachdem ich festgestellt habe, dass in der deutschsprachigen Doku manche der Felder (comment = bemerkung, user = benutzer, changed = geaendert) anders heissen und ich die Attribute entsprechend übersetzt hatte, konnte ich User anlegen. Hier das deutschprachige Beispiel aus der Doku zum Vergleich:

<AdmInfo>
<Users>
<User account_type="0" bemerkung="" benutzer="TESTUSER" flags="1"
geaendert="1" langid="0" locked="0" logincount="0"
loginstation="" logintime="0" name="Peter Muster"
osemail=""
passwort="B62441422712357307" profil="-1" server_id="3"
station="" supervisor="0" validfrom="" validto="">
</User>
</Users>
</AdmInfo>

Hier ein Auszug aus meinem Python-Code, mit dem die Benutzeranlage geklappt hat:



for index, user in transformed_df_benutzer.iterrows():    
    combined_name =  f"{user['Vorname']} {user['Name']}"
    query_xml = X.from_object(
        'AdmInfo', {
            'Users': {
                'User':{
                    '@account_type': '0',
                    '@bemerkung': '',
                    '@benutzer': user['Benutzername'],
                    '@flags': '0',
                    '@geaendert': '0',
                    '@langid': '1',
                    '@locked': '0' if user['Inaktiv'] == 'Nein' else '1',
                    '@logincount': '0',
                    '@loginstation': '',
                    '@logintime': '0',
                    '@name': combined_name,
                    '@osemail': user['EMail'],
                    '@password': user['Passwort'],
                    '@profile': '-1',
                    '@server_id': '1',
                    '@station': '',
                    '@supervisor': '0',
                    '@validfrom': '',
                    '@validto': '',
                    }
                }
            }
    )
    string = query_xml.to_string()
    job = Job("mng.CreateUser", UserInfo=query_xml, HasEncoding=True, Flags=0)
    result = enaio.execute(job)
    if result:
        logging.info(f"user { user['Benutzername']} was created.")

2 Likes