diff options
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 49 |
1 files changed, 32 insertions, 17 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 67c84b2934..d9802f01b8 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
@@ -1897,6 +1897,10 @@ if True: | |||
1897 | pass | 1897 | pass |
1898 | 1898 | ||
1899 | # shows the "all builds" page for managed mode; it displays build requests (at least started!) instead of actual builds | 1899 | # shows the "all builds" page for managed mode; it displays build requests (at least started!) instead of actual builds |
1900 | # WARNING _build_list_helper() may raise a RedirectException, which | ||
1901 | # will set the GET parameters and redirect back to the | ||
1902 | # all-builds or projectbuilds page as appropriate; | ||
1903 | # TODO don't use exceptions to control program flow | ||
1900 | @_template_renderer("builds.html") | 1904 | @_template_renderer("builds.html") |
1901 | def builds(request): | 1905 | def builds(request): |
1902 | # define here what parameters the view needs in the GET portion in order to | 1906 | # define here what parameters the view needs in the GET portion in order to |
@@ -1905,27 +1909,35 @@ if True: | |||
1905 | 1909 | ||
1906 | queryset = Build.objects.all() | 1910 | queryset = Build.objects.all() |
1907 | 1911 | ||
1908 | try: | 1912 | redirect_page = resolve(request.path_info).url_name |
1909 | context, pagesize, orderby = _build_list_helper(request, queryset) | 1913 | |
1910 | # all builds page as a Project column | 1914 | context, pagesize, orderby = _build_list_helper(request, |
1911 | context['tablecols'].append({'name': 'Project', 'clcalss': 'project_column', }) | 1915 | queryset, |
1912 | except RedirectException as re: | 1916 | redirect_page) |
1913 | # rewrite the RedirectException | 1917 | # all builds page as a Project column |
1914 | re.view = resolve(request.path_info).url_name | 1918 | context['tablecols'].append({ |
1915 | raise re | 1919 | 'name': 'Project', |
1920 | 'clclass': 'project_column' | ||
1921 | }) | ||
1916 | 1922 | ||
1917 | _set_parameters_values(pagesize, orderby, request) | 1923 | _set_parameters_values(pagesize, orderby, request) |
1918 | return context | 1924 | return context |
1919 | 1925 | ||
1920 | 1926 | ||
1921 | # helper function, to be used on "all builds" and "project builds" pages | 1927 | # helper function, to be used on "all builds" and "project builds" pages |
1922 | def _build_list_helper(request, queryset_all): | 1928 | def _build_list_helper(request, queryset_all, redirect_page, pid=None): |
1923 | default_orderby = 'completed_on:-' | 1929 | default_orderby = 'completed_on:-' |
1924 | (pagesize, orderby) = _get_parameters_values(request, 10, default_orderby) | 1930 | (pagesize, orderby) = _get_parameters_values(request, 10, default_orderby) |
1925 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } | 1931 | mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } |
1926 | retval = _verify_parameters( request.GET, mandatory_parameters ) | 1932 | retval = _verify_parameters( request.GET, mandatory_parameters ) |
1927 | if retval: | 1933 | if retval: |
1928 | raise RedirectException( None, request.GET, mandatory_parameters) | 1934 | params = {} |
1935 | if pid: | ||
1936 | params = {'pid': pid} | ||
1937 | raise RedirectException(redirect_page, | ||
1938 | request.GET, | ||
1939 | mandatory_parameters, | ||
1940 | **params) | ||
1929 | 1941 | ||
1930 | # boilerplate code that takes a request for an object type and returns a queryset | 1942 | # boilerplate code that takes a request for an object type and returns a queryset |
1931 | # for that object type. copypasta for all needed table searches | 1943 | # for that object type. copypasta for all needed table searches |
@@ -2669,6 +2681,10 @@ if True: | |||
2669 | 2681 | ||
2670 | return context | 2682 | return context |
2671 | 2683 | ||
2684 | # WARNING _build_list_helper() may raise a RedirectException, which | ||
2685 | # will set the GET parameters and redirect back to the | ||
2686 | # all-builds or projectbuilds page as appropriate; | ||
2687 | # TODO don't use exceptions to control program flow | ||
2672 | @_template_renderer('projectbuilds.html') | 2688 | @_template_renderer('projectbuilds.html') |
2673 | def projectbuilds(request, pid): | 2689 | def projectbuilds(request, pid): |
2674 | prj = Project.objects.get(id = pid) | 2690 | prj = Project.objects.get(id = pid) |
@@ -2708,13 +2724,12 @@ if True: | |||
2708 | 2724 | ||
2709 | queryset = Build.objects.filter(project_id = pid) | 2725 | queryset = Build.objects.filter(project_id = pid) |
2710 | 2726 | ||
2711 | try: | 2727 | redirect_page = resolve(request.path_info).url_name |
2712 | context, pagesize, orderby = _build_list_helper(request, queryset) | 2728 | |
2713 | except RedirectException as re: | 2729 | context, pagesize, orderby = _build_list_helper(request, |
2714 | # rewrite the RedirectException with our current url information | 2730 | queryset, |
2715 | re.view = resolve(request.path_info).url_name | 2731 | redirect_page, |
2716 | re.okwargs = {"pid" : pid} | 2732 | pid) |
2717 | raise re | ||
2718 | 2733 | ||
2719 | context['project'] = prj | 2734 | context['project'] = prj |
2720 | _set_parameters_values(pagesize, orderby, request) | 2735 | _set_parameters_values(pagesize, orderby, request) |