summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2008-09-12 10:14:12 +1000
committerJeremy Kerr <jk@ozlabs.org>2008-09-12 10:14:12 +1000
commit54a4ca3d5a3fcb99e8dae216dcba25c9cc05a914 (patch)
tree1a059964bb124f548e12d6af0e37854648ed3071
parente09f41188f14b091094725f074cf35837e19d4b0 (diff)
downloadpatchwork-54a4ca3d5a3fcb99e8dae216dcba25c9cc05a914.tar.bz2
patchwork-54a4ca3d5a3fcb99e8dae216dcba25c9cc05a914.tar.xz
Add 'Action Required' meta-state filter
This filter shows all patches in states with action_required = True. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rw-r--r--apps/patchwork/filters.py30
1 files changed, 28 insertions, 2 deletions
diff --git a/apps/patchwork/filters.py b/apps/patchwork/filters.py
index 6cd526b..b0b204e 100644
--- a/apps/patchwork/filters.py
+++ b/apps/patchwork/filters.py
@@ -143,12 +143,23 @@ class SubmitterFilter(Filter):
class StateFilter(Filter):
param = 'state'
+ action_req_key = '!'
+
def __init__(self, filters):
super(StateFilter, self).__init__(filters)
self.name = 'State'
self.state = None
+ self.action_req = None
def _set_key(self, str):
+ self.action_req = None
+ self.state = None
+
+ if str == self.action_req_key:
+ self.action_req = True
+ self.applied = True
+ return
+
try:
self.state = State.objects.get(id=int(str))
except:
@@ -157,12 +168,24 @@ class StateFilter(Filter):
self.applied = True
def kwargs(self):
- return {'state': self.state}
+ if self.action_req == True:
+ return {'state__in': \
+ State.objects.filter(action_required = True) \
+ .values('pk').query}
+ if self.state is not None:
+ return {'state': self.state}
def condition(self):
- return self.state.name
+ if self.state:
+ return self.state.name
+ elif self.action_req == True:
+ return 'Action Required'
+ return None
+
def key(self):
+ if self.action_req == True:
+ return self.action_req_key
if self.state is None:
return None
return self.state.id
@@ -170,6 +193,9 @@ class StateFilter(Filter):
def _form(self):
str = '<select name="%s">' % self.param
str += '<option value="">any</option>'
+ if self.action_req_key:
+ str += '<option value="%s">Action Required</option>' % \
+ self.action_req_key
for state in State.objects.all():
selected = ''
if self.state and self.state == state: