Skip to content

Instantly share code, notes, and snippets.

@hallamoore
Created April 5, 2018 19:41
Show Gist options
  • Select an option

  • Save hallamoore/df2d7bd4f9ab5e9960872417015ecf68 to your computer and use it in GitHub Desktop.

Select an option

Save hallamoore/df2d7bd4f9ab5e9960872417015ecf68 to your computer and use it in GitHub Desktop.
import gevent
from exchangelib import CalendarItem, EWSDateTime, EWSTimeZone
from nylas.db.sharded.models.account import Account
from nylas.db.sharded.models.session import session_scope_by_shard_id
from nylas.sync.adaptors.ews import EWSSyncAdaptor
with session_scope_by_shard_id(0) as db:
acc = db.query(Account).get(4) # exchange account, test@nilas.com
adaptor = EWSSyncAdaptor(acc)
adaptor.authorize_account()
while True:
tz = EWSTimeZone.localzone()
event = CalendarItem(
folder=adaptor._exlib_account.calendar,
start=tz.localize(EWSDateTime(2018, 4, 6, 10, 0, 0)),
end=tz.localize(EWSDateTime(2018, 4, 6, 11, 0, 0)),
subject='Test Item',
body='hello',
)
event.save()
print('Saved event, sleeping')
gevent.sleep(1)
event = [x for x in adaptor.fetch([(event.item_id, None)])][0]
assert isinstance(event, CalendarItem)
new_subject = 'New Subject'
event.subject = new_subject
event.save()
print('Saved event with new subject, sleeping')
gevent.sleep(1)
event = [x for x in adaptor.fetch([(event.item_id, None)])][0]
assert isinstance(event, CalendarItem)
assert event.subject == new_subject
old_id = event.item_id
event.delete()
print('Deleted event, sleeping')
gevent.sleep(1)
event = [x for x in adaptor.fetch([(old_id, None)])][0]
assert not isinstance(event, CalendarItem)
print('Completed loop')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment