diff options
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/basetable_bottom.html | 15 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/basetable_top.html | 11 | ||||
| -rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 122 |
3 files changed, 102 insertions, 46 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html index ac14363798..cbdc164273 100644 --- a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html +++ b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html | |||
| @@ -26,7 +26,7 @@ | |||
| 26 | <span class="help-inline" style="padding-top:5px;">Show rows:</span> | 26 | <span class="help-inline" style="padding-top:5px;">Show rows:</span> |
| 27 | <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> | 27 | <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> |
| 28 | {% with "2 5 10 25 50 100" as list%} | 28 | {% with "2 5 10 25 50 100" as list%} |
| 29 | {% for i in list.split %}<option{%if i == request.GET.count %} selected{%endif%}>{{i}}</option> | 29 | {% for i in list.split %}<option value="{{i}}">{{i}}</option> |
| 30 | {% endfor %} | 30 | {% endfor %} |
| 31 | {% endwith %} | 31 | {% endwith %} |
| 32 | </select> | 32 | </select> |
| @@ -56,6 +56,14 @@ | |||
| 56 | } | 56 | } |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | // load cookie for number of entries to be displayed on page | ||
| 60 | pagesize = $.cookie('count'); | ||
| 61 | if (!pagesize) | ||
| 62 | pagesize = 10; | ||
| 63 | $('.pagesize option').prop('selected', false) | ||
| 64 | .filter('[value="' + pagesize + '"]') | ||
| 65 | .attr('selected', true); | ||
| 66 | |||
| 59 | $('.chbxtoggle').each(function () { | 67 | $('.chbxtoggle').each(function () { |
| 60 | showhideTableColumn($(this).attr('id'), $(this).is(':checked')) | 68 | showhideTableColumn($(this).attr('id'), $(this).is(':checked')) |
| 61 | }); | 69 | }); |
| @@ -72,8 +80,9 @@ | |||
| 72 | $('.progress, .lead span').tooltip({container:'table', placement:'top'}); | 80 | $('.progress, .lead span').tooltip({container:'table', placement:'top'}); |
| 73 | 81 | ||
| 74 | $(".pagesize").change(function () { | 82 | $(".pagesize").change(function () { |
| 75 | console.log("page size change"); | 83 | reload_params({"count":$(this).val()}); |
| 76 | reload_params({"count":$(this).val()}); ; | 84 | // save cookie with pagesize |
| 85 | $.cookie("count", $(this).val(), { path : $(location).attr('pathname') }); | ||
| 77 | }); | 86 | }); |
| 78 | }); | 87 | }); |
| 79 | </script> | 88 | </script> |
diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_top.html b/bitbake/lib/toaster/toastergui/templates/basetable_top.html index 1231e1f924..037554b627 100644 --- a/bitbake/lib/toaster/toastergui/templates/basetable_top.html +++ b/bitbake/lib/toaster/toastergui/templates/basetable_top.html | |||
| @@ -156,6 +156,13 @@ | |||
| 156 | showhideImmediateTableAction( clname, sh, orderkey ); | 156 | showhideImmediateTableAction( clname, sh, orderkey ); |
| 157 | } | 157 | } |
| 158 | 158 | ||
| 159 | // | ||
| 160 | // saves a cookie with selected order field | ||
| 161 | // | ||
| 162 | function saveOrderCookie( orderfield ) { | ||
| 163 | $.cookie("orderby", orderfield, { path: $(location).attr('pathname') }); | ||
| 164 | } | ||
| 165 | |||
| 159 | </script> | 166 | </script> |
| 160 | 167 | ||
| 161 | <!-- control header --> | 168 | <!-- control header --> |
| @@ -205,7 +212,7 @@ | |||
| 205 | <span class="help-inline" style="padding-top:5px;">Show rows:</span> | 212 | <span class="help-inline" style="padding-top:5px;">Show rows:</span> |
| 206 | <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> | 213 | <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> |
| 207 | {% with "2 5 10 25 50 100" as list%} | 214 | {% with "2 5 10 25 50 100" as list%} |
| 208 | {% for i in list.split %} <option{%if i == request.GET.count %} selected{%endif%}>{{i}}</option> | 215 | {% for i in list.split %} <option value="{{i}}">{{i}}</option> |
| 209 | {% endfor %} | 216 | {% endfor %} |
| 210 | {% endwith %} | 217 | {% endwith %} |
| 211 | </select> | 218 | </select> |
| @@ -221,7 +228,7 @@ | |||
| 221 | <tr> | 228 | <tr> |
| 222 | {% for tc in tablecols %}<th class="{{tc.dclass}} {{tc.clclass}}"> | 229 | {% for tc in tablecols %}<th class="{{tc.dclass}} {{tc.clclass}}"> |
| 223 | {%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%} | 230 | {%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%} |
| 224 | {%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })" >{{tc.name}}</a>{%else%}<span class="muted">{{tc.name}}</span>{%endif%} | 231 | {%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })" onclick="saveOrderCookie('{{tc.orderfield}}')">{{tc.name}}</a>{%else%}<span class="muted">{{tc.name}}</span>{%endif%} |
| 225 | {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%} | 232 | {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%} |
| 226 | {%if tc.filter%}<div class="btn-group pull-right"> | 233 | {%if tc.filter%}<div class="btn-group pull-right"> |
| 227 | <a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-mini {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-small btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <i class="icon-filter filtered"></i> </a> | 234 | <a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-mini {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-small btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <i class="icon-filter filtered"></i> </a> |
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 22b26d0e83..defbbbfa4c 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | 20 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| 21 | 21 | ||
| 22 | import operator,re | 22 | import operator,re |
| 23 | import HTMLParser | ||
| 23 | 24 | ||
| 24 | from django.db.models import Q, Sum | 25 | from django.db.models import Q, Sum |
| 25 | from django.db import IntegrityError | 26 | from django.db import IntegrityError |
| @@ -32,6 +33,7 @@ from django.core.urlresolvers import reverse | |||
| 32 | from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger | 33 | from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger |
| 33 | from django.http import HttpResponseBadRequest, HttpResponseNotFound | 34 | from django.http import HttpResponseBadRequest, HttpResponseNotFound |
| 34 | from django.utils import timezone | 35 | from django.utils import timezone |
| 36 | from django.utils.html import escape | ||
| 35 | from datetime import timedelta | 37 | from datetime import timedelta |
| 36 | from django.utils import formats | 38 | from django.utils import formats |
| 37 | import json | 39 | import json |
| @@ -200,6 +202,22 @@ def _get_queryset(model, queryset, filter_string, search_term, ordering_string, | |||
| 200 | # insure only distinct records (e.g. from multiple search hits) are returned | 202 | # insure only distinct records (e.g. from multiple search hits) are returned |
| 201 | return queryset.distinct() | 203 | return queryset.distinct() |
| 202 | 204 | ||
| 205 | # returns the value of entries per page and the name of the applied sorting field. | ||
| 206 | # if the value is given explicitly as a GET parameter it will be the first selected, | ||
| 207 | # otherwise the cookie value will be used. | ||
| 208 | def _get_parameters_values(request, default_count, default_order): | ||
| 209 | pagesize = request.GET.get('count', request.COOKIES.get('count', default_count)) | ||
| 210 | orderby = request.GET.get('orderby', request.COOKIES.get('orderby', default_order)) | ||
| 211 | return (pagesize, orderby) | ||
| 212 | |||
| 213 | |||
| 214 | # set cookies for parameters. this is usefull in case parameters are set | ||
| 215 | # manually from the GET values of the link | ||
| 216 | def _save_parameters_cookies(response, pagesize, orderby, request): | ||
| 217 | html_parser = HTMLParser.HTMLParser() | ||
| 218 | response.set_cookie(key='count', value=pagesize, path=request.path) | ||
| 219 | response.set_cookie(key='orderby', value=html_parser.unescape(orderby), path=request.path) | ||
| 220 | return response | ||
| 203 | 221 | ||
| 204 | # shows the "all builds" page | 222 | # shows the "all builds" page |
| 205 | def builds(request): | 223 | def builds(request): |
| @@ -207,7 +225,8 @@ def builds(request): | |||
| 207 | # define here what parameters the view needs in the GET portion in order to | 225 | # define here what parameters the view needs in the GET portion in order to |
| 208 | # be able to display something. 'count' and 'page' are mandatory for all views | 226 | # be able to display something. 'count' and 'page' are mandatory for all views |
| 209 | # that use paginators. | 227 | # that use paginators. |
| 210 | mandatory_parameters = { 'count': 10, 'page' : 1, 'orderby' : 'completed_on:-' }; | 228 | (pagesize, orderby) = _get_parameters_values(request, 10, 'completed_on:-') |
| 229 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } | ||
| 211 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 230 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 212 | if retval: | 231 | if retval: |
| 213 | return _redirect_parameters( 'all-builds', request.GET, mandatory_parameters) | 232 | return _redirect_parameters( 'all-builds', request.GET, mandatory_parameters) |
| @@ -220,7 +239,7 @@ def builds(request): | |||
| 220 | queryset = _get_queryset(Build, queryset_all, filter_string, search_term, ordering_string, '-completed_on') | 239 | queryset = _get_queryset(Build, queryset_all, filter_string, search_term, ordering_string, '-completed_on') |
| 221 | 240 | ||
| 222 | # retrieve the objects that will be displayed in the table; builds a paginator and gets a page range to display | 241 | # retrieve the objects that will be displayed in the table; builds a paginator and gets a page range to display |
| 223 | build_info = _build_page_range(Paginator(queryset, request.GET.get('count', 10)),request.GET.get('page', 1)) | 242 | build_info = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) |
| 224 | 243 | ||
| 225 | # build view-specific information; this is rendered specifically in the builds page, at the top of the page (i.e. Recent builds) | 244 | # build view-specific information; this is rendered specifically in the builds page, at the top of the page (i.e. Recent builds) |
| 226 | build_mru = Build.objects.filter(completed_on__gte=(timezone.now()-timedelta(hours=24))).order_by("-started_on")[:3] | 245 | build_mru = Build.objects.filter(completed_on__gte=(timezone.now()-timedelta(hours=24))).order_by("-started_on")[:3] |
| @@ -368,7 +387,9 @@ def builds(request): | |||
| 368 | ] | 387 | ] |
| 369 | } | 388 | } |
| 370 | 389 | ||
| 371 | return render(request, template, context) | 390 | response = render(request, template, context) |
| 391 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 392 | return response | ||
| 372 | 393 | ||
| 373 | 394 | ||
| 374 | ## | 395 | ## |
| @@ -537,8 +558,8 @@ def recipe(request, build_id, recipe_id): | |||
| 537 | 558 | ||
| 538 | def target_common( request, build_id, target_id, variant ): | 559 | def target_common( request, build_id, target_id, variant ): |
| 539 | template = "target.html" | 560 | template = "target.html" |
| 540 | default_orderby = 'name:+'; | 561 | (pagesize, orderby) = _get_parameters_values(request, 25, 'name:+') |
| 541 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'name:+'}; | 562 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby': orderby } |
| 542 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 563 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 543 | if retval: | 564 | if retval: |
| 544 | return _redirect_parameters( | 565 | return _redirect_parameters( |
| @@ -554,8 +575,7 @@ def target_common( request, build_id, target_id, variant ): | |||
| 554 | packages_sum = queryset.aggregate( Sum( 'installed_size' )) | 575 | packages_sum = queryset.aggregate( Sum( 'installed_size' )) |
| 555 | queryset = _get_queryset( | 576 | queryset = _get_queryset( |
| 556 | Package, queryset, filter_string, search_term, ordering_string, 'name' ) | 577 | Package, queryset, filter_string, search_term, ordering_string, 'name' ) |
| 557 | packages = _build_page_range( Paginator( | 578 | packages = _build_page_range( Paginator(queryset, pagesize), request.GET.get( 'page', 1 )) |
| 558 | queryset, request.GET.get( 'count', 25 )),request.GET.get( 'page', 1 )) | ||
| 559 | 579 | ||
| 560 | # bring in package dependencies | 580 | # bring in package dependencies |
| 561 | for p in packages.object_list: | 581 | for p in packages.object_list: |
| @@ -679,7 +699,7 @@ his package', | |||
| 679 | 'objects' : packages, | 699 | 'objects' : packages, |
| 680 | 'packages_sum' : packages_sum[ 'installed_size__sum' ], | 700 | 'packages_sum' : packages_sum[ 'installed_size__sum' ], |
| 681 | 'object_search_display': "packages included", | 701 | 'object_search_display': "packages included", |
| 682 | 'default_orderby' : default_orderby, | 702 | 'default_orderby' : orderby, |
| 683 | 'tablecols' : [ | 703 | 'tablecols' : [ |
| 684 | tc_package, | 704 | tc_package, |
| 685 | tc_packageVersion, | 705 | tc_packageVersion, |
| @@ -696,7 +716,10 @@ his package', | |||
| 696 | tc_layerDir, | 716 | tc_layerDir, |
| 697 | ] | 717 | ] |
| 698 | } | 718 | } |
| 699 | return( render( request, template, context )) | 719 | |
| 720 | response = render(request, template, context) | ||
| 721 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 722 | return response | ||
| 700 | 723 | ||
| 701 | def target( request, build_id, target_id ): | 724 | def target( request, build_id, target_id ): |
| 702 | return( target_common( request, build_id, target_id, "target" )) | 725 | return( target_common( request, build_id, target_id, "target" )) |
| @@ -878,26 +901,25 @@ def tasks_common(request, build_id, variant, task_anchor): | |||
| 878 | title_variant='Time' | 901 | title_variant='Time' |
| 879 | object_search_display="time data" | 902 | object_search_display="time data" |
| 880 | filter_search_display="tasks" | 903 | filter_search_display="tasks" |
| 881 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'elapsed_time:-'}; | 904 | (pagesize, orderby) = _get_parameters_values(request, 25, 'elapsed_time:-') |
| 882 | default_orderby = 'elapsed_time:-'; | ||
| 883 | elif 'diskio' == variant: | 905 | elif 'diskio' == variant: |
| 884 | title_variant='Disk I/O' | 906 | title_variant='Disk I/O' |
| 885 | object_search_display="disk I/O data" | 907 | object_search_display="disk I/O data" |
| 886 | filter_search_display="tasks" | 908 | filter_search_display="tasks" |
| 887 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'disk_io:-'}; | 909 | (pagesize, orderby) = _get_parameters_values(request, 25, 'disk_io:-') |
| 888 | default_orderby = 'disk_io:-'; | ||
| 889 | elif 'cpuusage' == variant: | 910 | elif 'cpuusage' == variant: |
| 890 | title_variant='CPU usage' | 911 | title_variant='CPU usage' |
| 891 | object_search_display="CPU usage data" | 912 | object_search_display="CPU usage data" |
| 892 | filter_search_display="tasks" | 913 | filter_search_display="tasks" |
| 893 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'cpu_usage:-'}; | 914 | (pagesize, orderby) = _get_parameters_values(request, 25, 'cpu_usage:-') |
| 894 | default_orderby = 'cpu_usage:-'; | ||
| 895 | else : | 915 | else : |
| 896 | title_variant='Tasks' | 916 | title_variant='Tasks' |
| 897 | object_search_display="tasks" | 917 | object_search_display="tasks" |
| 898 | filter_search_display="tasks" | 918 | filter_search_display="tasks" |
| 899 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'order:+'}; | 919 | (pagesize, orderby) = _get_parameters_values(request, 25, 'order:+') |
| 900 | default_orderby = 'order:+'; | 920 | |
| 921 | |||
| 922 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby': orderby } | ||
| 901 | 923 | ||
| 902 | template = 'tasks.html' | 924 | template = 'tasks.html' |
| 903 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 925 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| @@ -923,7 +945,7 @@ def tasks_common(request, build_id, variant, task_anchor): | |||
| 923 | del request.GET['anchor'] | 945 | del request.GET['anchor'] |
| 924 | i=0 | 946 | i=0 |
| 925 | a=int(anchor) | 947 | a=int(anchor) |
| 926 | count_per_page=int(request.GET.get('count', 100)) | 948 | count_per_page=int(pagesize) |
| 927 | for task in queryset.iterator(): | 949 | for task in queryset.iterator(): |
| 928 | if a == task.order: | 950 | if a == task.order: |
| 929 | new_page= (i / count_per_page ) + 1 | 951 | new_page= (i / count_per_page ) + 1 |
| @@ -932,7 +954,7 @@ def tasks_common(request, build_id, variant, task_anchor): | |||
| 932 | return _redirect_parameters( variant, request.GET, mandatory_parameters, build_id = build_id) | 954 | return _redirect_parameters( variant, request.GET, mandatory_parameters, build_id = build_id) |
| 933 | i += 1 | 955 | i += 1 |
| 934 | 956 | ||
| 935 | tasks = _build_page_range(Paginator(queryset, request.GET.get('count', 100)),request.GET.get('page', 1)) | 957 | tasks = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1)) |
| 936 | 958 | ||
| 937 | # define (and modify by variants) the 'tablecols' members | 959 | # define (and modify by variants) the 'tablecols' members |
| 938 | tc_order={ | 960 | tc_order={ |
| @@ -1063,7 +1085,7 @@ def tasks_common(request, build_id, variant, task_anchor): | |||
| 1063 | 'title': title_variant, | 1085 | 'title': title_variant, |
| 1064 | 'build': Build.objects.filter(pk=build_id)[0], | 1086 | 'build': Build.objects.filter(pk=build_id)[0], |
| 1065 | 'objects': tasks, | 1087 | 'objects': tasks, |
| 1066 | 'default_orderby' : default_orderby, | 1088 | 'default_orderby' : orderby, |
| 1067 | 'search_term': search_term, | 1089 | 'search_term': search_term, |
| 1068 | 'total_count': queryset_with_search.count(), | 1090 | 'total_count': queryset_with_search.count(), |
| 1069 | 'tablecols':[ | 1091 | 'tablecols':[ |
| @@ -1080,7 +1102,9 @@ def tasks_common(request, build_id, variant, task_anchor): | |||
| 1080 | tc_log, | 1102 | tc_log, |
| 1081 | ]} | 1103 | ]} |
| 1082 | 1104 | ||
| 1083 | return render(request, template, context) | 1105 | response = render(request, template, context) |
| 1106 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 1107 | return response | ||
| 1084 | 1108 | ||
| 1085 | def tasks(request, build_id): | 1109 | def tasks(request, build_id): |
| 1086 | return tasks_common(request, build_id, 'tasks', '') | 1110 | return tasks_common(request, build_id, 'tasks', '') |
| @@ -1100,7 +1124,8 @@ def cpuusage(request, build_id): | |||
| 1100 | 1124 | ||
| 1101 | def recipes(request, build_id): | 1125 | def recipes(request, build_id): |
| 1102 | template = 'recipes.html' | 1126 | template = 'recipes.html' |
| 1103 | mandatory_parameters = { 'count': 100, 'page' : 1, 'orderby':'name:+'}; | 1127 | (pagesize, orderby) = _get_parameters_values(request, 100, 'name:+') |
| 1128 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } | ||
| 1104 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1129 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 1105 | if retval: | 1130 | if retval: |
| 1106 | return _redirect_parameters( 'recipes', request.GET, mandatory_parameters, build_id = build_id) | 1131 | return _redirect_parameters( 'recipes', request.GET, mandatory_parameters, build_id = build_id) |
| @@ -1108,7 +1133,7 @@ def recipes(request, build_id): | |||
| 1108 | queryset = Recipe.objects.filter(layer_version__id__in=Layer_Version.objects.filter(build=build_id)) | 1133 | queryset = Recipe.objects.filter(layer_version__id__in=Layer_Version.objects.filter(build=build_id)) |
| 1109 | queryset = _get_queryset(Recipe, queryset, filter_string, search_term, ordering_string, 'name') | 1134 | queryset = _get_queryset(Recipe, queryset, filter_string, search_term, ordering_string, 'name') |
| 1110 | 1135 | ||
| 1111 | recipes = _build_page_range(Paginator(queryset, request.GET.get('count', 100)),request.GET.get('page', 1)) | 1136 | recipes = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1)) |
| 1112 | 1137 | ||
| 1113 | # prefetch the forward and reverse recipe dependencies | 1138 | # prefetch the forward and reverse recipe dependencies |
| 1114 | deps = { }; revs = { } | 1139 | deps = { }; revs = { } |
| @@ -1207,8 +1232,9 @@ def recipes(request, build_id): | |||
| 1207 | ] | 1232 | ] |
| 1208 | } | 1233 | } |
| 1209 | 1234 | ||
| 1210 | return render(request, template, context) | 1235 | response = render(request, template, context) |
| 1211 | 1236 | _save_parameters_cookies(response, pagesize, orderby, request) | |
| 1237 | return response | ||
| 1212 | 1238 | ||
| 1213 | def configuration(request, build_id): | 1239 | def configuration(request, build_id): |
| 1214 | template = 'configuration.html' | 1240 | template = 'configuration.html' |
| @@ -1247,7 +1273,8 @@ def configuration(request, build_id): | |||
| 1247 | 1273 | ||
| 1248 | def configvars(request, build_id): | 1274 | def configvars(request, build_id): |
| 1249 | template = 'configvars.html' | 1275 | template = 'configvars.html' |
| 1250 | mandatory_parameters = { 'count': 100, 'page' : 1, 'orderby':'variable_name:+', 'filter':'description__regex:.+'}; | 1276 | (pagesize, orderby) = _get_parameters_values(request, 100, 'variable_name:+') |
| 1277 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby, 'filter' : 'description__regex:.+' } | ||
| 1251 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1278 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 1252 | (filter_string, search_term, ordering_string) = _search_tuple(request, Variable) | 1279 | (filter_string, search_term, ordering_string) = _search_tuple(request, Variable) |
| 1253 | if retval: | 1280 | if retval: |
| @@ -1262,7 +1289,7 @@ def configvars(request, build_id): | |||
| 1262 | # remove records where the value is empty AND there are no history files | 1289 | # remove records where the value is empty AND there are no history files |
| 1263 | queryset = queryset.exclude(variable_value='',vhistory__file_name__isnull=True) | 1290 | queryset = queryset.exclude(variable_value='',vhistory__file_name__isnull=True) |
| 1264 | 1291 | ||
| 1265 | variables = _build_page_range(Paginator(queryset, request.GET.get('count', 50)), request.GET.get('page', 1)) | 1292 | variables = _build_page_range(Paginator(queryset, pagesize), request.GET.get('page', 1)) |
| 1266 | 1293 | ||
| 1267 | # show all matching files (not just the last one) | 1294 | # show all matching files (not just the last one) |
| 1268 | file_filter= search_term + ":" | 1295 | file_filter= search_term + ":" |
| @@ -1328,12 +1355,14 @@ def configvars(request, build_id): | |||
| 1328 | ], | 1355 | ], |
| 1329 | } | 1356 | } |
| 1330 | 1357 | ||
| 1331 | return render(request, template, context) | 1358 | response = render(request, template, context) |
| 1332 | 1359 | _save_parameters_cookies(response, pagesize, orderby, request) | |
| 1360 | return response | ||
| 1333 | 1361 | ||
| 1334 | def bpackage(request, build_id): | 1362 | def bpackage(request, build_id): |
| 1335 | template = 'bpackage.html' | 1363 | template = 'bpackage.html' |
| 1336 | mandatory_parameters = { 'count': 100, 'page' : 1, 'orderby':'name:+'}; | 1364 | (pagesize, orderby) = _get_parameters_values(request, 100, 'name:+') |
| 1365 | mandatory_parameters = { 'count' : pagesize, 'page' : 1, 'orderby' : orderby } | ||
| 1337 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1366 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 1338 | if retval: | 1367 | if retval: |
| 1339 | return _redirect_parameters( 'packages', request.GET, mandatory_parameters, build_id = build_id) | 1368 | return _redirect_parameters( 'packages', request.GET, mandatory_parameters, build_id = build_id) |
| @@ -1341,7 +1370,7 @@ def bpackage(request, build_id): | |||
| 1341 | queryset = Package.objects.filter(build = build_id).filter(size__gte=0) | 1370 | queryset = Package.objects.filter(build = build_id).filter(size__gte=0) |
| 1342 | queryset = _get_queryset(Package, queryset, filter_string, search_term, ordering_string, 'name') | 1371 | queryset = _get_queryset(Package, queryset, filter_string, search_term, ordering_string, 'name') |
| 1343 | 1372 | ||
| 1344 | packages = _build_page_range(Paginator(queryset, request.GET.get('count', 100)),request.GET.get('page', 1)) | 1373 | packages = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1)) |
| 1345 | 1374 | ||
| 1346 | context = { | 1375 | context = { |
| 1347 | 'objectname': 'packages built', | 1376 | 'objectname': 'packages built', |
| @@ -1421,7 +1450,9 @@ def bpackage(request, build_id): | |||
| 1421 | ] | 1450 | ] |
| 1422 | } | 1451 | } |
| 1423 | 1452 | ||
| 1424 | return render(request, template, context) | 1453 | response = render(request, template, context) |
| 1454 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 1455 | return response | ||
| 1425 | 1456 | ||
| 1426 | def bfile(request, build_id, package_id): | 1457 | def bfile(request, build_id, package_id): |
| 1427 | template = 'bfile.html' | 1458 | template = 'bfile.html' |
| @@ -1576,7 +1607,8 @@ def package_built_detail(request, build_id, package_id): | |||
| 1576 | 1607 | ||
| 1577 | # follow convention for pagination w/ search although not used for this view | 1608 | # follow convention for pagination w/ search although not used for this view |
| 1578 | queryset = Package_File.objects.filter(package_id__exact=package_id) | 1609 | queryset = Package_File.objects.filter(package_id__exact=package_id) |
| 1579 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'path:+'}; | 1610 | (pagesize, orderby) = _get_parameters_values(request, 25, 'path:+') |
| 1611 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } | ||
| 1580 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1612 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 1581 | if retval: | 1613 | if retval: |
| 1582 | return _redirect_parameters( 'package_built_detail', request.GET, mandatory_parameters, build_id = build_id, package_id = package_id) | 1614 | return _redirect_parameters( 'package_built_detail', request.GET, mandatory_parameters, build_id = build_id, package_id = package_id) |
| @@ -1607,7 +1639,10 @@ def package_built_detail(request, build_id, package_id): | |||
| 1607 | } | 1639 | } |
| 1608 | if paths.all().count() < 2: | 1640 | if paths.all().count() < 2: |
| 1609 | context['disable_sort'] = True; | 1641 | context['disable_sort'] = True; |
| 1610 | return render(request, template, context) | 1642 | |
| 1643 | response = render(request, template, context) | ||
| 1644 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 1645 | return response | ||
| 1611 | 1646 | ||
| 1612 | def package_built_dependencies(request, build_id, package_id): | 1647 | def package_built_dependencies(request, build_id, package_id): |
| 1613 | template = "package_built_dependencies.html" | 1648 | template = "package_built_dependencies.html" |
| @@ -1632,9 +1667,9 @@ def package_included_detail(request, build_id, target_id, package_id): | |||
| 1632 | if Build.objects.filter(pk=build_id).count() == 0 : | 1667 | if Build.objects.filter(pk=build_id).count() == 0 : |
| 1633 | return redirect(builds) | 1668 | return redirect(builds) |
| 1634 | 1669 | ||
| 1635 | |||
| 1636 | # follow convention for pagination w/ search although not used for this view | 1670 | # follow convention for pagination w/ search although not used for this view |
| 1637 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'path:+'}; | 1671 | (pagesize, orderby) = _get_parameters_values(request, 25, 'path:+') |
| 1672 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } | ||
| 1638 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1673 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 1639 | if retval: | 1674 | if retval: |
| 1640 | return _redirect_parameters( 'package_included_detail', request.GET, mandatory_parameters, build_id = build_id, target_id = target_id, package_id = package_id) | 1675 | return _redirect_parameters( 'package_included_detail', request.GET, mandatory_parameters, build_id = build_id, target_id = target_id, package_id = package_id) |
| @@ -1669,8 +1704,10 @@ def package_included_detail(request, build_id, target_id, package_id): | |||
| 1669 | ] | 1704 | ] |
| 1670 | } | 1705 | } |
| 1671 | if paths.all().count() < 2: | 1706 | if paths.all().count() < 2: |
| 1672 | context['disable_sort'] = True; | 1707 | context['disable_sort'] = True |
| 1673 | return render(request, template, context) | 1708 | response = render(request, template, context) |
| 1709 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 1710 | return response | ||
| 1674 | 1711 | ||
| 1675 | def package_included_dependencies(request, build_id, target_id, package_id): | 1712 | def package_included_dependencies(request, build_id, target_id, package_id): |
| 1676 | template = "package_included_dependencies.html" | 1713 | template = "package_included_dependencies.html" |
| @@ -1699,7 +1736,8 @@ def package_included_reverse_dependencies(request, build_id, target_id, package_ | |||
| 1699 | if Build.objects.filter(pk=build_id).count() == 0 : | 1736 | if Build.objects.filter(pk=build_id).count() == 0 : |
| 1700 | return redirect(builds) | 1737 | return redirect(builds) |
| 1701 | 1738 | ||
| 1702 | mandatory_parameters = { 'count': 25, 'page' : 1, 'orderby':'package__name:+'}; | 1739 | (pagesize, orderby) = _get_parameters_values(request, 25, 'package__name:+') |
| 1740 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby': orderby } | ||
| 1703 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1741 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
| 1704 | if retval: | 1742 | if retval: |
| 1705 | return _redirect_parameters( 'package_included_reverse_dependencies', request.GET, mandatory_parameters, build_id = build_id, target_id = target_id, package_id = package_id) | 1743 | return _redirect_parameters( 'package_included_reverse_dependencies', request.GET, mandatory_parameters, build_id = build_id, target_id = target_id, package_id = package_id) |
| @@ -1741,8 +1779,10 @@ def package_included_reverse_dependencies(request, build_id, target_id, package_ | |||
| 1741 | ] | 1779 | ] |
| 1742 | } | 1780 | } |
| 1743 | if objects.all().count() < 2: | 1781 | if objects.all().count() < 2: |
| 1744 | context['disable_sort'] = True; | 1782 | context['disable_sort'] = True |
| 1745 | return render(request, template, context) | 1783 | response = render(request, template, context) |
| 1784 | _save_parameters_cookies(response, pagesize, orderby, request) | ||
| 1785 | return response | ||
| 1746 | 1786 | ||
| 1747 | def image_information_dir(request, build_id, target_id, packagefile_id): | 1787 | def image_information_dir(request, build_id, target_id, packagefile_id): |
| 1748 | # stubbed for now | 1788 | # stubbed for now |
