diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-07-09 20:59:24 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-08-13 18:26:03 +0200 |
commit | a2e2e57d792c8ad9f1ced7f3807b97635f38c36d (patch) | |
tree | 59990ede30849daf44a9323d7e9a18e17d707285 /ishtar_common/views.py | |
parent | f642961947a1a4fb79e49ff764d93b3f0ab474db (diff) | |
download | Ishtar-a2e2e57d792c8ad9f1ced7f3807b97635f38c36d.tar.bz2 Ishtar-a2e2e57d792c8ad9f1ced7f3807b97635f38c36d.zip |
Save search queries
Diffstat (limited to 'ishtar_common/views.py')
-rw-r--r-- | ishtar_common/views.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 5a35c2509..586e1f0a1 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -27,6 +27,7 @@ import unicodecsv from django.conf import settings from django.contrib.auth import logout from django.contrib.auth.decorators import login_required +from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse, NoReverseMatch from django.db.models import Q @@ -1659,3 +1660,47 @@ document_deletion_wizard = wizards.DocumentDeletionWizard.as_view( document_deletion_steps, label=_(u"Document deletion"), url_name='document_deletion',) + + +class SearchQueryEdit(LoginRequiredMixin, FormView): + template_name = 'ishtar/forms/search_query.html' + form_class = forms.SearchQueryForm + + 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() + self.app_label = kwargs.get('app_label') + self.model = kwargs.get('model') + try: + self.content_type = ContentType.objects.get( + app_label=self.app_label.replace('-', '_'), + model=self.model.replace('-', '_') + ) + except ContentType.DoesNotExist: + raise Http404() + return super(SearchQueryEdit, self).dispatch(request, *args, **kwargs) + + def get_form_kwargs(self): + kwargs = super(SearchQueryEdit, self).get_form_kwargs() + kwargs['profile'] = self.profile + kwargs['content_type'] = self.content_type + return kwargs + + def get_context_data(self, **kwargs): + data = super(SearchQueryEdit, self).get_context_data(**kwargs) + data['app_label'] = self.app_label + data['model'] = self.model + return data + + def form_valid(self, form): + form.save() + return HttpResponseRedirect(self.get_success_url()) + + def get_success_url(self): + return reverse('success') |