diff --git a/contrib/caldav/calcurse-caldav.py b/contrib/caldav/calcurse-caldav.py
index 9b6d77e..9cdd255 100755
--- a/contrib/caldav/calcurse-caldav.py
+++ b/contrib/caldav/calcurse-caldav.py
@@ -118,19 +118,21 @@ def remote_query(cmd, path, additional_headers, body):
return (headers, body)
-def get_hrefmap(conn, uid=None):
- if uid:
- propfilter = ('' +
- '%s' +
- '') % (uid)
+def get_hrefmap(conn, hrefs=[]):
+ if len(hrefs) > 0:
+ body = '' +\
+ '' +\
+ ''
+ for href in hrefs:
+ body += '{}'.format(href)
+ body += ''
else:
- propfilter = ''
+ body = '' +\
+ '' +\
+ '' +\
+ '' +\
+ ''
- body = '' +\
- '' +\
- '' +\
- '' + propfilter + '' +\
- ''
headers, body = remote_query("REPORT", path, {}, body)
if not headers:
return {}
@@ -186,8 +188,9 @@ def save_syncdb(fn, syncdb):
print("%s %s" % (etag, objhash), file=f)
def push_object(conn, objhash):
+ href = path + objhash + ".ics"
body = calcurse_export(objhash)
- headers, body = remote_query("PUT", path + objhash + ".ics", {}, body)
+ headers, body = remote_query("PUT", href, {}, body)
if not headers:
return None
@@ -197,9 +200,9 @@ def push_object(conn, objhash):
if 'etag' in headerdict:
etag = headerdict['etag']
while not etag:
- hrefmap = get_hrefmap(conn, objhash)
+ hrefmap = get_hrefmap(conn, [href])
if len(hrefmap.keys()) > 0:
- etag = hrefmap.keys()[0]
+ etag = next(iter(hrefmap.keys()))
etag = etag.strip('"')
return etag