X-Git-Url: https://git.madduck.net/etc/offlineimap.git/blobdiff_plain/aefbbc15b27499b05113fa342fa165b3ab4341ba..741c74bb6415a8559e379bd4510c4cb5817a7f47:/.offlineimap/helper.py?ds=sidebyside diff --git a/.offlineimap/helper.py b/.offlineimap/helper.py index 15824d2..13e158f 100644 --- a/.offlineimap/helper.py +++ b/.offlineimap/helper.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- -import re, os, stat, time, atexit +import re -base_excludes = ['delayed', 'outgoing', 'Trash', 'Sent', 'Queue'] -full_excludes_re = ['discard', 'spool', 'spam', 'store(\..+)?'] -prioritised = ['outgoing','resubmit','drafts','inbox','phd','ul','debian','sudetia','admin','retrain'] +base_excludes = ['delayed', 'outgoing', 'Trash', 'Queue', 'inbox', 'Spam', 'Drafts', 'scratch'] +base_excludes_re = [ '[Ss]ent.*' ] +full_excludes_re = ['discard', 'spool', 'spam', 'store/.+'] +prioritised = ['resubmit','drafts','inbox','ardex','kbkg','toni','tahi','debian','mtfk','admin','retrain'] deprioritised = ['discard','spam','store','spool'] -def py_foldersort_seamus(x, y): +def py_foldersort_main(x, y): for prefix in prioritised: if x.startswith(prefix): return -1 @@ -18,45 +19,36 @@ def py_foldersort_seamus(x, y): return +1 elif y.startswith(prefix): return -1 - return cmp(x, y) + return (x > y) - (x < y) -def py_nametrans_seamus(x): +def py_nametrans(x): return re.sub('^INBOX', 'inbox', x) -def should_do_full_sync(): - FILE = os.path.expanduser('~/.var/offlineimap/lastrun') - INTERVAL = 86400/2 - now = int(time.time()) +def py_folderfilter_main(x): + if x in base_excludes: + return False - try: - mtime = os.stat(FILE)[stat.ST_MTIME] - except OSError: - mtime = 0 + elif re.search('^(' + '|'.join(base_excludes_re) + ')', x): + return False - since = now - mtime - if since > INTERVAL: - file(FILE, 'wb').close() + elif re.search('^(' + '|'.join(full_excludes_re) + ')', x): + return False + + return True + +def py_foldersort_bulk(x, y): + if x == 'spool': return -1 + if y == 'spool': return 1 + if x in ('discard', 'spam'): return 1 + if y in ('discard', 'spam'): return -1 + +def py_folderfilter_bulk(x): + if re.search('^(' + '|'.join(full_excludes_re) + ')', x): return True - print 'Partial sync; next full sync in %d seconds...' \ - % (INTERVAL - since) return False -do_full_sync = should_do_full_sync() -def py_folderfilter_seamus(x): - - if do_full_sync: - return x not in base_excludes - else: - if x in base_excludes: - return False - if x in ('spool', 'discard', 'spam'): - return False - if re.search('^store(\..+)?', x): - return False - return True - def py_folderfilter_mbnames(acct, x): - full_excludes_re_mbnames = ['retrain/(sp|h)am'] + full_excludes_re - return acct in ['seamus.madduck.net'] \ + full_excludes_re_mbnames = ['retrain(/(sp|h)am)?$'] + full_excludes_re + return acct in ['madduck.net', 'madduck.net_bulk'] \ and not re.search('^(' + '|'.join(full_excludes_re_mbnames) + ')', x)