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.py46
1 files changed, 39 insertions, 7 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 586e1f0a1..1f8b46fd6 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -33,7 +33,7 @@ from django.core.urlresolvers import reverse, NoReverseMatch
from django.db.models import Q
from django.forms.models import modelformset_factory
from django.http import HttpResponse, Http404, HttpResponseRedirect, \
- HttpResponseBadRequest
+ HttpResponseBadRequest, JsonResponse
from django.shortcuts import redirect, render
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext, ugettext_lazy as _
@@ -839,6 +839,20 @@ class IshtarMixin(object):
return context
+class JSONResponseMixin:
+ """
+ Render a JSON response.
+ """
+ def render_to_response(self, context, **response_kwargs):
+ return JsonResponse(
+ self.get_data(context),
+ **response_kwargs
+ )
+
+ def get_data(self, context):
+ return context
+
+
class LoginRequiredMixin(object):
@method_decorator(login_required)
def dispatch(self, request, *args, **kwargs):
@@ -1662,10 +1676,10 @@ document_deletion_wizard = wizards.DocumentDeletionWizard.as_view(
url_name='document_deletion',)
-class SearchQueryEdit(LoginRequiredMixin, FormView):
- template_name = 'ishtar/forms/search_query.html'
- form_class = forms.SearchQueryForm
-
+class SearchQueryMixin(object):
+ """
+ Manage content type and profile init
+ """
def dispatch(self, request, *args, **kwargs):
if not request.user.pk:
raise Http404()
@@ -1684,7 +1698,12 @@ class SearchQueryEdit(LoginRequiredMixin, FormView):
)
except ContentType.DoesNotExist:
raise Http404()
- return super(SearchQueryEdit, self).dispatch(request, *args, **kwargs)
+ return super(SearchQueryMixin, self).dispatch(request, *args, **kwargs)
+
+
+class SearchQueryEdit(SearchQueryMixin, LoginRequiredMixin, FormView):
+ template_name = 'ishtar/forms/search_query.html'
+ form_class = forms.SearchQueryForm
def get_form_kwargs(self):
kwargs = super(SearchQueryEdit, self).get_form_kwargs()
@@ -1703,4 +1722,17 @@ class SearchQueryEdit(LoginRequiredMixin, FormView):
return HttpResponseRedirect(self.get_success_url())
def get_success_url(self):
- return reverse('success')
+ return reverse('success', args=['bookmark'])
+
+
+class BookmarkList(SearchQueryMixin, JSONResponseMixin, LoginRequiredMixin,
+ TemplateView):
+ def get_data(self, context):
+ q = models.SearchQuery.objects.filter(
+ content_type=self.content_type,
+ profile=self.profile
+ )
+ return {
+ 'bookmarks': [
+ {'label': sq.label, 'query': sq.query} for sq in q.all()]
+ }