Add new expansion key for mbnames.peritem config variable

It is called localfolders and holds expanded name for the same
variable for the local repository of the account that is being
processed.

GitHub issue: https://github.com/OfflineIMAP/offlineimap/issues/21
Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
This commit is contained in:
Eygene Ryabinkin 2013-08-27 18:11:57 +04:00
parent 8b6f10e2e7
commit 95aea5e489
5 changed files with 22 additions and 3 deletions

View File

@ -23,6 +23,9 @@ WIP (add new stuff for the next release)
(Andreas Mack) (Andreas Mack)
* Allow to set message access and modification timestamps based * Allow to set message access and modification timestamps based
on the "Date" header of the message itself. (Cyril Russo) on the "Date" header of the message itself. (Cyril Russo)
* "peritem" format string for [mbnames] got new expansion key
"localfolders" that corresponds to the same parameter of the
local repository for the account being processed.
* [regression] pass folder names to the foldersort function, * [regression] pass folder names to the foldersort function,
revert the documented behaviour revert the documented behaviour

View File

@ -129,6 +129,12 @@ accounts = Test
# #
# The header, peritem, sep, and footer are all Python expressions passed # The header, peritem, sep, and footer are all Python expressions passed
# through eval, so you can (and must) use Python quoting. # through eval, so you can (and must) use Python quoting.
#
# The following hash key are available to the expansion for 'peritem':
# - accountname: the name of the corresponding account;
# - foldername: the name of the folder;
# - localfolders: path to the local directory hosting all Maildir
# folders for the account.
enabled = no enabled = no
filename = ~/Mutt/muttrc.mailboxes filename = ~/Mutt/muttrc.mailboxes

View File

@ -390,7 +390,8 @@ def syncfolder(account, remotefolder, quick):
localfolder = account.get_local_folder(remotefolder) localfolder = account.get_local_folder(remotefolder)
# Write the mailboxes # Write the mailboxes
mbnames.add(account.name, localfolder.getname()) mbnames.add(account.name, localfolder.getname(),
localrepos.getlocalroot())
# Load status folder. # Load status folder.
statusfolder = statusrepos.getfolder(remotefolder.getvisiblename().\ statusfolder = statusrepos.getfolder(remotefolder.getvisiblename().\

View File

@ -21,6 +21,7 @@ import re # for folderfilter
from threading import Lock from threading import Lock
boxes = {} boxes = {}
localroots = {}
config = None config = None
accounts = None accounts = None
mblock = Lock() mblock = Lock()
@ -30,9 +31,10 @@ def init(conf, accts):
config = conf config = conf
accounts = accts accounts = accts
def add(accountname, foldername): def add(accountname, foldername, localfolders):
if not accountname in boxes: if not accountname in boxes:
boxes[accountname] = [] boxes[accountname] = []
localroots[accountname] = localfolders
if not foldername in boxes[accountname]: if not foldername in boxes[accountname]:
boxes[accountname].append(foldername) boxes[accountname].append(foldername)
@ -64,10 +66,12 @@ def genmbnames():
{'re': re}) {'re': re})
itemlist = [] itemlist = []
for accountname in boxes.keys(): for accountname in boxes.keys():
localroot = localroots[accountname]
for foldername in boxes[accountname]: for foldername in boxes[accountname]:
if folderfilter(accountname, foldername): if folderfilter(accountname, foldername):
itemlist.append({'accountname': accountname, itemlist.append({'accountname': accountname,
'foldername': foldername}) 'foldername': foldername,
'localfolders': localroot})
itemlist.sort(key = mb_sort_keyfunc) itemlist.sort(key = mb_sort_keyfunc)
format_string = config.get("mbnames", "peritem", raw=1) format_string = config.get("mbnames", "peritem", raw=1)
itemlist = [format_string % d for d in itemlist] itemlist = [format_string % d for d in itemlist]

View File

@ -259,3 +259,8 @@ class BaseRepository(CustomConfig.ConfigHelperMixin, object):
for the threads to terminate.""" for the threads to terminate."""
pass pass
def getlocalroot(self):
""" Local root folder for storing messages.
Will not be set for remote repositories."""
return None