#from urllib.parse import quote
#import koji
#from kojiweb import util

#def printValue($key, $value, $sep=', ')
  #if $key in ('brootid', 'buildroot_id')
<a href="buildrootinfo?buildrootID=$value">$value</a>
  #elif $isinstance($value, list)
$sep.join([$str($val) for $val in $value])
  #elif $isinstance($value, dict)
$sep.join(['%s=%s' % (($n == '' and "''" or $n), $v) for $n, $v in $value.items()])
  #else
$value
  #end if
#end def

#def printProperties($props)
  #echo ', '.join([$v is not None and '%s=%s' % ($n, $v) or $str($n) for $n, $v in $props.items()])
#end def

#def printMap($vals, $prefix='')
  #for $key, $value in $vals.items()
  #if $key == 'properties'
  ${prefix}properties&nbsp;=&nbsp;$printProperties($value)<br/>
  #elif $key != '__starstar'
  $prefix$key&nbsp;=&nbsp;$printValue($key, $value)<br/>
  #end if
  #end for
#end def

#def printOpts($opts)
  #if $opts
  <strong>Options:</strong><br/>
  $printMap($opts, '&nbsp;&nbsp;')
  #end if
#end def

#if $task.method == 'buildSRPMFromSCM'
<strong>SCM URL:</strong> $params[0]<br/>
#if $len($params) > 1
<strong>Build Tag:</strong>
#if $buildTag.id
<a href="taginfo?tagID=$buildTag.id">$buildTag.name</a>
#else
$buildTag.name
#end if
<br/>
#end if
#if $len($params) > 2
$printOpts($params[2])
#end if
#elif $task.method == 'buildSRPMFromCVS'
<strong>CVS URL:</strong> $params[0]
#elif $task.method == 'buildArch'
<strong>SRPM:</strong> $params[0]<br/>
<strong>Build Tag:</strong>
#if $buildTag.id
<a href="taginfo?tagID=$buildTag.id">$buildTag.name</a>
#else
$buildTag.name
#end if
<br/>
<strong>Arch:</strong> $params[2]<br/>
<strong>Keep SRPM?</strong> #if $params[3] then 'yes' else 'no'#<br/>
#if $len($params) > 4
$printOpts($params[4])
#end if
#elif $task.method == 'tagBuild'
<strong>Destination Tag:</strong> <a href="taginfo?tagID=$destTag.id">$destTag.name</a><br/>
<strong>Build:</strong> <a href="buildinfo?buildID=$build.id">$koji.buildLabel($build)</a>
#elif $task.method == 'buildNotification'
#set $build = $params[1]
#set $buildTarget = $params[2]
<strong>Recipients:</strong>&nbsp;$printValue('', $params[0])<br/>
<strong>Build:</strong> <a href="buildinfo?buildID=$build.id">$koji.buildLabel($build)</a><br/>
#if $buildTarget
<strong>Build Target:</strong> <a href="buildtargetinfo?targetID=$buildTarget.id">$buildTarget.name</a><br/>
#else
<strong>Build Target:</strong> (no build target)<br/>
#end if
<strong>Web URL:</strong> <a href="$quote($params[3])">$params[3]</a>
#elif $task.method == 'tagNotification'
<strong>Recipients:</strong>&nbsp;$printValue('', $params[0])<br/>
<strong>Successful?:</strong> #if $params[1] then 'yes' else 'no'#<br/>
#if $destTag
<strong>Tagged Into:</strong> <a href="taginfo?tagID=$destTag.id">$destTag.name</a><br/>
#end if
#if $srcTag
<strong>#if $destTag then 'Moved From:' else 'Untagged From:'#</strong> <a href="taginfo?tagID=$srcTag.id">$srcTag.name</a><br/>
#end if
<strong>Build:</strong> <a href="buildinfo?buildID=$build.id">$koji.buildLabel($build)</a><br/>
<strong>#if $destTag then 'Tagged By:' else 'Untagged By:'#</strong> <a href="userinfo?userID=$user.id">$user.name</a><br/>
<strong>Ignore Success?:</strong> #if $params[6] then 'yes' else 'no'#<br/>
#if $params[7]
<strong>Failure Message:</strong> $params[7]
#end if
#elif $task.method == 'build'
<strong>Source:</strong> $params[0]<br/>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[1])">$params[1]</a><br/>
$printOpts($params[2])
#elif $task.method == 'maven'
<strong>SCM URL:</strong> $params[0]<br/>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[1])">$params[1]</a><br/>
$printOpts($params[2])
#elif $task.method == 'buildMaven'
<strong>SCM URL:</strong> $params[0]<br/>
<strong>Build Tag:</strong>
#if $buildTag.id
<a href="taginfo?tagID=$buildTag.id">$buildTag.name</a>
#else
$buildTag.name
#end if
<br/>
#if $len($params) > 2
$printOpts($params[2])
#end if
#elif $task.method == 'wrapperRPM'
<strong>Spec File URL:</strong> $params[0]<br/>
#if 'locked' in $buildTarget
#set $buildTag = $buildTarget.name
<strong>Build Tag:</strong>
#if $buildTag.id
<a href="taginfo?tagID=$buildTag.id">$buildTag.name</a>
#else
$buildTag.name
#end if
<br/>
#else
<strong>Build Target:</strong> <a href="buildtargetinfo?targetID=$buildTarget.id">$buildTarget.name</a><br/>
#end if
#if $params[2]
<strong>Build:</strong> <a href="buildinfo?buildID=$params[2].id">$koji.buildLabel($params[2])</a><br/>
#end if
#if $params[3]
<strong>Task:</strong> <a href="taskinfo?taskID=$wrapTask.id">$koji.taskLabel($wrapTask)</a><br/>
#end if
#if $len($params) > 4
$printOpts($params[4])
#end if
#elif $task.method == 'chainmaven'
<strong>Builds:</strong><br/>
<table>
#for $key, $val in $params[0].items()
<tr><td><strong>$key:</strong></td><td>$printMap($val)</td></tr>
#end for
</table>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[1])">$params[1]</a><br/>
#if $len($params) > 2
$printOpts($params[2])
#end if
#elif $task.method == 'livecd' or $task.method == 'appliance' or $task.method == 'livemedia'
<strong>Name:</strong> $params[0]<br/>
<strong>Version:</strong> $params[1]<br/>
<strong>Arch:</strong> $params[2]<br/>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[3])">$params[3]</a><br/>
<strong>Kickstart File:</strong> $params[4]<br/>
$printOpts($params[5])
#elif $task.method == 'image'
<strong>Arches:</strong> #echo ', '.join($params[2])#<br/>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[3])">$params[3]</a><br/>
<strong>Installation Tree:</strong> $params[4]<br/>
$printOpts($params[5])
#elif $task.method == 'createLiveCD' or $task.method == 'createAppliance' or $task.method == 'createLiveMedia'
#if $len($params) > 4:
## new method signature
<strong>Arch:</strong> $params[3]<br/>
<strong>Kickstart File:</strong> $params[7]<br/>
#if $len($params) > 8
$printOpts($params[8])
#end if
#else
## old method signature
<strong>Arch:</strong> $params[0]<br/>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[1])">$params[1]</a><br/>
<strong>Kickstart File:</strong> $params[2]<br/>
#if $len($params) > 3
$printOpts($params[3])
#end if
#end if
#elif $task.method == 'createImage'
#set $target = $params[4]
<strong>Build Target:</strong> <a href="buildtargetinfo?targetID=$target.id">$target.name</a><br/>
<strong>Install Tree:</strong> $params[7]<br/>
$printOpts($params[8])
#elif $task.method == 'winbuild'
<strong>VM:</strong> $params[0]<br/>
<strong>SCM URL:</strong> $params[1]<br/>
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[2])">$params[2]</a><br/>
#if $len($params) > 3
$printOpts($params[3])
#end if
#elif $task.method == 'vmExec'
<strong>VM:</strong> $params[0]<br/>
<strong>Exec Params:</strong><br/>
#for $info in $params[1]
#if $isinstance($info, dict)
$printMap($info, '&nbsp;&nbsp;&nbsp;&nbsp;')
#else
&nbsp;&nbsp;$info<br/>
#end if
#end for
#if $len($params) > 2
$printOpts($params[2])
#end if
#elif $task.method == 'newRepo'
<strong>Tag:</strong> <a href="taginfo?tagID=$tag.id">$tag.name</a><br/>
#if $len($params) > 1
  $printOpts($params[1])
#end if
#elif $task.method == 'distRepo'
<strong>Tag:</strong> <a href="taginfo?tagID=$tag.id">$tag.name</a><br/>
<strong>Repo ID:</strong> <a href="repoinfo?repoID=$params[1]">$params[1]</a></br>
<strong>Keys:</strong> $printValue(0, $params[2])<br/>
$printOpts($params[3])
#elif $task.method == 'prepRepo'
<strong>Tag:</strong> <a href="taginfo?tagID=$params[0].id">$params[0].name</a>
#elif $task.method == 'createrepo'
<strong>Repo ID:</strong> <a href="repoinfo?repoID=$params[0]">$params[0]</a><br/>
<strong>Arch:</strong> $params[1]<br/>
#set $oldrepo = $params[2]
#if $oldrepo
    <strong>Old Repo ID:</strong> <a href="repoinfo?repoID=$oldrepo.id">$oldrepo.id</a><br/>
    <strong>Old Repo Creation:</strong> $koji.formatTimeLong($oldrepo.create_ts)<br/>
#end if
#if $len($params) > 4 and $params[4]
    <strong>External Repos:</strong> $printValue(None, [ext['external_repo_name'] for ext in $params[3]])<br/>
#end if
#elif $task.method == 'createdistrepo'
<strong>Tag:</strong> <a href="taginfo?tagID=$tag.id">$tag.name</a><br/>
<strong>Repo ID:</strong> <a href="repoinfo?repoID=$params[1]">$params[1]</a></br>
<strong>Arch:</strong> $printValue(0, $params[2])<br/>
<strong>Keys:</strong> $printValue(0, $params[3])<br/>
<strong>Options:</strong> $printMap($params[4], '&nbsp;&nbsp;&nbsp;&nbsp;')
#elif $task.method == 'dependantTask'
<strong>Dependant Tasks:</strong><br/>
#for $dep in $deps
&nbsp;&nbsp;<a href="taskinfo?taskID=$dep.id" class="task$util.taskState($dep.state)">$koji.taskLabel($dep)</a><br/>
#end for
<strong>Subtasks:</strong><br/>
#for $subtask in $params[1]
&nbsp;&nbsp;<strong>Method:</strong> $subtask[0]<br/>
&nbsp;&nbsp;<strong>Parameters:</strong> #echo ', '.join([$str($subparam) for $subparam in $subtask[1]])#<br/>
#if $len($subtask) > 2 and $subtask[2]
&nbsp;&nbsp;<strong>Options:</strong><br/>
$printMap($subtask[2], '&nbsp;&nbsp;&nbsp;&nbsp;')
#end if
<br/>
#end for
#elif $task.method == 'chainbuild'
<strong>Build Groups:</strong><br/>
#set $groupNum = 0
#for $urls in $params[0]
#set $groupNum += 1
&nbsp;&nbsp;<strong>$groupNum</strong>: #echo ', '.join($urls)#<br/>
#end for
<strong>Build Target:</strong> <a href="buildtargetinfo?name=$quote($params[1])">$params[1]</a><br/>
$printOpts($params[2])
#elif $task.method == 'waitrepo'
<strong>Build Tag:</strong> $params[0]<br/>
#if $params[1]
<strong>Newer Than:</strong> $params[1]<br/>
#end if
#if $params[2]
<strong>NVRs:</strong> $printValue('', $params[2])
#end if
#elif $task.method == 'restart'
<strong>Host:</strong> <a href="hostinfo?hostID=$params[0].id">$params[0].name</a><br/>
#elif $task.method == 'restartVerify'
<strong>Host:</strong> <a href="hostinfo?hostID=$params[1].id">$params[1].name</a><br/>
<strong>Restart Task:</strong>
    <a href="taskinfo?taskID=$rtask.id" class="task$util.taskState($rtask.state)">$koji.taskLabel($rtask)</a><br/>
#elif $task.method == 'runroot'
<strong>Build Tag:</strong> <a href="taginfo?tagID=$params[0]">$params[0]</a><br/>
<strong>Arch:</strong> $params[1]<br/>
$printOpts($params[3])
<strong>Commands:</strong> $params[2]<br/>
#else
$params
#end if
