ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetExample
InDetBeamSpotExample
www
JobBrowser.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
2
3
4
"""
5
ATLAS beam spot web page for displaying beam spot job data.
6
"""
7
8
__author__ =
'Juerg Beringer'
9
__version__ =
'JobBrowser.py atlas/athena'
10
11
from
BeamSpotWebPage
import
BeamSpotWebPage
12
from
InDetBeamSpotExample.TaskManager
import
*
13
from
InDetBeamSpotExample.Utils
import
blankIfNone
14
import
time
15
import
glob
16
17
tableSorter =
"""\
18
<script type="text/javascript" src="../js/jquery-latest.js"></script>
19
<script type="text/javascript" src="../js/jquery.tablesorter.js"></script>
20
<script type="text/javascript" id="js">
21
$(document).ready(function() {
22
$("table").tablesorter({
23
headers: { 0: { sorter: "shortDate" } },
24
sortList: [[0,1]]
25
});
26
});
27
</script>
28
"""
29
30
tableHeader =
"""<table cellspacing="0" class="tablesorter">
31
<thead>
32
<tr>
33
<th>Last update</th>
34
<th>Dataset</th>
35
<th>Task</th>
36
<th>Release</th>
37
<th>#Jobs</th>
38
<th>Status</th>
39
<th>Details</th>
40
<th>Results</th>
41
</tr>
42
</thead>
43
<tbody>
44
"""
45
46
taskCount =
"""\
47
<div class="text">
48
<h3>%s task(s):</h3>
49
</div>
50
"""
51
52
taskCountLimit =
"""\
53
<div class="text">
54
<h3>%s task(s), displaying last %i tasks:</h3>
55
</div>
56
"""
57
58
taskCountForDS =
"""\
59
<div class="text">
60
<h3>%s task(s) for dataset %s:</h3>
61
</div>
62
"""
63
64
taskCountForRun =
"""\
65
<div class="text">
66
<h3>%s task(s) for run %s:</h3>
67
</div>
68
"""
69
70
71
class
JobBrowser
(
BeamSpotWebPage
):
72
73
def
__init__
(self):
74
BeamSpotWebPage.__init__(self)
75
self.
pageConfig
[
'pageTitle'
] =
'ATLAS Beam Spot Jobs'
76
self.
addToPageHeader
(tableSorter)
77
78
def
content
(self,**args):
79
with
TaskManager(self.
globalConfig
[
'taskDb'
])
as
taskman:
80
if
'r'
in
args:
81
table = taskCountForRun % (taskman.getNTasks([
'where RUNNR ='
,DbParam(args[
'r'
])]), args[
'r'
])
82
taskIter = taskman.taskIterDict(
'*'
, [
'where RUNNR ='
,DbParam(args[
'r'
]),
'order by UPDATED'
] )
83
elif
'd'
in
args:
84
table = taskCountForDS % (taskman.getNTasks([
"where DSNAME like '%%%s%%'"
% args[
'd'
]]), args[
'd'
])
85
taskIter = taskman.taskIterDict(
'*'
, [
"where DSNAME like '%%%s%%' order by UPDATED"
% args[
'd'
]] )
86
else
:
87
limit = int(args[
'limit'
])
if
'limit'
in
args
else
50
88
if
not
limit:
89
limit = 99999999
90
table = taskCount % taskman.getNTasks()
91
taskIter = taskman.taskIterDict(qual=(
'order by UPDATED desc'
,))
92
else
:
93
table = taskCountLimit % (taskman.getNTasks(),limit)
94
taskIter = taskman.taskIterDict(qual=(
'order by UPDATED desc'
,),limit=limit)
95
table += tableHeader
96
for
t
in
taskIter:
97
dsname = t[
'DSNAME'
]
98
taskname = t[
'TASKNAME'
]
99
table +=
"<tr>"
100
table +=
"<td>%s</td>"
% (time.ctime(t[
'UPDATED'
]))
101
table +=
"<td>%s</td>"
% (dsname)
102
table +=
"<td>%s</td>"
% (taskname)
103
table +=
"<td>%s</td>"
% (
'<br>'
.join(t[
'ATLREL'
].
split
(
';'
)))
104
table +=
"<td>%s</td>"
% (t[
'NJOBS'
])
105
stat = t[
'STATUS'
]
106
table +=
'<td class="%s">%s</td>'
% (getStatusClass(stat),getKey(TaskManager.StatusCodes,stat))
107
table +=
'<td>'
108
table +=
' <a href="../details?d=%s&t=%s">Details</a>'
%(dsname,taskname)
109
table +=
' <a href="../files?u=%s/%s">Files</a>'
%(dsname,taskname)
110
table +=
'</td>'
111
table +=
"<td>%s</td>"
% (blankIfNone(t[
'RESULTLINKS'
]))
112
table +=
"</tr>\n"
113
table +=
"</tbody></table>\n"
114
return
table
115
116
117
# Code to test or run locally
118
if
__name__ ==
'__main__'
:
119
p =
JobBrowser
()
120
print
(p.index())
BeamSpotWebPage.BeamSpotWebPage
Definition
BeamSpotWebPage.py:47
JobBrowser.JobBrowser
Definition
JobBrowser.py:71
JobBrowser.JobBrowser.__init__
__init__(self)
Definition
JobBrowser.py:73
JobBrowser.JobBrowser.content
content(self, **args)
Definition
JobBrowser.py:78
WebPage.WebPage.addToPageHeader
addToPageHeader(self, snippet)
Definition
WebPage.py:320
WebPage.WebPage.globalConfig
globalConfig
Definition
WebPage.py:290
WebPage.WebPage.pageConfig
dict pageConfig
Definition
WebPage.py:273
split
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition
hcg.cxx:179
TaskManager
Generated on
for ATLAS Offline Software by
1.17.0