Skip to content

Commit 10af7f5

Browse files
committed
WIP
1 parent 573f85f commit 10af7f5

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

khal/controllers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,11 @@ def import_event(vevent, collection, locale, batch, format=None, env=None):
643643
if batch or confirm(f"Do you want to import this event into `{calendar_name}`?"):
644644
try:
645645
collection.new(Item(vevent), collection=calendar_name)
646-
except DuplicateUid:
646+
except DuplicateUid as error:
647+
uid = str(error)
648+
existing_event = collection.get_event(href=uid, calendar=calendar_name)
649+
if existing_event.recurring:
650+
breakpoint()
647651
if batch or confirm(
648652
"An event with the same UID already exists. Do you want to update it?"):
649653
collection.force_update(Item(vevent), collection=calendar_name)

khal/icalendar.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,18 @@ def delete_instance(vevent, instance):
502502
vevent.add('RDATE', rdates)
503503

504504

505+
def edit_instance(vevents, instance):
506+
"""add `instance` to vevents
507+
508+
if an instance with that recuid already exists, replace it. Also make sure,
509+
that recuid is not excluded
510+
"""
511+
512+
513+
514+
return vevents
515+
516+
505517
def sort_key(vevent):
506518
"""helper function to determine order of VEVENTS
507519
so that recurrence-id events come after the corresponding rrule event, etc

tests/icalendar_test.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import icalendar
55

6-
from khal.icalendar import split_ics
6+
from khal.icalendar import split_ics, edit_instance
77

88
from .utils import LOCALE_BERLIN, _get_text, normalize_component
99

@@ -87,3 +87,13 @@ def test_split_ics_without_uid():
8787
assert vevents
8888
vevents2 = split_ics(cal)
8989
assert vevents[0] == vevents2[0]
90+
91+
92+
def test_edit_instance():
93+
"""test if adding a recuid instance to a recurring event works"""
94+
cal = icalendar.Calendar.from_ical(_get_text("event_rrule"))
95+
instance = icalendar.Calendar.from_ical(_get_text("event_rrule_recuid_instance_only"))
96+
breakpoint()
97+
98+
99+
updated_instance = edit_instance(cal, instance)

0 commit comments

Comments
 (0)