summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/querysetfilter.py
blob: efa850705093c69aba98adc8cbb05bce7d96665d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class QuerysetFilter(object):
    """ Filter for a queryset """

    def __init__(self, criteria=None):
        self.criteria = None
        if criteria:
            self.set_criteria(criteria)

    def set_criteria(self, criteria):
        """
        criteria is an instance of django.db.models.Q;
        see https://docs.djangoproject.com/en/1.9/ref/models/querysets/#q-objects
        """
        self.criteria = criteria

    def filter(self, queryset):
        """
        Filter queryset according to the criteria for this filter,
        returning the filtered queryset
        """
        if self.criteria:
            return queryset.filter(self.criteria)
        else:
            return queryset

    def count(self, queryset):
        """ Returns a count of the elements in the filtered queryset """
        return self.filter(queryset).count()