python: Do not implicitely call maildir_flags_to_tags etc

In order to remain consistent with the underlying C API, we do not
automatically synchronize notmuch tags and maildir flags anymore.

The underlying functions Message.maildir_flags_to_tags and
Message.tags_to_maildir_flags still exist and are available to the user.

Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
(cherry picked from commit e59eaa5ddd)
This commit is contained in:
Sebastian Spaeth 2011-06-24 08:44:06 +02:00 committed by David Bremner
parent dd544f5dc6
commit 76399e5f73
2 changed files with 31 additions and 23 deletions

View file

@ -261,10 +261,10 @@ class Database(object):
# return the Directory, init it with the absolute path # return the Directory, init it with the absolute path
return Directory(abs_dirpath, dir_p, self) return Directory(abs_dirpath, dir_p, self)
def add_message(self, filename): def add_message(self, filename, sync_maildir_flags=False):
"""Adds a new message to the database """Adds a new message to the database
`filename` should be a path relative to the path of the open :param filename: should be a path relative to the path of the open
database (see :meth:`get_path`), or else should be an absolute database (see :meth:`get_path`), or else should be an absolute
filename with initial components that match the path of the filename with initial components that match the path of the
database. database.
@ -274,8 +274,12 @@ class Database(object):
notmuch database will reference the filename, and will not copy the notmuch database will reference the filename, and will not copy the
entire contents of the file. entire contents of the file.
If the message contains Maildir flags, we will -depending on the :param sync_maildir_flags: If the message contains Maildir
notmuch configuration- sync those tags to initial notmuch tags. flags, we will -depending on the notmuch configuration- sync
those tags to initial notmuch tags, if set to `True`. It is
`False` by default to remain consistent with the libnotmuch
API. You might want to look into the underlying method
:meth:`Message.maildir_flags_to_tags`.
:returns: On success, we return :returns: On success, we return
@ -317,8 +321,10 @@ class Database(object):
if not status in [STATUS.SUCCESS, STATUS.DUPLICATE_MESSAGE_ID]: if not status in [STATUS.SUCCESS, STATUS.DUPLICATE_MESSAGE_ID]:
raise NotmuchError(status) raise NotmuchError(status)
#construct Message(), sync initial tags from Maildir flags and return #construct Message() and return
msg = Message(msg_p, self) msg = Message(msg_p, self)
#automatic sync initial tags from Maildir flags
if sync_maildir_flags:
msg.maildir_flags_to_tags() msg.maildir_flags_to_tags()
return (msg, status) return (msg, status)

View file

@ -470,7 +470,7 @@ class Message(object):
raise NotmuchError(STATUS.NULL_POINTER) raise NotmuchError(STATUS.NULL_POINTER)
return Tags(tags_p, self) return Tags(tags_p, self)
def add_tag(self, tag, sync_maildir_flags=True): def add_tag(self, tag, sync_maildir_flags=False):
"""Adds a tag to the given message """Adds a tag to the given message
Adds a tag to the current message. The maximal tag length is defined in Adds a tag to the current message. The maximal tag length is defined in
@ -480,11 +480,11 @@ class Message(object):
:param sync_maildir_flags: If notmuch configuration is set to do :param sync_maildir_flags: If notmuch configuration is set to do
this, add maildir flags corresponding to notmuch tags. See this, add maildir flags corresponding to notmuch tags. See
:meth:`tags_to_maildir_flags`. Use False if you want to underlying method :meth:`tags_to_maildir_flags`. Use False
add/remove many tags on a message without having to if you want to add/remove many tags on a message without
physically rename the file every time. Do note, that this having to physically rename the file every time. Do note,
will do nothing when a message is frozen, as tag changes that this will do nothing when a message is frozen, as tag
will not be committed to the database yet. changes will not be committed to the database yet.
:returns: STATUS.SUCCESS if the tag was successfully added. :returns: STATUS.SUCCESS if the tag was successfully added.
Raises an exception otherwise. Raises an exception otherwise.
@ -514,7 +514,7 @@ class Message(object):
self.tags_to_maildir_flags() self.tags_to_maildir_flags()
return STATUS.SUCCESS return STATUS.SUCCESS
def remove_tag(self, tag, sync_maildir_flags=True): def remove_tag(self, tag, sync_maildir_flags=False):
"""Removes a tag from the given message """Removes a tag from the given message
If the message has no such tag, this is a non-operation and If the message has no such tag, this is a non-operation and
@ -523,11 +523,11 @@ class Message(object):
:param tag: String with a 'tag' to be removed. :param tag: String with a 'tag' to be removed.
:param sync_maildir_flags: If notmuch configuration is set to do :param sync_maildir_flags: If notmuch configuration is set to do
this, add maildir flags corresponding to notmuch tags. See this, add maildir flags corresponding to notmuch tags. See
:meth:`tags_to_maildir_flags`. Use False if you want to underlying method :meth:`tags_to_maildir_flags`. Use False
add/remove many tags on a message without having to if you want to add/remove many tags on a message without
physically rename the file every time. Do note, that this having to physically rename the file every time. Do note,
will do nothing when a message is frozen, as tag changes that this will do nothing when a message is frozen, as tag
will not be committed to the database yet. changes will not be committed to the database yet.
:returns: STATUS.SUCCESS if the tag was successfully removed or if :returns: STATUS.SUCCESS if the tag was successfully removed or if
the message had no such tag. the message had no such tag.
@ -559,12 +559,13 @@ class Message(object):
def remove_all_tags(self, sync_maildir_flags=True): def remove_all_tags(self, sync_maildir_flags=False):
"""Removes all tags from the given message. """Removes all tags from the given message.
See :meth:`freeze` for an example showing how to safely See :meth:`freeze` for an example showing how to safely
replace tag values. replace tag values.
:param sync_maildir_flags: If notmuch configuration is set to do :param sync_maildir_flags: If notmuch configuration is set to do
this, add maildir flags corresponding to notmuch tags. See this, add maildir flags corresponding to notmuch tags. See
:meth:`tags_to_maildir_flags`. Use False if you want to :meth:`tags_to_maildir_flags`. Use False if you want to
@ -703,8 +704,9 @@ class Message(object):
Also, if this filename is in a directory named "new", rename it Also, if this filename is in a directory named "new", rename it
to be within the neighboring directory named "cur". to be within the neighboring directory named "cur".
Usually, you do not need to call this manually as Do note that calling this method while a message is frozen might
tag changing methods should be implicitly calling it. not work yet, as the modified tags have not been committed yet
to the database.
:returns: a :class:`STATUS`. In short, you want to see :returns: a :class:`STATUS`. In short, you want to see
notmuch.STATUS.SUCCESS here. See there for details.""" notmuch.STATUS.SUCCESS here. See there for details."""
@ -730,8 +732,8 @@ class Message(object):
is, the flags from the multiple filenames are combined with the is, the flags from the multiple filenames are combined with the
logical OR operator.) logical OR operator.)
Usually, you do not need to call this manually as As a convenience, you can set the sync_maildir_flags parameter in
:meth:`Database.add_message` implicitly calls it. :meth:`Database.add_message` to implicitly call this.
:returns: a :class:`STATUS`. In short, you want to see :returns: a :class:`STATUS`. In short, you want to see
notmuch.STATUS.SUCCESS here. See there for details.""" notmuch.STATUS.SUCCESS here. See there for details."""