当前位置: 首页>>代码示例>>Python>>正文


Python GoogleEventsProvider.sync_events方法代码示例

本文整理汇总了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()
开发者ID:Analect,项目名称:sync-engine,代码行数:62,代码来源:remote_sync.py

示例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
开发者ID:nagyistge,项目名称:nylas-sync-engine,代码行数:14,代码来源:test_google_events.py

示例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
开发者ID:nohobby,项目名称:sync-engine,代码行数:51,代码来源:test_google_events.py

示例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)
开发者ID:nohobby,项目名称:sync-engine,代码行数:32,代码来源:test_google_events.py


注:本文中的inbox.events.google.GoogleEventsProvider.sync_events方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。