| Index: appengine/swarming/handlers_frontend.py
|
| diff --git a/appengine/swarming/handlers_frontend.py b/appengine/swarming/handlers_frontend.py
|
| index 158d74e69cf2a76feb3f490e776fd3193791e53c..22088e7f4fb0642f6ffa0cc46532355bd2d7210e 100644
|
| --- a/appengine/swarming/handlers_frontend.py
|
| +++ b/appengine/swarming/handlers_frontend.py
|
| @@ -616,6 +616,17 @@ class BaseTaskHandler(auth.AuthenticatingHandler):
|
| class TaskHandler(BaseTaskHandler):
|
| """Show the full text of a task request and its result."""
|
|
|
| + @staticmethod
|
| + def packages_grouped_by_path(flat_packages):
|
| + """Returns sorted [(path, [PinInfo, ...])].
|
| +
|
| + Used by user_task.html.
|
| + """
|
| + retval = collections.defaultdict(list)
|
| + for pkg in flat_packages:
|
| + retval[pkg.path].append(pkg)
|
| + return sorted(retval.iteritems())
|
| +
|
| @auth.autologin
|
| @auth.require(acl.is_user)
|
| def get(self, task_id):
|
| @@ -663,9 +674,27 @@ class TaskHandler(BaseTaskHandler):
|
| parent_task = parent_task_future.get_result()
|
| children_tasks = [c.get_result() for c in children_tasks_futures]
|
|
|
| + cipd = None
|
| + if request.properties.cipd_input:
|
| + cipd = {
|
| + 'server': request.properties.cipd_input.server,
|
| + 'client_package': request.properties.cipd_input.client_package,
|
| + 'packages': self.packages_grouped_by_path(
|
| + request.properties.cipd_input.packages),
|
| + }
|
| +
|
| + cipd_pins = None
|
| + if result.cipd_pins:
|
| + cipd_pins = {
|
| + 'client_package': result.cipd_pins.client_package,
|
| + 'packages': self.packages_grouped_by_path(result.cipd_pins.packages),
|
| + }
|
| +
|
| params = {
|
| 'bot': bot_future.get_result() if bot_future else None,
|
| 'children_tasks': children_tasks,
|
| + 'cipd': cipd,
|
| + 'cipd_pins': cipd_pins,
|
| 'is_admin': acl.is_admin(),
|
| 'is_gae_admin': users.is_current_user_admin(),
|
| 'is_privileged_user': acl.is_privileged_user(),
|
|
|