Author: tmckay
Date: 2011-07-20 19:16:08 +0000 (Wed, 20 Jul 2011)
New Revision: 4878
Modified:
branches/clarity/cumin/python/cumin/grid/job.py
Log:
Merge 4877 from trunk.
BZ723613
BZ703196 (backout autoquoting of string values)
Modified: branches/clarity/cumin/python/cumin/grid/job.py
===================================================================
--- branches/clarity/cumin/python/cumin/grid/job.py 2011-07-20 17:30:59 UTC (rev 4877)
+++ branches/clarity/cumin/python/cumin/grid/job.py 2011-07-20 19:16:08 UTC (rev 4878)
@@ -735,6 +735,7 @@
just_ads = dict()
for field in ads:
+ ads[field]["error"] = None
try:
fval = ads[field]["value"]
except KeyError:
@@ -763,23 +764,21 @@
elif ftype == "float":
orig = float(orig)
if fval != orig:
- if ftype == "string":
- quoted = "\"%s\"" %
strip_string_quotes(fval)
- if quoted == orig:
- continue
- just_ads[unicode(field)] = quoted #string
- else:
- just_ads[unicode(field)] = fval
+ if ftype == "string" and \
+ strip_string_quotes(fval) == strip_string_quotes(orig):
+ continue
+ just_ads[unicode(field)] = fval
- if not errors:
- id = self.frame.id.get(session)
- scheduler = self.frame.get_scheduler(session, id)
- job_id = self.frame.job_id.get(session)
+ # Process all cases, including errors, becase we
+ # want to see a banner for errors we detect.
+ id = self.frame.id.get(session)
+ scheduler = self.frame.get_scheduler(session, id)
+ job_id = self.frame.job_id.get(session)
- task = self.frame.set_ad_task
- for field in just_ads:
- task.invoke(session, scheduler, job_id, field, str(just_ads[field]))
- self.process_cancel(session)
+ task = self.frame.set_ad_task
+ for field in just_ads:
+ task.invoke(session, scheduler, job_id, field, str(just_ads[field]),
ads[field]["error"])
+ self.process_cancel(session)
class OutputFile(Widget):
err_msg = "Output, Error, and UserLog file names are invalid."
@@ -1070,6 +1069,13 @@
def get_description(self, session):
return "Edit Ad"
- def do_invoke(self, invoc, scheduler, job_id, name, value):
- self.qmf_call(invoc, scheduler, "SetJobAttribute", job_id, name,
value)
+ def do_invoke(self, invoc, scheduler, job_id, name, value, error):
+ # Don't make the call, but we want to see the banner
+ # so invoke the callback directly with the error as status
+ if error:
+ invoc.status_code = name + ": " + str(error)
+ invoc.output_args = None
+ invoc.end()
+ else:
+ self.qmf_call(invoc, scheduler, "SetJobAttribute", job_id, name,
value)