# HG changeset patch # User Paul Boddie # Date 1513033843 -3600 # Node ID 20f2f788e42a63c0458b1207acd2cf93aad058d5 # Parent 05de61cc499f715c89a3bbb784122cb7331674dd Use RDATE as the origin of modified recurrence periods. Preserve the period replacement status when editing. diff -r 05de61cc499f -r 20f2f788e42a imip_text_client.py --- a/imip_text_client.py Tue Dec 12 00:05:22 2017 +0100 +++ b/imip_text_client.py Tue Dec 12 00:10:43 2017 +0100 @@ -205,18 +205,16 @@ "Show period 'p' at 'index' with any indicated 'errors'." errors = errors and errors.get(index) - if p.replacement: - if p.cancelled: - label = "Cancelled" - else: - label = "Replaced" + if p.cancelled: + label = "Cancelled" + elif p.replacement: + label = "Replaced" + elif p.new_replacement: + label = "To replace" + elif p.recurrenceid: + label = "Retained" else: - if p.new_replacement: - label = "To replace" - elif p.recurrenceid: - label = "Retained" - else: - label = "New" + label = "New" error_label = errors and " (errors: %s)" % ", ".join(errors) or "" print "(%d) %s%s:" % (index, label, error_label), p.get_start(), p.get_end(), p.origin @@ -442,7 +440,11 @@ if period: edit_period(period, args) period.cancelled = False - period.origin = "DTSTART-RECUR" + + # Change the origin of modified rule periods. + + if period.origin == "RRULE": + period.origin = "RDATE" # Sort the periods after this change. diff -r 05de61cc499f -r 20f2f788e42a imiptools/editing.py --- a/imiptools/editing.py Tue Dec 12 00:05:22 2017 +0100 +++ b/imiptools/editing.py Tue Dec 12 00:10:43 2017 +0100 @@ -635,7 +635,7 @@ # Make the status of the period compatible. period.cancelled = False - period.origin = "DTSTART-RECUR" + period.origin = "RDATE" # Either replace or add the period. @@ -673,7 +673,6 @@ # Make replacements from existing periods and cancel them. if p.recurrenceid: - p.replacement = True p.cancelled = cancelled # Remove new periods completely. @@ -1353,6 +1352,11 @@ if p.new_replacement: p.new_replacement = False + # Cancelled unedited periods. + + elif op: + replaced.append(p) + # New periods without corresponding unedited periods. elif p: