本文整理汇总了Python中inbox.events.google.GoogleEventsProvider.sync_events方法的典型用法代码示例。如果您正苦于以下问题:Python GoogleEventsProvider.sync_events方法的具体用法?Python GoogleEventsProvider.sync_events怎么用?Python GoogleEventsProvider.sync_events使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类inbox.events.google.GoogleEventsProvider
的用法示例。
在下文中一共展示了GoogleEventsProvider.sync_events方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: EventSync
# 需要导入模块: from inbox.events.google import GoogleEventsProvider [as 别名]
# 或者: from inbox.events.google.GoogleEventsProvider import sync_events [as 别名]
class EventSync(BaseSyncMonitor):
"""Per-account event sync engine."""
def __init__(self, email_address, provider_name, account_id, namespace_id,
poll_frequency=300):
bind_context(self, 'eventsync', account_id)
# Only Google for now, can easily parametrize by provider later.
self.provider = GoogleEventsProvider(account_id, namespace_id)
BaseSyncMonitor.__init__(self,
account_id,
namespace_id,
email_address,
EVENT_SYNC_FOLDER_ID,
EVENT_SYNC_FOLDER_NAME,
provider_name,
poll_frequency=poll_frequency)
def sync(self):
"""Query a remote provider for updates and persist them to the
database. This function runs every `self.poll_frequency`.
"""
self.log.info('syncing events')
# Get a timestamp before polling, so that we don't subsequently miss
# remote updates that happen while the poll loop is executing.
sync_timestamp = datetime.utcnow()
with session_scope() as db_session:
account = db_session.query(Account).get(self.account_id)
last_sync = account.last_synced_events
try:
deleted_uids, calendar_changes = self.provider.sync_calendars()
except AccessNotEnabledError:
self.log.warning(
'Access to provider calendar API not enabled; bypassing sync')
return
with session_scope() as db_session:
handle_calendar_deletes(self.namespace_id, deleted_uids,
self.log, db_session)
calendar_uids_and_ids = handle_calendar_updates(self.namespace_id,
calendar_changes,
self.log,
db_session)
db_session.commit()
for (uid, id_) in calendar_uids_and_ids:
deleted_uids, event_changes = self.provider.sync_events(
uid, sync_from_time=last_sync)
with session_scope() as db_session:
handle_event_deletes(self.namespace_id, id_, deleted_uids,
self.log, db_session)
handle_event_updates(self.namespace_id, id_, event_changes,
self.log, db_session)
db_session.commit()
with session_scope() as db_session:
account = db_session.query(Account).get(self.account_id)
account.last_synced_events = sync_timestamp
db_session.commit()
示例2: test_handle_unparseable_dates
# 需要导入模块: from inbox.events.google import GoogleEventsProvider [as 别名]
# 或者: from inbox.events.google.GoogleEventsProvider import sync_events [as 别名]
def test_handle_unparseable_dates():
raw_response = [{
'id': '20140615_60o30dr564o30c1g60o30dr4ck',
'start': {'date': '0000-01-01'},
'end': {'date': '0000-01-02'},
'summary': 'test'
}]
provider = GoogleEventsProvider(1, 1)
provider._get_raw_events = mock.MagicMock(
return_value=raw_response)
updates = provider.sync_events('uid', 1)
assert len(updates) == 0
示例3: test_cancelled_override_creation
# 需要导入模块: from inbox.events.google import GoogleEventsProvider [as 别名]
# 或者: from inbox.events.google.GoogleEventsProvider import sync_events [as 别名]
def test_cancelled_override_creation():
# With showDeleted=True, we receive cancelled events (including instances
# of recurring events) as full event objects, with status = 'cancelled'.
# Test that we save this as a RecurringEventOverride rather than trying
# to delete the UID.
raw_response = [{
'created': '2012-10-09T22:35:50.000Z',
'creator': {
'displayName': 'Eben Freeman',
'email': '[email protected]',
'self': True
},
'end': {'dateTime': '2012-10-22T19:00:00-07:00'},
'etag': '"2806773858144000"',
'htmlLink': 'https://www.google.com/calendar/event?eid=FOO',
'iCalUID': '[email protected]',
'id': 'tn7krk4cekt8ag3pk6gapqqbro_20121022T170000Z',
'kind': 'calendar#event',
'organizer': {
'displayName': 'Eben Freeman',
'email': '[email protected]',
'self': True
},
'attendees': [
{'displayName': 'MITOC BOD',
'email': '[email protected]',
'responseStatus': 'accepted'},
{'displayName': 'Eben Freeman',
'email': '[email protected]',
'responseStatus': 'accepted'}
],
'originalStartTime': {
'dateTime': '2012-10-22T17:00:00-07:00',
'timeZone': 'America/Los_Angeles'
},
'recurringEventId': 'tn7krk4cekt8ag3pk6gapqqbro',
'reminders': {'useDefault': True},
'sequence': 0,
'start': {'dateTime': '2012-10-22T18:00:00-07:00',
'timeZone': 'America/Los_Angeles'},
'status': 'cancelled',
'summary': 'BOD Meeting',
}]
provider = GoogleEventsProvider(1, 1)
provider._get_raw_events = mock.MagicMock(
return_value=raw_response)
updates = provider.sync_events('uid', 1)
assert updates[0].cancelled is True
示例4: GoogleEventsProvider
# 需要导入模块: from inbox.events.google import GoogleEventsProvider [as 别名]
# 或者: from inbox.events.google.GoogleEventsProvider import sync_events [as 别名]
title="Fathers' Day",
description=None,
read_only=False,
busy=False,
start=arrow.get(2014, 06, 15),
end=arrow.get(2014, 06, 15),
all_day=True,
owner='Holidays in United States <en.usa#[email protected]>',
participants=[])
]
provider = GoogleEventsProvider(1, 1)
provider.calendars_table = {'uid': False}
provider._get_raw_events = mock.MagicMock(
return_value=raw_response)
updates = provider.sync_events('uid', 1)
# deleted events are actually only marked as
# cancelled. Look for them in the updates stream.
found_cancelled_event = False
for event in updates:
if event.uid in expected_deletes and event.status == 'cancelled':
found_cancelled_event = True
break
assert found_cancelled_event
for obtained, expected in zip(updates, expected_updates):
print obtained, expected
assert cmp_event_attrs(obtained, expected)