mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
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 <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
1b6a50c6b2
commit
fea4a82a2b
@@ -60,8 +60,6 @@
|
|||||||
// load cookie for number of entries to be displayed on page
|
// load cookie for number of entries to be displayed on page
|
||||||
if ({{request.GET.count}} != "") {
|
if ({{request.GET.count}} != "") {
|
||||||
pagesize = {{request.GET.count}};
|
pagesize = {{request.GET.count}};
|
||||||
} else {
|
|
||||||
pagesize = $.cookie('_count');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.pagesize option').prop('selected', false)
|
$('.pagesize option').prop('selected', false)
|
||||||
@@ -84,8 +82,6 @@
|
|||||||
$('.progress, .lead span').tooltip({container:'table', placement:'top'});
|
$('.progress, .lead span').tooltip({container:'table', placement:'top'});
|
||||||
|
|
||||||
$(".pagesize").change(function () {
|
$(".pagesize").change(function () {
|
||||||
// save cookie with pagesize
|
|
||||||
$.cookie("_count", $(this).val(), { path : $(location).attr('pathname') });
|
|
||||||
reload_params({"count":$(this).val()});
|
reload_params({"count":$(this).val()});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -156,13 +156,6 @@
|
|||||||
showhideImmediateTableAction( clname, sh, orderkey );
|
showhideImmediateTableAction( clname, sh, orderkey );
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// saves a cookie with selected order field
|
|
||||||
//
|
|
||||||
function saveOrderCookie( orderfield ) {
|
|
||||||
$.cookie("orderby", orderfield, { path: $(location).attr('pathname') });
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- control header -->
|
<!-- control header -->
|
||||||
@@ -230,7 +223,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
{% for tc in tablecols %}<th class="{{tc.dclass}} {{tc.clclass}}">
|
{% for tc in tablecols %}<th class="{{tc.dclass}} {{tc.clclass}}">
|
||||||
{%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
|
{%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
|
||||||
{%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%}
|
{%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%}
|
||||||
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
||||||
{%if tc.filter%}<div class="btn-group pull-right">
|
{%if tc.filter%}<div class="btn-group pull-right">
|
||||||
<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>
|
<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>
|
||||||
|
|||||||
@@ -41,17 +41,12 @@
|
|||||||
// load cookie for number of entries to be displayed on page
|
// load cookie for number of entries to be displayed on page
|
||||||
if ({{request.GET.count}} != "") {
|
if ({{request.GET.count}} != "") {
|
||||||
pagesize = {{request.GET.count}};
|
pagesize = {{request.GET.count}};
|
||||||
} else {
|
|
||||||
pagesize = $.cookie('_count');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.pagesize option').prop('selected', false)
|
$('.pagesize option').prop('selected', false)
|
||||||
.filter('[value="' + pagesize + '"]')
|
.filter('[value="' + pagesize + '"]')
|
||||||
.attr('selected', true);
|
.attr('selected', true);
|
||||||
|
|
||||||
$(".pagesize").change(function () {
|
$(".pagesize").change(function () {
|
||||||
// save cookie with pagesize
|
|
||||||
$.cookie("_count", $(this).val(), { path : $(location).attr('pathname') });
|
|
||||||
reload_params({"count":$(this).val()});
|
reload_params({"count":$(this).val()});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
{% for tc in tablecols %}<th class="{{tc.dclass}} {{tc.clclass}}">
|
{% for tc in tablecols %}<th class="{{tc.dclass}} {{tc.clclass}}">
|
||||||
{%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
|
{%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
|
||||||
{%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%}
|
{%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%}
|
||||||
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
||||||
{% if request.GET.search and forloop.first %}
|
{% if request.GET.search and forloop.first %}
|
||||||
<span class="badge badge-info">{{objects.paginator.count}}</span>
|
<span class="badge badge-info">{{objects.paginator.count}}</span>
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
import operator,re
|
import operator,re
|
||||||
import HTMLParser
|
|
||||||
|
|
||||||
from django.db.models import Q, Sum, Count, Max
|
from django.db.models import Q, Sum, Count, Max
|
||||||
from django.db import IntegrityError
|
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
|
# set cookies for parameters. this is usefull in case parameters are set
|
||||||
# manually from the GET values of the link
|
# manually from the GET values of the link
|
||||||
def _save_parameters_cookies(response, pagesize, orderby, request):
|
def _set_parameters_values(pagesize, orderby, request):
|
||||||
html_parser = HTMLParser.HTMLParser()
|
from django.core.urlresolvers import resolve
|
||||||
response.set_cookie(key='count', value=pagesize, path=request.path)
|
current_url = resolve(request.path_info).url_name
|
||||||
response.set_cookie(key='orderby', value=html_parser.unescape(orderby), path=request.path)
|
request.session['%s_count' % current_url] = pagesize
|
||||||
return response
|
request.session['%s_orderby' % current_url] =orderby
|
||||||
|
|
||||||
# date range: normalize GUI's dd/mm/yyyy to date object
|
# date range: normalize GUI's dd/mm/yyyy to date object
|
||||||
def _normalize_input_date(date_str,default):
|
def _normalize_input_date(date_str,default):
|
||||||
@@ -563,7 +562,7 @@ def recipe_packages(request, build_id, recipe_id):
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def target_common( request, build_id, target_id, variant ):
|
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)
|
context['tablecols'].append(tc_layerDir)
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def target( request, build_id, target_id ):
|
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)
|
context['tablecols'].append(tc_log)
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def tasks(request, build_id):
|
def tasks(request, build_id):
|
||||||
@@ -1265,7 +1264,7 @@ def recipes(request, build_id):
|
|||||||
|
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def configuration(request, build_id):
|
def configuration(request, build_id):
|
||||||
@@ -1378,7 +1377,7 @@ def configvars(request, build_id):
|
|||||||
}
|
}
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def bpackage(request, build_id):
|
def bpackage(request, build_id):
|
||||||
@@ -1479,7 +1478,7 @@ def bpackage(request, build_id):
|
|||||||
context['tablecols'].append(tc_layerDir)
|
context['tablecols'].append(tc_layerDir)
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def bfile(request, build_id, package_id):
|
def bfile(request, build_id, package_id):
|
||||||
@@ -1640,7 +1639,7 @@ def package_built_detail(request, build_id, package_id):
|
|||||||
context['disable_sort'] = True;
|
context['disable_sort'] = True;
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def package_built_dependencies(request, build_id, package_id):
|
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:
|
if paths.all().count() < 2:
|
||||||
context['disable_sort'] = True
|
context['disable_sort'] = True
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def package_included_dependencies(request, build_id, target_id, package_id):
|
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:
|
if objects.all().count() < 2:
|
||||||
context['disable_sort'] = True
|
context['disable_sort'] = True
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def image_information_dir(request, build_id, target_id, packagefile_id):
|
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)
|
return _redirect_parameters( builds, request.GET, e.response)
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@@ -2748,7 +2747,7 @@ if toastermain.settings.MANAGED:
|
|||||||
return _redirect_parameters(projectbuilds, request.GET, e.response, pid = pid)
|
return _redirect_parameters(projectbuilds, request.GET, e.response, pid = pid)
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@@ -2967,7 +2966,7 @@ if toastermain.settings.MANAGED:
|
|||||||
}
|
}
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def buildrequestdetails(request, pid, brid):
|
def buildrequestdetails(request, pid, brid):
|
||||||
@@ -3171,7 +3170,7 @@ else:
|
|||||||
context.update(context_date)
|
context.update(context_date)
|
||||||
|
|
||||||
response = render(request, template, context)
|
response = render(request, template, context)
|
||||||
_save_parameters_cookies(response, pagesize, orderby, request)
|
_set_parameters_values(pagesize, orderby, request)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user