Save all items with the same UID in the same file

If recurrences are not in the same file, they are not correctly shown by clients.
This commit is contained in:
Unrud 2016-05-29 03:32:06 +02:00
parent 656680d998
commit 5c90f5b2af

View File

@ -364,11 +364,22 @@ class Collection(BaseCollection):
self.set_meta("tag", "VCALENDAR") self.set_meta("tag", "VCALENDAR")
if collection: if collection:
collection, = collection collection, = collection
items = []
for content in ("vevent", "vtodo", "vjournal"): for content in ("vevent", "vtodo", "vjournal"):
if content in collection.contents: items.extend(getattr(collection, "%s_list" % content, []))
for item in getattr(collection, "%s_list" % content): processed_uids = []
for i, item in enumerate(items):
uid = getattr(item, "uid", None)
if uid in processed_uids:
continue
new_collection = vobject.iCalendar() new_collection = vobject.iCalendar()
new_collection.add(item) new_collection.add(item)
if uid:
processed_uids.append(uid)
# search for items with same UID
for oitem in items[i+1:]:
if getattr(oitem, "uid", None) == uid:
new_collection.add(oitem)
self.upload(uuid4().hex, new_collection) self.upload(uuid4().hex, new_collection)
elif tag == "VCARD": elif tag == "VCARD":
self.set_meta("tag", "VADDRESSBOOK") self.set_meta("tag", "VADDRESSBOOK")