On 05/09/2015 07:36 PM, Ralph Bean wrote:
And add some comments to this section so that future readers will
understand
all the gymnastics.
---
www/lib/kojiweb/util.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/www/lib/kojiweb/util.py b/www/lib/kojiweb/util.py
index 6610beb..7f7b578 100644
--- a/www/lib/kojiweb/util.py
+++ b/www/lib/kojiweb/util.py
@@ -463,10 +463,16 @@ def taskScratchClass(task_object):
""" Return a css class indicating whether or not this task is a
scratch
build.
"""
+ # Here, we try to figure out if this is supposed to be a scratch task based
+ # on this 'request' list attached to the task object. It's hard to
know
+ # exactly what's in it, because it's an unstructured list. Different kinds
+ # of tasks stuff different things in it in different places.
Sorry I hadn't gotten around to reviewing the earlier patch.
If you're going to dig through the task request, you should most likely
be checking the task method first. Checking for a minimum request length
is not really a sufficient check.
Every task method has its own signature, some of which have changed over
time.
request = task_object['request']
if len(request) >= 3:
opts = request[2]
- if opts and opts.get('scratch'):
+ # This is tough, because "opts" could be a one of a number of
different
+ # things. A dict, a bool, None, etc..
+ if hasattr(opts, 'get') and opts.get('scratch'):
return "scratch"
return ""