diff options
Diffstat (limited to 'ishtar_common/views.py')
| -rw-r--r-- | ishtar_common/views.py | 50 | 
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} | 
