summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/adapter/search.py2
-rw-r--r--service/pixelated/adapter/soledad_querier.py1
-rw-r--r--service/pixelated/controllers/__init__.py7
-rw-r--r--service/pixelated/controllers/tags_controller.py13
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