diff --git a/lib/galaxy/eggs/dist.py b/lib/galaxy/eggs/dist.py
index 70a06910549..f44ff3021cd 100644
--- a/lib/galaxy/eggs/dist.py
+++ b/lib/galaxy/eggs/dist.py
@@ -63,14 +63,14 @@ class DistScrambleCrate( ScrambleCrate ):
def get_platforms( self, wanted ):
# find all the members of a group and process them
- if self.groups in wanted:
+ if wanted in self.groups:
platforms = []
for name in self.groups[wanted].split():
for platform in self.get_platforms( name ):
if platform not in platforms:
platforms.append( platform )
return platforms
- elif self.hosts in wanted:
+ elif wanted in self.hosts:
return [ wanted ]
else:
raise Exception( "unknown platform: %s" % wanted )
diff --git a/lib/galaxy/webapps/reports/controllers/jobs.py b/lib/galaxy/webapps/reports/controllers/jobs.py
index 755e42a9573..ac5f50977fe 100644
--- a/lib/galaxy/webapps/reports/controllers/jobs.py
+++ b/lib/galaxy/webapps/reports/controllers/jobs.py
@@ -12,10 +12,8 @@ from sqlalchemy import and_, not_, or_
from galaxy import model, util
from galaxy.web.base.controller import BaseUIController, web
from galaxy.web.framework.helpers import grids
-from math import floor
-import pkg_resources
-pkg_resources.require( "SQLAlchemy >= 0.4" )
import re
+from math import ceil, floor
from galaxy.webapps.reports.controllers.query import ReportQueryBuilder
log = logging.getLogger( __name__ )
@@ -275,6 +273,7 @@ class Jobs( BaseUIController, ReportQueryBuilder ):
Queries the DB for all jobs in given month, defaults to current month.
"""
message = ''
+ PageSpec = namedtuple('PageSpec', ['entries', 'offset', 'page', 'pages_found'])
params = util.Params( kwd )
monitor_email = params.get( 'monitor_email', 'monitor@bx.psu.edu' )
@@ -286,6 +285,22 @@ class Jobs( BaseUIController, ReportQueryBuilder ):
arrow = specs.arrow
_order = specs.exc_order
+ if "entries" in kwd:
+ entries = int(kwd.get( 'entries' ))
+ else:
+ entries = 50
+ limit = entries * 4
+
+ if "offset" in kwd:
+ offset = int(kwd.get( 'offset' ))
+ else:
+ offset = 0
+
+ if "page" in kwd:
+ page = int(kwd.get( 'page' ))
+ else:
+ page = 1
+
# In case we don't know which is the monitor user we will query for all jobs
monitor_user_id = get_monitor_id( trans, monitor_email )
@@ -339,6 +354,9 @@ class Jobs( BaseUIController, ReportQueryBuilder ):
row.date
) )
+ pages_found = ceil(len(jobs) / float(entries))
+ page_specs = PageSpec(entries, offset, page, pages_found)
+
return trans.fill_template( '/webapps/reports/jobs_specified_month_all.mako',
order=order,
arrow=arrow,
@@ -346,6 +364,7 @@ class Jobs( BaseUIController, ReportQueryBuilder ):
month_label=month_label,
year_label=year_label,
month=month,
+ page_specs=page_specs,
jobs=jobs,
trends=trends,
is_user_jobs_only=monitor_user_id,
@@ -898,15 +917,6 @@ class Jobs( BaseUIController, ReportQueryBuilder ):
job=job,
message=message )
- @web.expose
- def test( self, trans, **kwd ):
- message = ''
- order = "asc"
-
- return trans.fill_template( '/webapps/reports/test.mako',
- order=order,
- message=message )
-
# ---- Utility methods -------------------------------------------------------
diff --git a/templates/page_base.mako b/templates/page_base.mako
new file mode 100644
index 00000000000..76f4490ec79
--- /dev/null
+++ b/templates/page_base.mako
@@ -0,0 +1,280 @@
+<%doc>
+ This file defines methods for displaying information about pagination
+%doc>
+
+<%def name="get_page_url( sort_id, order, *args, **kwargs )">
+ ${kwargs.get("page")}
+%def>
+
+<%!
+ def get_raw_url(sort_id, order, *args, **kwargs):
+ return h.url_for( controller=args[0], action=args[1], sort_id=sort_id, order=order, **kwargs )
+%>
+
+<%def name="get_pages( sort_id, order, page_specs, *args, **kwargs )">
+ ## Creates the page buttons
+ ${get_page_script()}
+ ${get_page_css()}
+
+
+
↞
+ %for x in range(-2,3):
+ <%
+ page = int(page_specs.page) + x
+ pages_found = int(page_specs.pages_found)
+ %>
+ %if page > 0:
+ %if x == 0:
+
${page}
+ %elif page < page_specs.page + pages_found:
+ <%
+ entries = page_specs.entries
+ offset = page_specs.entries * (page - 1)
+ %>
+ %if x == -2 and page > 1:
+
...
+ %endif
+
${get_page_url( sort_id, order, *args, page=page, offset=offset, entries=entries )}
+ %if x == 2 and pages_found == 4:
+
...
+ %endif
+ %endif
+ %endif
+ %endfor
+
↠
+
+%def>
+
+<%def name="get_entry_selector(controller, action, entries, sort_id, order)">
+
+
+
+%def>
+
+<%def name="get_page_css()">
+ <%doc>
+ Page Styling
+ %doc>
+
+
+ <%doc>
+ Entry Styling
+ %doc>
+
+%def>
+
+<%def name="get_page_script()">
+
+%def>
diff --git a/templates/sorting_base.mako b/templates/sorting_base.mako
index c02597ad29a..47a13ab177b 100644
--- a/templates/sorting_base.mako
+++ b/templates/sorting_base.mako
@@ -3,8 +3,10 @@
if sort_id == test_id:
if order == "asc":
tool_order = "desc"
- else:
+ elif order == "desc":
tool_order = "asc"
+ else:
+ tool_order = "default"
else:
tool_order = "default"
%>
diff --git a/templates/webapps/reports/jobs_specified_month_all.mako b/templates/webapps/reports/jobs_specified_month_all.mako
index cb4f021dccf..03b708bf635 100644
--- a/templates/webapps/reports/jobs_specified_month_all.mako
+++ b/templates/webapps/reports/jobs_specified_month_all.mako
@@ -2,6 +2,7 @@
<%namespace file="/message.mako" import="render_msg" />
<%namespace file="/spark_base.mako" import="jqs_style, make_sparkline" />
<%namespace file="/sorting_base.mako" import="get_sort_url, get_css" />
+<%namespace file="/page_base.mako" import="get_pages, get_entry_selector" />
%if message:
${render_msg( message, 'done' )}
@@ -13,8 +14,20 @@ ${get_css()}