Wallace fails to parse events in the resource if the even is reoccurring and has such reoccurring rule:
<rrule>
<recur>
<freq>WEEKLY</freq>
<until>
<date>2016-12-31</date>
</until>
<interval>2</interval>
<byday>WE</byday>
</recur>
</rrule>The error then is:
ERROR Expunge resource calendar for cn=Meeting-room,ou=Resources,dc=domain,dc=tld (shared/Resources/Meeting-room@domain.tld) failed: TypeError("can't compare datetime.datetime to datetime.date",)
The problem here is that in this case the last_occurrence (dt_end) is of time 'date', code tries to compare dt_end to expire_date, which is datetime.
I've noticed that other reoccurring events have last_occurrence set to <date-time>, but some have just <date> in kolab xml.
The fix could be to convert dt_end to type of date and convert expire_date to type of date and compare date objects. This is an example of the fix in file wallace/module_resources.py, method
--- module_resources.py.orig 2016-07-08 15:05:54.887180000 +0200
+++ module_resources.py 2016-07-08 15:04:54.383180001 +0200
@@ -492,7 +492,10 @@ def expunge_resource_calendar(mailbox):
# skip if recurring forever
continue
- if dt_end and dt_end < expire_date:
+ if isinstance(dt_end, datetime.datetime):
+ dt_end = dt_end.date()
+
+ if dt_end and dt_end < expire_date.date():
age = now - dt_end
log.debug(_("Flag event %s from message %s/%s as deleted (age = %d days)") % (event.uid, mailbox, num, age.days), level=8)
imap.imap.m.store(num, '+FLAGS', '\\Deleted')This would mean that checking of expired events will be based on day granularity.