mirror of
https://github.com/Kozea/Radicale.git
synced 2025-08-28 19:40:54 +00:00
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:
parent
656680d998
commit
5c90f5b2af
1 changed files with 16 additions and 5 deletions
|
@ -364,12 +364,23 @@ class Collection(BaseCollection):
|
|||
self.set_meta("tag", "VCALENDAR")
|
||||
if collection:
|
||||
collection, = collection
|
||||
items = []
|
||||
for content in ("vevent", "vtodo", "vjournal"):
|
||||
if content in collection.contents:
|
||||
for item in getattr(collection, "%s_list" % content):
|
||||
new_collection = vobject.iCalendar()
|
||||
new_collection.add(item)
|
||||
self.upload(uuid4().hex, new_collection)
|
||||
items.extend(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.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)
|
||||
elif tag == "VCARD":
|
||||
self.set_meta("tag", "VADDRESSBOOK")
|
||||
if collection:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue