summaryrefslogtreecommitdiff
path: root/ishtar_common/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r--ishtar_common/views.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 1f8b46fd6..c713b9972 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -21,6 +21,7 @@ import csv
import datetime
import json
import logging
+import importlib
import unicodedata
import unicodecsv
@@ -1676,6 +1677,19 @@ document_deletion_wizard = wizards.DocumentDeletionWizard.as_view(
url_name='document_deletion',)
+def get_bookmark(request, pk):
+ try:
+ sq = models.SearchQuery.objects.get(
+ pk=pk,
+ profile__person__ishtaruser__user_ptr=request.user)
+ except models.SearchQuery.DoesNotExist:
+ raise Http404()
+ slug = sq.content_type.model_class().SLUG
+ return redirect(
+ reverse(slug + '_search') + "?bookmark={}".format(sq.pk)
+ )
+
+
class SearchQueryMixin(object):
"""
Manage content type and profile init
@@ -1736,3 +1750,39 @@ class BookmarkList(SearchQueryMixin, JSONResponseMixin, LoginRequiredMixin,
'bookmarks': [
{'label': sq.label, 'query': sq.query} for sq in q.all()]
}
+
+
+class AlertList(JSONResponseMixin, LoginRequiredMixin,
+ TemplateView):
+ def dispatch(self, request, *args, **kwargs):
+ if not request.user.pk:
+ raise Http404()
+ try:
+ self.profile = models.UserProfile.objects.get(
+ current=True, person__ishtaruser__user_ptr=request.user)
+ except models.UserProfile.DoesNotExist:
+ # no current profile
+ raise Http404()
+ return super(AlertList, self).dispatch(request, *args, **kwargs)
+
+ def get_data(self, context):
+ q = models.SearchQuery.objects.filter(
+ profile=self.profile,
+ is_alert=True
+ )
+ alerts = []
+ for sq in q.all():
+ model = sq.content_type.model_class()
+ module = model.__module__.split('.')[0]
+ views = importlib.import_module(module + '.views')
+ get_view = getattr(views, "get_" + model.SLUG)
+ nb = get_view(
+ self.request,
+ query={'search_vector': sq.query},
+ count=True
+ )
+ alerts.append(
+ {'label': sq.label, 'query_id': sq.pk,
+ 'number': nb}
+ )
+ return {'alerts': alerts}