Merge lp:~salgado/offspring/builder-details into lp:~linaro-automation/offspring/private-builds

Proposed by Guilherme Salgado
Status: Merged
Approved by: James Tunnicliffe
Approved revision: 69
Merged at revision: 67
Proposed branch: lp:~salgado/offspring/builder-details
Merge into: lp:~linaro-automation/offspring/private-builds
Prerequisite: lp:~salgado/offspring/builder-list
Diff against target: 104 lines (+31/-6)
3 files modified
lib/offspring/web/queuemanager/tests/test_views.py (+16/-4)
lib/offspring/web/queuemanager/views.py (+14/-1)
lib/offspring/web/templates/queuemanager/builder_details.html (+1/-1)
To merge this branch: bzr merge lp:~salgado/offspring/builder-details
Reviewer Review Type Date Requested Status
James Tunnicliffe (community) Approve
Review via email: mp+79719@code.launchpad.net

Description of the change

Update the builder_details view to omit details of the current job if the user has no rights to see it

To post a comment you must log in.
Revision history for this message
James Tunnicliffe (dooferlad) wrote :

On 18 October 2011 18:25, Guilherme Salgado
<email address hidden> wrote:
> Guilherme Salgado has proposed merging lp:~salgado/offspring/builder-details into lp:~linaro-infrastructure/offspring/private-builds with lp:~salgado/offspring/builder-list as a prerequisite.
>
> Requested reviews:
>  Linaro Infrastructure (linaro-infrastructure)
>
> For more details, see:
> https://code.launchpad.net/~salgado/offspring/builder-details/+merge/79719
>
> Update the builder_details view to omit details of the current job if the user has no rights to see it
> --
> https://code.launchpad.net/~salgado/offspring/builder-details/+merge/79719
> Your team Linaro Infrastructure is requested to review the proposed merge of lp:~salgado/offspring/builder-details into lp:~linaro-infrastructure/offspring/private-builds.
>
> === modified file 'lib/offspring/web/queuemanager/tests/test_views.py'
> --- lib/offspring/web/queuemanager/tests/test_views.py  2011-10-18 17:24:46 +0000
> +++ lib/offspring/web/queuemanager/tests/test_views.py  2011-10-18 17:24:46 +0000
> @@ -106,7 +106,10 @@
>
>
>  class BuilderListTests(TestCase):
> -    view_name = 'offspring.web.queuemanager.views.builders'
> +    view_name = 'builder_list'
> +
> +    def get_url(self, builder):
> +        return reverse(self.view_name)

What purpose does sending builder to get_url have? I see that get_url
is a 1:1 replacement for the "reverse(self.view_name)" that it
replaces in the tests below. Is this part way through a change?

>     def setUp(self):
>         super(BuilderListTests, self).setUp()
> @@ -124,7 +127,7 @@
>     def test_build_details_always_shown_when_building_public_project(self):
>         builder = factory.makeLexbuilder()
>         make_user_and_login(self.client)
> -        response = self.client.get(reverse(self.view_name))
> +        response = self.client.get(self.get_url(builder))
>         self.assertContains(
>             response, builder.current_job.project.name, status_code=200,
>             msg_prefix=response.content)
> @@ -136,7 +139,7 @@
>         user = project.owner
>         self.assertTrue(
>             self.client.login(username=user.username, password=user.username))
> -        response = self.client.get(reverse(self.view_name))
> +        response = self.client.get(self.get_url(builder))
>         self.assertContains(
>             response, builder.current_job.project.name, status_code=200,
>             msg_prefix=response.content)
> @@ -146,12 +149,19 @@
>         job = factory.makeBuildResult(project=project)
>         builder = factory.makeLexbuilder(current_job=job)
>         make_user_and_login(self.client)
> -        response = self.client.get(reverse(self.view_name))
> +        response = self.client.get(self.get_url(builder))
>         self.assertNotContains(
>             response, builder.current_job.project.name, status_code=200,
>             msg_prefix=response.content)

<snip>

Thanks,

--
James Tunnicliffe

69. By Guilherme Salgado

Add a comment

Revision history for this message
Guilherme Salgado (salgado) wrote :

[...]
> > class BuilderListTests(TestCase):
> > - view_name = 'offspring.web.queuemanager.views.builders'
> > + view_name = 'builder_list'
> > +
> > + def get_url(self, builder):
> > + return reverse(self.view_name)
>
> What purpose does sending builder to get_url have? I see that get_url
> is a 1:1 replacement for the "reverse(self.view_name)" that it
> replaces in the tests below. Is this part way through a change?

Oh, no, it's because on the other test class in this diff I inherit this
one, and there I need the builder to get the view's URL.

I've added a comment to make that clear.

Revision history for this message
Guilherme Salgado (salgado) wrote :

James, does this one look ok with the change I did?

Revision history for this message
James Tunnicliffe (dooferlad) wrote :

Sorry, didn't spot that. Yes, that is fine.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/offspring/web/queuemanager/tests/test_views.py'
2--- lib/offspring/web/queuemanager/tests/test_views.py 2011-10-18 20:40:38 +0000
3+++ lib/offspring/web/queuemanager/tests/test_views.py 2011-10-18 20:48:25 +0000
4@@ -103,7 +103,12 @@
5
6
7 class BuilderListTests(TestCase):
8- view_name = 'offspring.web.queuemanager.views.builders'
9+ view_name = 'builder_list'
10+
11+ def get_url(self, builder):
12+ # The builder argument exists only so that the tests here also work
13+ # for the builder_details view (see BuilderDetailsTests below).
14+ return reverse(self.view_name)
15
16 def setUp(self):
17 super(BuilderListTests, self).setUp()
18@@ -121,7 +126,7 @@
19 def test_build_details_always_shown_when_building_public_project(self):
20 builder = factory.makeLexbuilder()
21 make_user_and_login(self.client)
22- response = self.client.get(reverse(self.view_name))
23+ response = self.client.get(self.get_url(builder))
24 self.assertContains(
25 response, builder.current_job.project.name, status_code=200,
26 msg_prefix=response.content)
27@@ -133,7 +138,7 @@
28 user = project.owner
29 self.assertTrue(
30 self.client.login(username=user.username, password=user.username))
31- response = self.client.get(reverse(self.view_name))
32+ response = self.client.get(self.get_url(builder))
33 self.assertContains(
34 response, builder.current_job.project.name, status_code=200,
35 msg_prefix=response.content)
36@@ -143,12 +148,19 @@
37 job = factory.makeBuildResult(project=project)
38 builder = factory.makeLexbuilder(current_job=job)
39 make_user_and_login(self.client)
40- response = self.client.get(reverse(self.view_name))
41+ response = self.client.get(self.get_url(builder))
42 self.assertNotContains(
43 response, builder.current_job.project.name, status_code=200,
44 msg_prefix=response.content)
45
46
47+class BuilderDetailsTests(BuilderListTests):
48+ view_name = 'builder_details'
49+
50+ def get_url(self, builder):
51+ return reverse(self.view_name, args=[builder.name])
52+
53+
54 class BuildViewTests(TestCase):
55
56 def test_public_build(self):
57
58=== modified file 'lib/offspring/web/queuemanager/views.py'
59--- lib/offspring/web/queuemanager/views.py 2011-10-18 20:40:38 +0000
60+++ lib/offspring/web/queuemanager/views.py 2011-10-18 20:48:25 +0000
61@@ -80,6 +80,10 @@
62 # shown and the values represent whether or not the information about the
63 # builder's current job should be shown to the current user.
64 builder_list = {}
65+ # Here we don't filter out the builders working on private projects (as we
66+ # do with other stuff, using .accessible_by_user()) because we want to
67+ # show that the builders exist and just hide the info about private
68+ # projects the user is not allowed to see.
69 builders = Lexbuilder.all_objects.order_by(
70 "-is_active", "-machine_type", "-created_at")
71 for builder in builders:
72@@ -98,9 +102,18 @@
73
74 @login_required
75 def builder_details(request, builderName):
76- builder = Lexbuilder.objects.get(name=builderName)
77+ # Here we don't filter out the builders working on private projects (as we
78+ # do with other stuff, using .accessible_by_user()) because we want to
79+ # show that the builders exist and just hide the info about private
80+ # projects the user is not allowed to see.
81+ builder = Lexbuilder.all_objects.get(name=builderName)
82+ shown_job = 'Private build'
83+ job = builder.current_job
84+ if job is not None and job.is_visible_to(request.user):
85+ shown_job = job
86 pageData = {
87 'builder': builder,
88+ 'current_job': shown_job,
89 'pillar': 'builders',
90 }
91 return render_to_response(
92
93=== modified file 'lib/offspring/web/templates/queuemanager/builder_details.html'
94--- lib/offspring/web/templates/queuemanager/builder_details.html 2011-01-22 04:47:32 +0000
95+++ lib/offspring/web/templates/queuemanager/builder_details.html 2011-10-18 20:48:25 +0000
96@@ -60,7 +60,7 @@
97
98 <dl>
99 <dt>Job:</dt>
100- <dd>{{builder.current_build}}</dd>
101+ <dd>{{current_job}}</dd>
102 </dl>
103
104 <dl>

Subscribers

People subscribed via source and target branches