Kalender-Push mit OpenExchange
Die Kalenderintegration in der Fachschaft ist seit längerer Zeit nicht funktionsfähig. Ich habe mal angefangen das zu debuggen:
principal.calendars() führt einen PROPFIND-Request nach DAV::calendar-home-set auf der URL /principals/users/<UID> aus. Dieser bricht mit caldav.lib.error.PropfindError: 405 Not Allowed ab. Mir scheint der Request soweit Standard-konform. Warum das bei OpenExchange nicht geht, weiß ich nicht, allerdings funktioniert das Principal-Object mit der URL /caldav/ ohne Probleme. Das ist dann wiederum nicht Standard-konform.
Ich sehe zwei Lösungsansätze:
- Das Principal-Objekt (nur!) bei OpenExchange statt mit
client.principal()mitPrincipal(client, client.url)initialisieren. - Die Liste der Kalender anders abrufen. vdirsyncer macht das z.B. mit einem PROPFIND-Request nach
DAV::resourcetypeauf die Basis-URL mit Tiefe 1. DieCalendar-Objekte kann man dann mit den URLs aus der Response instanzieren und wie gehabt verwenden. Das sähe dann etwa wie folgt aus.
client.propfind(client.url, b'<d:propfind xmlns:d="DAV:"><d:prop><d:resourcetype/></d:prop><d:prop><d:displayname/></d:prop></d:propfind>', depth='1')
Variante 1 wäre sehr einfach. Variante 2 hätte den Vorteil, dass sie vmtl. auch mit anderen Servern als OpenExchange funktioniert.
Meinungen, was sinnvoller ist?