~widelands-dev/widelands-website/trunk

« back to all changes in this revision

Viewing changes to wlsearch/forms.py

  • Committer: kaputtnik
  • Date: 2019-05-30 18:20:02 UTC
  • mto: This revision was merged to the branch mainline in revision 540.
  • Revision ID: kaputtnik-20190530182002-g7l91m1xo28clghv
adjusted README; first commit on the new server

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python -tt
2
 
# encoding: utf-8
3
 
#
4
 
# Created by Holger Rapp on 2009-03-15.
5
 
#
6
 
# Last Modified: $Date$
7
 
#
8
 
 
 
1
from haystack.forms import SearchForm
9
2
from django import forms
10
 
 
11
 
class SearchForm(forms.Form):
12
 
    search = forms.CharField(max_length=200)
13
 
    incl_wiki = forms.BooleanField(required=False,initial=True, label="Wiki")
14
 
    incl_forum = forms.BooleanField(required=False,initial=True, label="Forum")
15
 
    incl_news = forms.BooleanField(required=False,initial=True, label="News")
16
 
    incl_maps = forms.BooleanField(required=False,initial=True, label="Maps")
17
 
    incl_help = forms.BooleanField(required=False,initial=True, label="Online Help")
18
 
 
 
3
from datetime import date, timedelta
 
4
from haystack.query import SearchQuerySet
 
5
 
 
6
 
 
7
class WlSearchForm(SearchForm):
 
8
 
 
9
    start_date = forms.DateField(
 
10
        required=False, initial=date.today() - timedelta(365),
 
11
        widget=forms.TextInput(attrs=
 
12
                               {'size': '10',
 
13
                                'placeholder': 'YYYY-MM-DD',
 
14
                                'class': 'datepicker',
 
15
                                }))
 
16
    incl_forum = forms.BooleanField(
 
17
        required=False, initial=True, label='Forum')
 
18
    incl_maps = forms.BooleanField(
 
19
        required=False, initial=True, label='Maps')
 
20
    incl_wiki = forms.BooleanField(
 
21
        required=False, initial=True, label='Wiki')
 
22
    incl_help = forms.BooleanField(
 
23
        required=False, initial=True, label='Encyclopedia')
 
24
    incl_news = forms.BooleanField(
 
25
        required=False, initial=True, label='News')
 
26
 
 
27
    def search(self, search_models):
 
28
        """Search per model"""
 
29
        
 
30
        sqs = SearchQuerySet().models(search_models)
 
31
 
 
32
        # Add start_date to the query
 
33
        if self.cleaned_data['start_date']:
 
34
            sqs = sqs.filter(date__gte=self.cleaned_data[
 
35
                             'start_date'])
 
36
 
 
37
        # Add Order to the query
 
38
        sqs = sqs.order_by('-date')
 
39
        
 
40
        # Run the query
 
41
        result = sqs.auto_query(self.cleaned_data['q']).load_all()
 
42
 
 
43
        return result