Пример #1
0
    def filter_keywords(self, session, msg_mid, msg, keywords, is_new=True):
        keywordmap = {}
        msg_idx_list = [msg_mid]
        for kw in keywords:
            keywordmap[unicode(kw)] = msg_idx_list

        import mailpile.plugins.tags
        ftypes = set(mailpile.plugins.tags.FILTER_TYPES)
        if not is_new:
            ftypes -= set(['incoming'])

        for (fid, terms, tags, comment, ftype
                ) in session.config.get_filters(types=ftypes):
            if (terms == '*' or
                    len(self.search(None, terms.split(),
                                    keywords=keywordmap)) > 0):
                for t in tags.split():
                    for fmt in ('%s:in', '%s:tag'):
                        kw = unicode(fmt % t[1:])
                        if kw in keywordmap:
                            del keywordmap[kw]
                    if t[0] != '-':
                        keywordmap[unicode('%s:in' % t[1:])] = msg_idx_list

        return set(keywordmap.keys())
Пример #2
0
 def apply_filters(self, session, filter_on, msg_mids=None, msg_idxs=None):
     if msg_idxs is None:
         msg_idxs = [int(mid, 36) for mid in msg_mids]
     if not msg_idxs:
         return
     for fid, trms, tags, c, t in session.config.get_filters(filter_on=filter_on):
         for t in tags.split():
             tag_id = t[1:].split(":")[0]
             if t[0] == "-":
                 self.remove_tag(session, tag_id, msg_idxs=set(msg_idxs))
             else:
                 self.add_tag(session, tag_id, msg_idxs=set(msg_idxs))