diff options
Diffstat (limited to 'service/pixelated')
-rw-r--r-- | service/pixelated/adapter/search.py | 2 | ||||
-rw-r--r-- | service/pixelated/adapter/soledad_querier.py | 1 | ||||
-rw-r--r-- | service/pixelated/controllers/__init__.py | 7 | ||||
-rw-r--r-- | service/pixelated/controllers/tags_controller.py | 13 |
4 files changed, 16 insertions, 7 deletions
diff --git a/service/pixelated/adapter/search.py b/service/pixelated/adapter/search.py index cd900f87..6c62ccc3 100644 --- a/service/pixelated/adapter/search.py +++ b/service/pixelated/adapter/search.py @@ -102,7 +102,7 @@ class SearchEngine(object): raw=TEXT(stored=False)) def _create_index(self): - masterkey = self.soledad_querier.get_index_masterkey + masterkey = self.soledad_querier.get_index_masterkey() storage = EncryptedFileStorage(self.INDEX_FOLDER, masterkey) return FileIndex.create(storage, self._mail_schema(), indexname='mails') diff --git a/service/pixelated/adapter/soledad_querier.py b/service/pixelated/adapter/soledad_querier.py index 2e67a5ab..a11ff7a3 100644 --- a/service/pixelated/adapter/soledad_querier.py +++ b/service/pixelated/adapter/soledad_querier.py @@ -26,7 +26,6 @@ class SoledadQuerier: def __init__(self, soledad): self.soledad = soledad - @property def get_index_masterkey(self): index_key = self.soledad.get_from_index('by-type', 'index_key') if len(index_key) == 0: diff --git a/service/pixelated/controllers/__init__.py b/service/pixelated/controllers/__init__.py index 9e447d4d..e1c13515 100644 --- a/service/pixelated/controllers/__init__.py +++ b/service/pixelated/controllers/__init__.py @@ -22,6 +22,13 @@ def respond_json(entity, request, status_code=200): return json_response +def respond_json_deferred(entity, request, status_code=200): + json_response = json.dumps(entity) + request.responseHeaders.addRawHeader(b"content-type", b"application/json") + request.code = status_code + request.write(json_response) + request.finish() + import json from home_controller import HomeController diff --git a/service/pixelated/controllers/tags_controller.py b/service/pixelated/controllers/tags_controller.py index 0b9a94ac..b6741dcc 100644 --- a/service/pixelated/controllers/tags_controller.py +++ b/service/pixelated/controllers/tags_controller.py @@ -14,8 +14,8 @@ # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. -from flask import request -from pixelated.controllers import respond_json +from pixelated.controllers import respond_json_deferred +from twisted.internet.threads import deferToThread class TagsController: @@ -25,6 +25,9 @@ class TagsController: def tags(self, request): query = request.args.get('q', [''])[0] - skip_default_tags = request.args.get('skipDefaultTags') - tags = self._search_engine.tags(query=query, skip_default_tags=skip_default_tags) - return respond_json(tags, request) + skip_default_tags = request.args.get('skipDefaultTags', [False])[0] + + d = deferToThread(lambda: self._search_engine.tags(query=query, skip_default_tags=skip_default_tags)) + d.addCallback(lambda tags: respond_json_deferred(tags, request)) + + return d |