예제 #1
0
class SearchFilterSet(django_filters.FilterSet):

    search = FreeTextFilter(fields=['text'])

    class Meta:
        model = question_models.Question
        fields = ['search']
예제 #2
0
class IdeaFilterSet(a4_filters.DefaultsFilterSet):
    defaults = {'ordering': '-created'}
    category = category_filters.CategoryFilter()
    ordering = filters.OrderingFilter(choices=get_ordering_choices)
    search = FreeTextFilter(widget=FreeTextFilterWidget, fields=['name'])

    class Meta:
        model = models.Idea
        fields = ['search', 'category']
예제 #3
0
class SubjectFilterSet(a4_filters.DefaultsFilterSet):
    defaults = {'ordering': 'name'}

    ordering = filters.OrderingFilter(choices=(('name', _('Alphabetical')),
                                               ('-comment_count',
                                                _('Most commented'))))
    search = FreeTextFilter(widget=FreeTextFilterWidget, fields=['name'])

    class Meta:
        model = models.Subject
        fields = ['search']
예제 #4
0
class ProjectFilterSet(DefaultsFilterSet):

    defaults = {'is_archived': 'false'}

    search = FreeTextFilter(widget=FreeTextFilterWidget,
                            fields=['name', 'description'])

    is_archived = django_filters.BooleanFilter(widget=ArchivedWidget)

    class Meta:
        model = Project
        fields = ['search', 'is_archived']
예제 #5
0
파일: views.py 프로젝트: liqd/a4-kosmo
class TopicFilterSet(a4_filters.DefaultsFilterSet):
    defaults = {'ordering': 'name'}
    category = category_filters.CategoryFilter()
    ordering = filters.OrderingFilter(choices=(('name', _('Alphabetical')),
                                               ('-positive_rating_count',
                                                _('Most popular')),
                                               ('-comment_count',
                                                _('Most commented'))))
    search = FreeTextFilter(widget=FreeTextFilterWidget, fields=['name'])

    class Meta:
        model = models.Topic
        fields = ['search', 'category']
예제 #6
0
class ProjectFilterSet(DefaultsFilterSet):

    defaults = {
        'is_archived': 'false'
    }

    ordering = DistinctOrderingFilter(
        choices=(
            ('-created', _('Most recent')),
        ),
        empty_label=None,
        widget=OrderingWidget,
    )

    search = FreeTextFilter(
        widget=FreeTextFilterWidget,
        fields=['name', 'description',
                'projectcontainer__projects__name']
    )

    organisation = django_filters.ModelChoiceFilter(
        queryset=apps.get_model(settings.A4_ORGANISATIONS_MODEL).objects
                     .order_by('name'),
        widget=OrganisationWidget,
    )

    is_archived = django_filters.BooleanFilter(
        widget=ArchivedWidget
    )

    created = django_filters.NumberFilter(
        field_name='created',
        lookup_expr='year',
        widget=YearWidget,
    )

    administrative_district = django_filters.ModelChoiceFilter(
        queryset=AdministrativeDistrict.objects.all(),
        widget=DistrictWidget
    )

    class Meta:
        model = project_models.Project
        fields = ['search', 'organisation', 'is_archived',
                  'created', 'administrative_district']
예제 #7
0
class IdeaFilterSet(DefaultsFilterSet):

    defaults = {
        'ordering': '?',
        'status': 'winner',
    }

    field_of_action = django_filters.CharFilter(
        lookup_expr='icontains',
        widget=FieldOfActionFilterWidget,
    )

    project = django_filters.ModelChoiceFilter(
        field_name='module__project__name',
        queryset=Project.objects.all(),
        widget=ProjectFilterWidget,
    )

    def organisation_countries(self, queryset, name, value):
        return queryset.filter(
            Q(lead_organisation_country=value)
            | Q(partner_organisation_1_country=value)
            | Q(partner_organisation_2_country=value)
            | Q(partner_organisation_3_country=value))

    country = django_filters.CharFilter(
        field_name='',
        method='organisation_countries',
        widget=CountryFilterWidget,
    )

    def what_status(self, queryset, name, value):
        if value == 'community_award':
            qs = queryset.filter(community_award_winner=True)
        elif value == 'shortlist':
            qs = queryset.filter(is_on_shortlist=True)
        elif value == 'winner':
            qs = queryset.filter(is_winner=True)
        else:
            qs = queryset.all()
        return qs

    status = django_filters.ChoiceFilter(method='what_status',
                                         choices=STATUS_FILTER_CHOICES,
                                         widget=StatusFilterWidget,
                                         empty_label=_('All ideas'))

    ordering = DistinctOrderingFilter(fields=(
        ('-created', 'newest'),
        ('-comment_count', 'comments'),
        ('-positive_rating_count', 'support'),
        ('title', 'title'),
    ),
                                      choices=ORDERING_CHOICES,
                                      empty_label=None,
                                      widget=OrderingFilterWidget,
                                      random_seed=date.today())

    search = FreeTextFilter(
        widget=FreeTextSearchFilterWidget,
        fields=[
            'title',  # idea section
            'subtitle',
            'pitch',
            'challenge',  # local dimension section
            'plan',  # road to impact section
            'feedback',  # network community section
            'first_name',  # applicant section
            'last_name',
            'lead_organisation_name',
            'lead_organisation_website',
            'partner_organisation_1_name',  # partners section
            'partner_organisation_1_website',
            'partner_organisation_2_name',
            'partner_organisation_2_website',
            'partner_organisation_3_name',
            'partner_organisation_3_website',
            'partners_more_info'
        ])

    class Meta:
        model = models.Idea
        fields = [
            'search', 'project', 'status', 'field_of_action', 'country',
            'ordering'
        ]