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 + + +<%def name="get_page_url( sort_id, order, *args, **kwargs )"> + ${kwargs.get("page")} + + +<%! + 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 name="get_entry_selector(controller, action, entries, sort_id, order)"> +
+
+ + + Max items: + + + +
+
+ + +<%def name="get_page_css()"> + <%doc> + Page Styling + + + + <%doc> + Entry Styling + + + + +<%def name="get_page_script()"> + + 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()}
-

Jobs for ${month_label} ${year_label}

-
Click job count to see the day's details
+ + + + + + +
+ ${get_pages( sort_id, order, page_specs, 'jobs', 'specified_month_all' )} + +

Jobs for ${month_label} ${year_label}

+
Click job count to see the day's details
+
+ ${get_entry_selector("jobs", "specified_month_all", page_specs.entries, sort_id, order)} +
%if len( jobs ) == 0: @@ -22,37 +35,49 @@ ${get_css()} %if is_user_jobs_only: %else: %endif - <% ctr = 0 %> + <% + ctr = 0 + entries = 1 + %> %for job in jobs: <% key = job[1] %> + + %if entries > page_specs.entries: + <%break%> + %endif + %if ctr % 2 == 1: %else: %endif + ${make_sparkline(key, trends[key], "bar", "/ hour")} - <% ctr += 1 %> + <% + ctr += 1 + entries += 1 + %> %endfor %endif
There are no jobs for ${month_label} ${year_label}
Day - ${get_sort_url(sort_id, order, 'date', 'jobs', 'specified_month_all', 'Date')} + ${get_sort_url(sort_id, order, 'date', 'jobs', 'specified_month_all', 'Date', page=page_specs.page, entries=page_specs.entries)} ${arrow} - ${get_sort_url(sort_id, order, 'total_jobs', 'jobs', 'specified_month_all', 'User Jobs')} + ${get_sort_url(sort_id, order, 'total_jobs', 'jobs', 'specified_month_all', 'User Jobs', page=page_specs.page, entries=page_specs.entries)} ${arrow} - ${get_sort_url(sort_id, order, 'total_jobs', 'jobs', 'specified_month_all', 'User and Monitor Jobs')} + ${get_sort_url(sort_id, order, 'total_jobs', 'jobs', 'specified_month_all', 'User and Monitor Jobs', page=page_specs.page, entries=page_specs.entries)} ${arrow}
${job[0]} ${month_label} ${job[1]}, ${year_label} ${job[2]}