From: Alexandru DAMIAN Date: Tue, 19 May 2015 12:30:05 +0000 (+0100) Subject: bitbake: toasterui: replace cookie-based preferences with session data X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fea4a82a2b9fdbbccd0a09a76208cebbefdd8b20;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git bitbake: toasterui: replace cookie-based preferences with session data We switch from storing the user preferences using cookies to saving them in the server-side session. Patch for "count/pagesize" and "orderby" fields in the table-based pages. This patch will solve two problems: * the browser-side race between the GET header data and the cookie data * page breakages when field names chances in orderby statements. (Bitbake rev: 125d0e05805247450be0675e281a21bd6146d108) Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html index d48ad920208..4c28cae8105 100644 --- a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html +++ b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html @@ -60,8 +60,6 @@ // load cookie for number of entries to be displayed on page if ({{request.GET.count}} != "") { pagesize = {{request.GET.count}}; - } else { - pagesize = $.cookie('_count'); } $('.pagesize option').prop('selected', false) @@ -84,8 +82,6 @@ $('.progress, .lead span').tooltip({container:'table', placement:'top'}); $(".pagesize").change(function () { - // save cookie with pagesize - $.cookie("_count", $(this).val(), { path : $(location).attr('pathname') }); reload_params({"count":$(this).val()}); }); }); diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_top.html b/bitbake/lib/toaster/toastergui/templates/basetable_top.html index 92a3b508011..fcd2f036ecf 100644 --- a/bitbake/lib/toaster/toastergui/templates/basetable_top.html +++ b/bitbake/lib/toaster/toastergui/templates/basetable_top.html @@ -156,13 +156,6 @@ showhideImmediateTableAction( clname, sh, orderkey ); } - // - // saves a cookie with selected order field - // - function saveOrderCookie( orderfield ) { - $.cookie("orderby", orderfield, { path: $(location).attr('pathname') }); - } - @@ -230,7 +223,7 @@ {% for tc in tablecols %} {%if tc.qhelp%}{%endif%} - {%if tc.orderfield%}{{tc.name}}{%else%}{{tc.name}}{%endif%} + {%if tc.orderfield%}{{tc.name}}{%else%}{{tc.name}}{%endif%} {%if tc.ordericon%} {%endif%} {%if tc.filter%}
diff --git a/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html b/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html index 355ae9073c3..434facba936 100644 --- a/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html +++ b/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html @@ -41,17 +41,12 @@ // load cookie for number of entries to be displayed on page if ({{request.GET.count}} != "") { pagesize = {{request.GET.count}}; - } else { - pagesize = $.cookie('_count'); } - $('.pagesize option').prop('selected', false) .filter('[value="' + pagesize + '"]') .attr('selected', true); $(".pagesize").change(function () { - // save cookie with pagesize - $.cookie("_count", $(this).val(), { path : $(location).attr('pathname') }); reload_params({"count":$(this).val()}); }); }); diff --git a/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html b/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html index a7917dcf5aa..5214444ee01 100644 --- a/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html +++ b/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html @@ -11,7 +11,7 @@ {% for tc in tablecols %} {%if tc.qhelp%}{%endif%} - {%if tc.orderfield%}{{tc.name}}{%else%}{{tc.name}}{%endif%} + {%if tc.orderfield%}{{tc.name}}{%else%}{{tc.name}}{%endif%} {%if tc.ordericon%} {%endif%} {% if request.GET.search and forloop.first %} {{objects.paginator.count}} diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index f70cf205b7e..0e248a7435e 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py @@ -20,7 +20,6 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. import operator,re -import HTMLParser from django.db.models import Q, Sum, Count, Max from django.db import IntegrityError @@ -278,11 +277,11 @@ def _get_parameters_values(request, default_count, default_order): # set cookies for parameters. this is usefull in case parameters are set # manually from the GET values of the link -def _save_parameters_cookies(response, pagesize, orderby, request): - html_parser = HTMLParser.HTMLParser() - response.set_cookie(key='count', value=pagesize, path=request.path) - response.set_cookie(key='orderby', value=html_parser.unescape(orderby), path=request.path) - return response +def _set_parameters_values(pagesize, orderby, request): + from django.core.urlresolvers import resolve + current_url = resolve(request.path_info).url_name + request.session['%s_count' % current_url] = pagesize + request.session['%s_orderby' % current_url] =orderby # date range: normalize GUI's dd/mm/yyyy to date object def _normalize_input_date(date_str,default): @@ -563,7 +562,7 @@ def recipe_packages(request, build_id, recipe_id): ] } response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def target_common( request, build_id, target_id, variant ): @@ -737,7 +736,7 @@ eans multiple licenses exist that cover different parts of the source', context['tablecols'].append(tc_layerDir) response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def target( request, build_id, target_id ): @@ -1129,7 +1128,7 @@ def tasks_common(request, build_id, variant, task_anchor): context['tablecols'].append(tc_log) response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def tasks(request, build_id): @@ -1265,7 +1264,7 @@ def recipes(request, build_id): response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def configuration(request, build_id): @@ -1378,7 +1377,7 @@ def configvars(request, build_id): } response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def bpackage(request, build_id): @@ -1479,7 +1478,7 @@ def bpackage(request, build_id): context['tablecols'].append(tc_layerDir) response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def bfile(request, build_id, package_id): @@ -1640,7 +1639,7 @@ def package_built_detail(request, build_id, package_id): context['disable_sort'] = True; response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def package_built_dependencies(request, build_id, package_id): @@ -1705,7 +1704,7 @@ def package_included_detail(request, build_id, target_id, package_id): if paths.all().count() < 2: context['disable_sort'] = True response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def package_included_dependencies(request, build_id, target_id, package_id): @@ -1780,7 +1779,7 @@ def package_included_reverse_dependencies(request, build_id, target_id, package_ if objects.all().count() < 2: context['disable_sort'] = True response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def image_information_dir(request, build_id, target_id, packagefile_id): @@ -1842,7 +1841,7 @@ if toastermain.settings.MANAGED: return _redirect_parameters( builds, request.GET, e.response) response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response @@ -2748,7 +2747,7 @@ if toastermain.settings.MANAGED: return _redirect_parameters(projectbuilds, request.GET, e.response, pid = pid) response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response @@ -2967,7 +2966,7 @@ if toastermain.settings.MANAGED: } response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response def buildrequestdetails(request, pid, brid): @@ -3171,7 +3170,7 @@ else: context.update(context_date) response = render(request, template, context) - _save_parameters_cookies(response, pagesize, orderby, request) + _set_parameters_values(pagesize, orderby, request) return response