def py_foldersort_seamus(x, y): prioritised = ('outgoing','resubmit','drafts','inbox','phd','ul','debian','sudetia','admin','retrain') deprioritised = ('discard','spam','store','spool') for prefix in prioritised: if x.startswith(prefix): return -1 elif y.startswith(prefix): return +1 for prefix in deprioritised: if x.startswith(prefix): return +1 elif y.startswith(prefix): return -1 return cmp(x, y) import re def py_nametrans_seamus(x): return re.sub('^INBOX', 'inbox', x) def should_do_full_sync(): import os, stat, time FILE = os.path.expanduser('~/.var/offlineimap/lastrun') INTERVAL = 86400/2 now = int(time.time()) try: mtime = os.stat(FILE)[stat.ST_MTIME] except OSError: mtime = 0 since = now - mtime if since > INTERVAL: file(FILE, 'wb').close() 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): base_excludes = ['delayed', 'outgoing', 'Trash', 'Sent'] 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): return acct in ['seamus.madduck.net'] \ and not re.search('^(store(/.+)?|retrain/(ham|spam)|spool|discard|spam)', x)