X-Git-Url: https://git.madduck.net/etc/offlineimap.git/blobdiff_plain/bffb2255c01322945ec96dec14f9bdfc6e92a02a..2c47d04aa4ac78b142e62c116a98c894125107a2:/.offlineimap/helper.py?ds=sidebyside diff --git a/.offlineimap/helper.py b/.offlineimap/helper.py index 99218fb..674adf3 100644 --- a/.offlineimap/helper.py +++ b/.offlineimap/helper.py @@ -1,61 +1,50 @@ -def py_foldersort_seamus(x, y): - prioritised = ('outgoing','resubmit','drafts','inbox','phd',ul','debian','sudetia','admin','retrain') - deprioritised = ('discard','spam','store','spool') +# -*- coding: utf-8 -*- + +import re + +base_excludes = ['delayed', 'outgoing', 'Trash', 'Sent', 'Queue', 'sent', 'inbox'] +full_excludes_re = ['discard', 'spool', 'spam', 'store\..+'] +prioritised = ['outgoing','resubmit','drafts','INBOX','ardex','immo','debian','sudetia','admin','retrain'] +deprioritised = ['discard','spam','store','spool'] + +def py_foldersort_main(x, y): for prefix in prioritised: - if x.startswith(prefix): + if x.name.startswith(prefix): return -1 - elif y.startswith(prefix): + elif y.name.startswith(prefix): return +1 for prefix in deprioritised: - if x.startswith(prefix): + if x.name.startswith(prefix): return +1 - elif y.startswith(prefix): + elif y.name.startswith(prefix): return -1 return cmp(x, y) -import re - -def py_nametrans_seamus(x): +def py_nametrans(x): return re.sub('^INBOX', 'inbox', x) -def should_do_full_sync(): - import os, stat, time - FILE = os.path.expanduser('~/.var/offlineimap/lastrun') - INTERVAL = 30 - now = int(time.time()) - - try: - mtime = os.stat(FILE)[stat.ST_MTIME] - except OSError: - mtime = 0 - - since = now - mtime - print 'now=%d mtime=%d since=%d INTERVAL=%d' \ - % (now, mtime, since, INTERVAL) - if since > INTERVAL: - file(FILE, 'wb').close() - print 'Running a full sync...' - return True +def py_folderfilter_main(x): + if x in base_excludes: + return False - print 'Running a partial sync, next full sync in %d seconds...' \ - % (INTERVAL - since) - return False + elif re.search('^(' + '|'.join(full_excludes_re) + ')', x): + return False -#do_full = should_do_full_sync() -do_full = True -def py_folderfilter_seamus(x): - base_excludes = ['delayed', 'outgoing', 'Trash', 'Sent'] - - if do_full: - 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_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 + + return False + def py_folderfilter_mbnames(acct, x): - return not re.search('^(store(/.+)?|retrain/.+|spool|discard|spam)', x) + 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)