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 | 5848f96f633d63248eefbabd325b17f6e36bd0e8 (patch) | |
| tree | 59990ede30849daf44a9323d7e9a18e17d707285 /ishtar_common/views.py | |
| parent | 721229d393b6820619c5a006fa4b97889315932a (diff) | |
| download | Ishtar-5848f96f633d63248eefbabd325b17f6e36bd0e8.tar.bz2 Ishtar-5848f96f633d63248eefbabd325b17f6e36bd0e8.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') | 
