chiark / gitweb /
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Matthew Vernon [Wed, 21 Nov 2018 16:20:08 +0000 (16:20 +0000)]
add README
Matthew Vernon [Tue, 20 Nov 2018 17:54:23 +0000 (17:54 +0000)]
Use a per-exchange-calendar cache file
We now use ~/.gooswapper to store our cache files (rather than CWD),
and also use one cache file per exchange calendar ID.
Matthew Vernon [Tue, 13 Nov 2018 14:50:44 +0000 (14:50 +0000)]
Add Copyright notice
Matthew Vernon [Tue, 13 Nov 2018 12:58:25 +0000 (12:58 +0000)]
Add LICENSE (AGPLv3)
Matthew Vernon [Mon, 12 Nov 2018 16:58:00 +0000 (16:58 +0000)]
current state-of-play notes
Matthew Vernon [Mon, 12 Nov 2018 16:52:06 +0000 (16:52 +0000)]
Add looping support
If you specify -l now, run through the main loop every 10 minutes.
Matthew Vernon [Wed, 24 Oct 2018 15:54:21 +0000 (16:54 +0100)]
re-order setup actions
This is so we can put a loop round those that we want to repeat, after
having done all the necessary login actions.
Matthew Vernon [Wed, 24 Oct 2018 15:47:22 +0000 (16:47 +0100)]
Bugfix: handle events with no gcal_id link
...this is typically where we can't edit the Exchange event (because
we don't own it). We could, as alternatives:
i) try and re-match each time
ii) store the link value in our cache and use that
Matthew Vernon [Wed, 24 Oct 2018 15:43:54 +0000 (16:43 +0100)]
Basic CLI
usage: gooswapper.py [-h] [--auth_host_name AUTH_HOST_NAME]
[--noauth_local_webserver]
[--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]
[--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
[-g GCALID] [-l]
exchuser exchemail
Gooswapper calendar sync
positional arguments:
exchuser Exchange user e.g. 'SANGER\mv3'
exchemail Exchange calendar email e.g. ISGGroup@sanger.ac.uk
optional arguments:
-h, --help show this help message and exit
--auth_host_name AUTH_HOST_NAME
Hostname when running a local web server.
--noauth_local_webserver
Do not run a local web server.
--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]
Port web server should listen on.
--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Set the logging level of detail.
-g GCALID, --gcalid GCALID
google Calendar ID
-l, --loop keep running indefinitely
(-l not yet implemented)
Matthew Vernon [Wed, 24 Oct 2018 10:24:19 +0000 (11:24 +0100)]
When matching, add google events where we have unmatched exchange ones
i.e. if you have an event in Exchange where a matching google event
isn't found by matching, then create that event in google.
Matthew Vernon [Tue, 23 Oct 2018 15:40:44 +0000 (16:40 +0100)]
handle empty subjects when matching
Matthew Vernon [Tue, 23 Oct 2018 15:40:26 +0000 (16:40 +0100)]
add option to ignore existing gcal_id links
Matthew Vernon [Tue, 23 Oct 2018 15:39:39 +0000 (16:39 +0100)]
check event isn't already cancelled before deleting
Matthew Vernon [Tue, 23 Oct 2018 15:12:47 +0000 (16:12 +0100)]
Handle the remaining recurrence types
These are in simple forms, as can be generated via the Outlook web
UI...
Matthew Vernon [Tue, 23 Oct 2018 13:38:11 +0000 (14:38 +0100)]
Handle updates to recurring events
Matthew Vernon [Fri, 19 Oct 2018 16:53:17 +0000 (17:53 +0100)]
Update changekey of master event after adjusting instances
Changing the instances (e.g. by adding a gcal_link) updates the
changekey of the master instance. So we need to reflect this in our
cache.
Matthew Vernon [Fri, 19 Oct 2018 16:41:48 +0000 (17:41 +0100)]
Remove warning about not supporting modified/deleted recurrences
Matthew Vernon [Fri, 19 Oct 2018 16:39:10 +0000 (17:39 +0100)]
Don't store instances of recurring events in the cache
...as they don't appear in the usual listing, which means we end up
considering them as deleted events.
Matthew Vernon [Fri, 19 Oct 2018 16:37:33 +0000 (17:37 +0100)]
Handle modified / deleted recurrences
This has a bug in that adding the modified events to the events cache
causes them to get deleted on the next run (since they don't appear in
the events listing normally).
Matthew Vernon [Fri, 19 Oct 2018 11:42:17 +0000 (12:42 +0100)]
handle weekly recurrence pattern
Matthew Vernon [Fri, 19 Oct 2018 11:41:54 +0000 (12:41 +0100)]
only register gcal_link if necessary
Matthew Vernon [Fri, 19 Oct 2018 10:21:52 +0000 (11:21 +0100)]
more verbose logging of recurrence
Matthew Vernon [Fri, 19 Oct 2018 10:21:36 +0000 (11:21 +0100)]
add utility function to pop an event from the cache
Matthew Vernon [Wed, 17 Oct 2018 16:04:30 +0000 (17:04 +0100)]
Start on recurring event support
...currently only daily events, but this is tested and works across a
DST change.
Matthew Vernon [Wed, 17 Oct 2018 16:03:24 +0000 (17:03 +0100)]
Make start and end times be rendered in target timezone
This is consistent with how we were handling all-day events
previously, and means that recurring events work round DST changes
better.
Matthew Vernon [Wed, 10 Oct 2018 15:45:08 +0000 (16:45 +0100)]
restrict fields passed to event.save()
This avoids problems where the event has some fields we can't edit.
Matthew Vernon [Wed, 10 Oct 2018 15:44:36 +0000 (16:44 +0100)]
check for empty body
Matthew Vernon [Mon, 8 Oct 2018 10:35:26 +0000 (11:35 +0100)]
Remove some no-longer needed lines
These were part of getting to the bottom of why saving wasn't working,
which we have now fixed (see previous commit).
Matthew Vernon [Sat, 6 Oct 2018 21:54:10 +0000 (22:54 +0100)]
Add code to propagate changes, and match events
Updating is a fairly simple process of copying across the fields we
think we care about.
Matching looks for non-recurring events with the same title in the
same time range.
Matthew Vernon [Fri, 5 Oct 2018 14:13:09 +0000 (15:13 +0100)]
pass gcal_tz where needed
Matthew Vernon [Fri, 5 Oct 2018 14:06:14 +0000 (15:06 +0100)]
Split out building gcal event structure (no functional change)
...this will enable us to use it for updates as well as creation
Matthew Vernon [Fri, 5 Oct 2018 14:00:11 +0000 (15:00 +0100)]
correct warning text
Matthew Vernon [Fri, 5 Oct 2018 13:51:51 +0000 (14:51 +0100)]
Cache the auto-discovery values from Exchange
This saves us a bit of time.
Matthew Vernon [Fri, 5 Oct 2018 11:17:05 +0000 (12:17 +0100)]
Also support single non-all-day events
Matthew Vernon [Fri, 5 Oct 2018 11:16:38 +0000 (12:16 +0100)]
store gcal_link in cache immediately (rather than waiting for next cache update
Matthew Vernon [Fri, 5 Oct 2018 11:15:32 +0000 (12:15 +0100)]
fix syntax of extendedProperties setting
Matthew Vernon [Fri, 5 Oct 2018 10:23:25 +0000 (11:23 +0100)]
Remove old commented-out deletion code
During testing, it made life easier to automatically delete new events
sometimes. We don't want to do that any more :)
Matthew Vernon [Fri, 5 Oct 2018 10:22:37 +0000 (11:22 +0100)]
delete linked events
Matthew Vernon [Fri, 5 Oct 2018 10:06:36 +0000 (11:06 +0100)]
Switch to using a named tuple for the cache
This lets us store more than one field per event, fairly simply.
Matthew Vernon [Fri, 5 Oct 2018 09:06:47 +0000 (10:06 +0100)]
Remove old part-written broken function
This was a previous iteration that never actually worked (it led to
the GlobalObjectId work, which in turn led to just using item_id)
Matthew Vernon [Fri, 5 Oct 2018 09:05:51 +0000 (10:05 +0100)]
Remove GlobalObjectId code
Firstly, we can use item_id instead; secondly, it doesn't always
actually work :-/
Matthew Vernon [Fri, 5 Oct 2018 09:04:15 +0000 (10:04 +0100)]
Move to keying by item_id
item_id is constant (changekey changes if an event is updated) and
searchable, so use it as primary key.
Matthew Vernon [Fri, 5 Oct 2018 08:33:42 +0000 (09:33 +0100)]
Remove commented-out account line
(previous work thought that ServiceAccount might be misbehaving)
Matthew Vernon [Fri, 5 Oct 2018 08:33:03 +0000 (09:33 +0100)]
tidy up the exchange extended property
The two commented-out versions were wrong ("gooswapper") and unhelpful
(the number, stolen from the exchangelib docs); better is to use a
public string entry.
Matthew Vernon [Fri, 5 Oct 2018 08:31:07 +0000 (09:31 +0100)]
Initial commit
This now can cope with new all-day events from exchange, and make the
corresponding event in gcal.
Matthew Vernon [Fri, 5 Oct 2018 08:27:38 +0000 (09:27 +0100)]
git ignore file