diff --git a/matmat/templates/matmat/search_form.jinja b/matmat/templates/matmat/search_form.jinja index 4c674db980c49cf98df0fd061aa8d082636b6ce6..b01eaaa04be8005626617201d8b7f23341ec9899 100644 --- a/matmat/templates/matmat/search_form.jinja +++ b/matmat/templates/matmat/search_form.jinja @@ -20,7 +20,7 @@ border-color: black; } -{% if object_list.exists() %} +{% if result_exists %}

{% trans %}User found{% endtrans %}

{% for user in object_list %} diff --git a/matmat/urls.py b/matmat/urls.py index c4885bcaf67704dc9a2d241fa6a2c0608c01b111..dfb54dd6e35d9b74142f1e31c91954654c453951 100644 --- a/matmat/urls.py +++ b/matmat/urls.py @@ -27,7 +27,7 @@ from django.conf.urls import url from matmat.views import * urlpatterns = [ - url(r'^$', SearchFormView.as_view(), name="search"), - url(r'^reverse$', SearchReverseFormView.as_view(), name="search_reverse"), + url(r'^search$', SearchFormView.as_view(), name="search"), + url(r'^search/reverse$', SearchReverseFormView.as_view(), name="search_reverse"), url(r'^clear$', SearchClearFormView.as_view(), name="search_clear"), ] diff --git a/matmat/views.py b/matmat/views.py index c81ff14250fa921460cb76a13525dcd4d899e721..4fcd6a6bc3c706c543fc243991468a9778e88f85 100644 --- a/matmat/views.py +++ b/matmat/views.py @@ -21,6 +21,7 @@ # Place - Suite 330, Boston, MA 02111-1307, USA. # # +from ast import literal_eval from django.views.generic import ListView, View from django.views.generic.edit import FormView @@ -87,6 +88,10 @@ class SearchFormListView(WasSuscribed, SingleObjectMixin, ListView): def dispatch(self, request, *args, **kwargs): self.form_class = kwargs['form'] self.reverse = kwargs['reverse'] + self.session = request.session + self.last_search = self.session.get('matmat_search_result', str([])) + self.last_search = literal_eval(self.last_search) + print(self.last_search) if 'valid_form' in kwargs.keys(): self.valid_form = kwargs['valid_form'] else: @@ -105,18 +110,24 @@ class SearchFormListView(WasSuscribed, SingleObjectMixin, ListView): self.object = None kwargs = super(SearchFormListView, self).get_context_data(**kwargs) kwargs['form'] = self.form_class + kwargs['result_exists'] = self.result_exists return kwargs def get_queryset(self): + q = self.init_query if self.valid_form is not None: if self.reverse: - return self.init_query.filter(phone=self.valid_form['phone']).all() + q = q.filter(phone=self.valid_form['phone']).all() else: - q = self.init_query - # f = self.valid_form - return q.all() + q = q.all() else: - return self.model.objects.none() + q = q.filter(pk__in=self.last_search).all() + self.result_exists = q.exists() + self.last_search = [] + for user in q: + self.last_search.append(user.id) + self.session['matmat_search_result'] = str(self.last_search) + return q class SearchFormView(WasSuscribed, FormView): @@ -142,11 +153,11 @@ class SearchFormView(WasSuscribed, FormView): view = SearchFormListView.as_view() if form.is_valid(): kwargs['valid_form'] = form.clean() - request.session['matmat_search'] = form.cleaned_data_json + request.session['matmat_search_form'] = form.cleaned_data_json return view(request, *args, **kwargs) def get_initial(self): - return self.session.get('matmat_search', {}) + return self.session.get('matmat_search_form', {}) class SearchReverseFormView(SearchFormView): @@ -160,5 +171,8 @@ class SearchClearFormView(WasSuscribed, View): def dispatch(self, request, *args, **kwargs): super(SearchClearFormView, self).dispatch(request, *args, **kwargs) - request.session.pop('matmat_search') + if 'matmat_search_form' in request.session.keys(): + request.session.pop('matmat_search_form') + if 'matmat_search_result' in request.session.keys(): + request.session.pop('matmat_search_result') return HttpResponseRedirect(reverse('matmat:search'))