From: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
To: Notmuch Mail <notmuch@notmuchmail.org>
Subject: [PATCH 12/12] python: add try_decrypt argument to Database.index_file()
Date: Fri, 20 Oct 2017 22:25:49 -0400 [thread overview]
Message-ID: <20171021022549.2724-13-dkg@fifthhorseman.net> (raw)
In-Reply-To: <20171021022549.2724-1-dkg@fifthhorseman.net>
We adopt a pythonic idiom here with an optional argument, rather than
exposing the user to the C indexopts object directly.
---
bindings/python/notmuch/database.py | 37 ++++++++++++++++++++++++++++++++++---
bindings/python/notmuch/globals.py | 5 +++++
2 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py
index 1279804a..ce80c15e 100644
--- a/bindings/python/notmuch/database.py
+++ b/bindings/python/notmuch/database.py
@@ -20,7 +20,7 @@ Copyright 2010 Sebastian Spaeth <Sebastian@SSpaeth.de>
import os
import codecs
import warnings
-from ctypes import c_char_p, c_void_p, c_uint, byref, POINTER
+from ctypes import c_char_p, c_void_p, c_uint, c_int, byref, POINTER
from .compat import SafeConfigParser
from .globals import (
nmlib,
@@ -28,6 +28,7 @@ from .globals import (
_str,
NotmuchDatabaseP,
NotmuchDirectoryP,
+ NotmuchIndexoptsP,
NotmuchMessageP,
NotmuchTagsP,
)
@@ -400,13 +401,25 @@ class Database(object):
# return the Directory, init it with the absolute path
return Directory(abs_dirpath, dir_p, self)
+ _get_default_indexopts = nmlib.notmuch_database_get_default_indexopts
+ _get_default_indexopts.argtypes = [NotmuchDatabaseP]
+ _get_default_indexopts.restype = NotmuchIndexoptsP
+
+ _indexopts_set_try_decrypt = nmlib.notmuch_indexopts_set_try_decrypt
+ _indexopts_set_try_decrypt.argtypes = [NotmuchIndexoptsP, c_int]
+ _indexopts_set_try_decrypt.restype = None
+
+ _indexopts_destroy = nmlib.notmuch_indexopts_destroy
+ _indexopts_destroy.argtypes = [NotmuchIndexoptsP]
+ _indexopts_destroy.restype = None
+
_index_file = nmlib.notmuch_database_index_file
_index_file.argtypes = [NotmuchDatabaseP, c_char_p,
c_void_p,
POINTER(NotmuchMessageP)]
_index_file.restype = c_uint
- def index_file(self, filename, sync_maildir_flags=False):
+ def index_file(self, filename, sync_maildir_flags=False, try_decrypt=None):
"""Adds a new message to the database
:param filename: should be a path relative to the path of the
@@ -427,6 +440,15 @@ class Database(object):
API. You might want to look into the underlying method
:meth:`Message.maildir_flags_to_tags`.
+ :param try_decrypt: If the message contains any encrypted
+ parts, and try_decrypt is set to true, notmuch will try to
+ decrypt the message and index the cleartext. if
+ try_decrypt is set to false, it will never try to decrypt
+ during indexing. If it is set to None (the default), then
+ the database itself will decide whether to decrypt, based
+ on the `index.try_decrypt` configuration setting (which is
+ stored in the database).
+
:returns: On success, we return
1) a :class:`Message` object that can be used for things
@@ -454,10 +476,19 @@ class Database(object):
:attr:`STATUS`.READ_ONLY_DATABASE
Database was opened in read-only mode so no message can
be added.
+
"""
self._assert_db_is_initialized()
msg_p = NotmuchMessageP()
- status = self._index_file(self._db, _str(filename), c_void_p(None), byref(msg_p))
+ indexopts = c_void_p(None)
+ if try_decrypt is not None:
+ indexopts = self._get_default_indexopts(self._db)
+ self._indexopts_set_try_decrypt(indexopts, try_decrypt)
+
+ status = self._index_file(self._db, _str(filename), indexopts, byref(msg_p))
+
+ if indexopts:
+ self._indexopts_destroy(indexopts)
if not status in [STATUS.SUCCESS, STATUS.DUPLICATE_MESSAGE_ID]:
raise NotmuchError(status)
diff --git a/bindings/python/notmuch/globals.py b/bindings/python/notmuch/globals.py
index b1eec2cf..71426c84 100644
--- a/bindings/python/notmuch/globals.py
+++ b/bindings/python/notmuch/globals.py
@@ -88,3 +88,8 @@ NotmuchDirectoryP = POINTER(NotmuchDirectoryS)
class NotmuchFilenamesS(Structure):
pass
NotmuchFilenamesP = POINTER(NotmuchFilenamesS)
+
+
+class NotmuchIndexoptsS(Structure):
+ pass
+NotmuchIndexoptsP = POINTER(NotmuchIndexoptsS)
--
2.14.2
next prev parent reply other threads:[~2017-10-21 2:26 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-21 2:25 cleartext indexing, revision 7 Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 01/12] index: implement notmuch_indexopts_t with try_decrypt Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 02/12] doc: add notmuch-properties(7) Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 03/12] reindex: drop all properties named with prefix "index." Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 04/12] crypto: index encrypted parts when indexopts try_decrypt is set Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 05/12] config: test whether an item is stored in the database by name Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 06/12] config: define new option index.try_decrypt Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 07/12] cli: set up shared command-line arguments for indexing Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 08/12] tests: emacs_fcc_message: allow passing --arguments to notmuch new Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 09/12] cli/new: add --try-decrypt=(true|false) Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 10/12] cli/insert: " Daniel Kahn Gillmor
2017-10-21 2:25 ` [PATCH 11/12] cli/reindex: " Daniel Kahn Gillmor
2017-10-21 2:25 ` Daniel Kahn Gillmor [this message]
2017-10-25 5:47 ` [PATCH 12/12] python: add try_decrypt argument to Database.index_file() Daniel Kahn Gillmor
2017-10-22 0:02 ` cleartext indexing, revision 7 David Bremner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171021022549.2724-13-dkg@fifthhorseman.net \
--to=dkg@fifthhorseman.net \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).