X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=apps%2Fpatchwork%2Ffilters.py;h=52fc03fe19d655f78324cea43ef3533a7d232b6e;hb=56e2243f3be7e859666ce0e4e1a8b8b94444f8d4;hp=6cd526ba6e7fede28598501378faa26ce0e6c1af;hpb=05d26756d7e7f254d5631a0649aeac5fd3a58ca8;p=patchwork diff --git a/apps/patchwork/filters.py b/apps/patchwork/filters.py index 6cd526b..52fc03f 100644 --- a/apps/patchwork/filters.py +++ b/apps/patchwork/filters.py @@ -22,6 +22,7 @@ from patchwork.models import Person, State from django.utils.safestring import mark_safe from django.utils.html import escape from django.contrib.auth.models import User +from urllib import quote class Filter(object): def __init__(self, filters): @@ -143,12 +144,22 @@ class SubmitterFilter(Filter): class StateFilter(Filter): param = 'state' + any_key = '*' + action_req_str = 'Action Required' + def __init__(self, filters): super(StateFilter, self).__init__(filters) self.name = 'State' self.state = None + self.applied = True def _set_key(self, str): + self.state = None + + if str == self.any_key: + self.applied = False + return + try: self.state = State.objects.get(id=int(str)) except: @@ -157,19 +168,39 @@ class StateFilter(Filter): self.applied = True def kwargs(self): - return {'state': self.state} + if self.state is not None: + return {'state': self.state} + else: + return {'state__in': \ + State.objects.filter(action_required = True) \ + .values('pk').query} def condition(self): - return self.state.name + if self.state: + return self.state.name + return self.action_req_str def key(self): - if self.state is None: - return None - return self.state.id + if self.state is not None: + return self.state.id + if not self.applied: + return '*' + return None def _form(self): str = '