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


Python ImapUid.update_flags_and_labels方法代码示例

本文整理汇总了Python中inbox.models.backends.imap.ImapUid.update_flags_and_labels方法的典型用法代码示例。如果您正苦于以下问题:Python ImapUid.update_flags_and_labels方法的具体用法?Python ImapUid.update_flags_and_labels怎么用?Python ImapUid.update_flags_and_labels使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在inbox.models.backends.imap.ImapUid的用法示例。


在下文中一共展示了ImapUid.update_flags_and_labels方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: create_imap_message

# 需要导入模块: from inbox.models.backends.imap import ImapUid [as 别名]
# 或者: from inbox.models.backends.imap.ImapUid import update_flags_and_labels [as 别名]
def create_imap_message(db_session, log, account, folder, msg):
    """ IMAP-specific message creation logic.

    This is the one function in this file that gets to take an account
    object instead of an account_id, because we need to relate the
    account to ImapUids for versioning to work, since it needs to look
    up the namespace.

    Returns
    -------
    imapuid : inbox.models.tables.imap.ImapUid
        New db object, which links to new Message and Block objects through
        relationships. All new objects are uncommitted.
    """
    new_msg = Message.create_from_synced(account=account, mid=msg.uid,
                                         folder_name=folder.name,
                                         received_date=msg.internaldate,
                                         body_string=msg.body)

    # Check to see if this is a copy of a message that was first created
    # by the Inbox API. If so, don't create a new object; just use the old one.
    existing_copy = reconcile_message(new_msg, db_session)
    if existing_copy is not None:
        new_msg = existing_copy

    imapuid = ImapUid(account=account, folder=folder, msg_uid=msg.uid,
                      message=new_msg)
    imapuid.update_flags_and_labels(msg.flags, msg.g_labels)

    new_msg.is_draft = imapuid.is_draft
    new_msg.is_read = imapuid.is_seen

    update_contacts_from_message(db_session, new_msg, account.namespace)

    return imapuid
开发者ID:apolmig,项目名称:inbox,代码行数:37,代码来源:common.py

示例2: resync_uids_impl

# 需要导入模块: from inbox.models.backends.imap import ImapUid [as 别名]
# 或者: from inbox.models.backends.imap.ImapUid import update_flags_and_labels [as 别名]
 def resync_uids_impl(self):
     # NOTE: first, let's check if the UIVDALIDITY change was spurious, if
     # it is, just discard it and go on, if it isn't, drop the relevant
     # entries (filtering by account and folder IDs) from the imapuid table,
     # download messages, if necessary - in case a message has changed UID -
     # update UIDs, and discard orphaned messages. -siro
     with mailsync_session_scope() as db_session:
         folder_info = db_session.query(ImapFolderInfo). \
             filter_by(account_id=self.account_id,
                       folder_id=self.folder_id).one()
         cached_uidvalidity = folder_info.uidvalidity
         with self.conn_pool.get() as crispin_client:
             crispin_client.select_folder(self.folder_name,
                                          lambda *args: True)
             uidvalidity = crispin_client.selected_uidvalidity
             if uidvalidity <= cached_uidvalidity:
                 log.debug('UIDVALIDITY unchanged')
                 return
             invalid_uids = db_session.query(ImapUid). \
                 filter_by(account_id=self.account_id,
                           folder_id=self.folder_id)
             data_sha256_message = {uid.message.data_sha256: uid.message
                                    for uid in invalid_uids}
             for uid in invalid_uids:
                 db_session.delete(uid)
             # NOTE: this is necessary (and OK since it doesn't persist any
             # data) to maintain the order between UIDs deletion and
             # insertion. Without this, I was seeing constraints violation
             # on the imapuid table. -siro
             db_session.flush()
             remote_uids = crispin_client.all_uids()
             for remote_uid in remote_uids:
                 raw_message = crispin_client.uids([remote_uid])[0]
                 data_sha256 = sha256(raw_message.body).hexdigest()
                 if data_sha256 in data_sha256_message:
                     message = data_sha256_message[data_sha256]
                     uid = ImapUid(msg_uid=raw_message.uid,
                                   message_id=message.id,
                                   account_id=self.account_id,
                                   folder_id=self.folder_id)
                     uid.update_flags_and_labels(raw_message.flags,
                                                 raw_message.g_labels)
                     db_session.add(uid)
                     del data_sha256_message[data_sha256]
                 else:
                     self.download_and_commit_uids(crispin_client,
                                                   self.folder_name,
                                                   [remote_uid])
                 self.heartbeat_status.publish()
                 # FIXME: do we want to throttle the account when recovering
                 # from UIDVALIDITY changes? -siro
         for message in data_sha256_message.itervalues():
             db_session.delete(message)
         folder_info.uidvalidity = uidvalidity
         folder_info.highestmodseq = None
开发者ID:biddyweb,项目名称:sync-engine,代码行数:57,代码来源:generic.py


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