Merge lp:~rockstar/launchpad/fix-queue-permissions into lp:launchpad/db-devel

Proposed by Paul Hummer
Status: Merged
Merged at revision: 9924
Proposed branch: lp:~rockstar/launchpad/fix-queue-permissions
Merge into: lp:launchpad/db-devel
Diff against target: 158 lines (+40/-11)
5 files modified
lib/canonical/launchpad/security.py (+13/-0)
lib/lp/code/configure.zcml (+13/-1)
lib/lp/code/model/branchmergequeue.py (+4/-0)
lib/lp/code/model/tests/test_branchmergequeue.py (+8/-8)
lib/lp/testing/factory.py (+2/-2)
To merge this branch: bzr merge lp:~rockstar/launchpad/fix-queue-permissions
Reviewer Review Type Date Requested Status
Henning Eggers (community) code Approve
Review via email: mp+39278@code.launchpad.net

Description of the change

This branch fixes a few stupid things I did with the original models, and Tim/Ian pointed them out to me.

To post a comment you must log in.
Revision history for this message
Henning Eggers (henninge) wrote :

<henninge> rockstar: Have you started your own Canonical spin-off? A bit obvious, don't you think?
<henninge> 136 -# Copyright 2009-2010 Canonical Ltd. This software is licensed under the
<henninge> 137 +# Copyright 2009-2010 aanonical Ltd. This software is licensed under the
* jelmer hat die Verbindung getrennt (Ping timeout: 255 seconds)
<henninge> ;-)
<rockstar> henninge, huh. I'll fix that...

review: Approve (code)
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

Hi, I think you can have the interface inherit from IHasOwner rather than adding that security class.

Also, I think the usedfor is wrong: it is for IBranchMergeQueue, but only IMultiBranchMergeQueue has an owner.

Revision history for this message
Paul Hummer (rockstar) wrote :

Michael-

  There is no IMultiBranchQueue anymore. A few branches before that deleted it. I'll change the interface to inherit from IHasOwner.

Cheers,
Paul

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

On Mon, 25 Oct 2010 20:34:45 -0000, Paul Hummer <email address hidden> wrote:
> There is no IMultiBranchQueue anymore. A few branches before that
> deleted it. I'll change the interface to inherit from IHasOwner.

Awesome. Sorry for the noise.

Cheers,
mwh

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/canonical/launchpad/security.py'
--- lib/canonical/launchpad/security.py 2010-10-21 01:42:14 +0000
+++ lib/canonical/launchpad/security.py 2010-10-25 15:28:30 +0000
@@ -67,6 +67,7 @@
67 user_has_special_branch_access,67 user_has_special_branch_access,
68 )68 )
69from lp.code.interfaces.branchmergeproposal import IBranchMergeProposal69from lp.code.interfaces.branchmergeproposal import IBranchMergeProposal
70from lp.code.interfaces.branchmergequeue import IBranchMergeQueue
70from lp.code.interfaces.codeimport import ICodeImport71from lp.code.interfaces.codeimport import ICodeImport
71from lp.code.interfaces.codeimportjob import (72from lp.code.interfaces.codeimportjob import (
72 ICodeImportJobSet,73 ICodeImportJobSet,
@@ -1162,6 +1163,18 @@
1162 return user.in_bazaar_experts or user.in_buildd_admin1163 return user.in_bazaar_experts or user.in_buildd_admin
11631164
11641165
1166class EditBranchMergeQueue(AuthorizationBase):
1167 """Control who can edit a BranchMergeQueue.
1168
1169 Access is granted only to the owner of the queue.
1170 """
1171 permission = 'launchpad.Edit'
1172 usedfor = IBranchMergeQueue
1173
1174 def checkAuthenticated(self, user):
1175 return user.isOwner(self.obj)
1176
1177
1165class AdminDistributionTranslations(AuthorizationBase):1178class AdminDistributionTranslations(AuthorizationBase):
1166 """Class for deciding who can administer distribution translations.1179 """Class for deciding who can administer distribution translations.
11671180
11681181
=== modified file 'lib/lp/code/configure.zcml'
--- lib/lp/code/configure.zcml 2010-10-21 00:49:21 +0000
+++ lib/lp/code/configure.zcml 2010-10-25 15:28:30 +0000
@@ -23,8 +23,20 @@
23 name="code" />23 name="code" />
2424
25 <!-- Branch Merge Queues -->25 <!-- Branch Merge Queues -->
26 <securedutility
27 component="lp.code.model.branchmergequeue.BranchMergeQueue"
28 provides="lp.code.interfaces.branchmergequeue.IBranchMergeQueueSource">
29 <allow interface="lp.code.interfaces.branchmergequeue.IBranchMergeQueueSource"/>
30
31 </securedutility>
32
26 <class class="lp.code.model.branchmergequeue.BranchMergeQueue">33 <class class="lp.code.model.branchmergequeue.BranchMergeQueue">
27 <allow interface="lp.code.interfaces.branchmergequeue.IBranchMergeQueue" />34 <require permission="zope.Public"
35 attributes="registrant owner name description configuration
36 date_created branches" />
37 <require permission="launchpad.Edit"
38 attributes="setMergeQueueConfig"
39 set_attributes="owner name description configuration" />
28 </class>40 </class>
2941
30 <class class="lp.code.model.codereviewvote.CodeReviewVoteReference">42 <class class="lp.code.model.codereviewvote.CodeReviewVoteReference">
3143
=== modified file 'lib/lp/code/model/branchmergequeue.py'
--- lib/lp/code/model/branchmergequeue.py 2010-10-18 21:20:28 +0000
+++ lib/lp/code/model/branchmergequeue.py 2010-10-25 15:28:30 +0000
@@ -21,6 +21,7 @@
21 )21 )
2222
23from canonical.database.datetimecol import UtcDateTimeCol23from canonical.database.datetimecol import UtcDateTimeCol
24from canonical.launchpad.interfaces.lpstorm import IMasterStore
24from lp.code.errors import InvalidMergeQueueConfig25from lp.code.errors import InvalidMergeQueueConfig
25from lp.code.interfaces.branchmergequeue import (26from lp.code.interfaces.branchmergequeue import (
26 IBranchMergeQueue,27 IBranchMergeQueue,
@@ -69,6 +70,8 @@
69 def new(cls, name, owner, registrant, description=None,70 def new(cls, name, owner, registrant, description=None,
70 configuration=None):71 configuration=None):
71 """See `IBranchMergeQueueSource`."""72 """See `IBranchMergeQueueSource`."""
73 store = IMasterStore(BranchMergeQueue)
74
72 queue = cls()75 queue = cls()
73 queue.name = name76 queue.name = name
74 queue.owner = owner77 queue.owner = owner
@@ -76,4 +79,5 @@
76 queue.description = description79 queue.description = description
77 queue.configuration = configuration80 queue.configuration = configuration
7881
82 store.add(queue)
79 return queue83 return queue
8084
=== modified file 'lib/lp/code/model/tests/test_branchmergequeue.py'
--- lib/lp/code/model/tests/test_branchmergequeue.py 2010-10-20 17:48:51 +0000
+++ lib/lp/code/model/tests/test_branchmergequeue.py 2010-10-25 15:28:30 +0000
@@ -7,8 +7,6 @@
77
8import simplejson8import simplejson
99
10import transaction
11
12from canonical.launchpad.interfaces.lpstorm import IStore10from canonical.launchpad.interfaces.lpstorm import IStore
13from canonical.launchpad.webapp.testing import verifyObject11from canonical.launchpad.webapp.testing import verifyObject
14from canonical.testing.layers import (12from canonical.testing.layers import (
@@ -86,17 +84,20 @@
86 config = unicode(simplejson.dumps({84 config = unicode(simplejson.dumps({
87 'test': 'make test'}))85 'test': 'make test'}))
8886
89 queue.setMergeQueueConfig(config)87 with person_logged_in(queue.owner):
88 queue.setMergeQueueConfig(config)
9089
91 self.assertEqual(queue.configuration, config)90 self.assertEqual(queue.configuration, config)
9291
93 def test_setMergeQueueConfig_invalid_json(self):92 def test_setMergeQueueConfig_invalid_json(self):
94 """Test that invalid json can't be set as the config."""93 """Test that invalid json can't be set as the config."""
95 queue = self.factory.makeBranchMergeQueue()94 queue = self.factory.makeBranchMergeQueue()
96 self.assertRaises(95
97 InvalidMergeQueueConfig,96 with person_logged_in(queue.owner):
98 queue.setMergeQueueConfig,97 self.assertRaises(
99 'abc')98 InvalidMergeQueueConfig,
99 queue.setMergeQueueConfig,
100 'abc')
100101
101102
102class TestWebservice(TestCaseWithFactory):103class TestWebservice(TestCaseWithFactory):
@@ -123,7 +124,6 @@
123 branch2.addToQueue(db_queue)124 branch2.addToQueue(db_queue)
124 launchpad = launchpadlib_for('test', db_queue.owner,125 launchpad = launchpadlib_for('test', db_queue.owner,
125 service_root="http://api.launchpad.dev:8085")126 service_root="http://api.launchpad.dev:8085")
126 transaction.commit()
127127
128 queuer = ws_object(launchpad, queuer)128 queuer = ws_object(launchpad, queuer)
129 queue = ws_object(launchpad, db_queue)129 queue = ws_object(launchpad, db_queue)
130130
=== modified file 'lib/lp/testing/factory.py'
--- lib/lp/testing/factory.py 2010-10-25 12:11:43 +0000
+++ lib/lp/testing/factory.py 2010-10-25 15:28:30 +0000
@@ -133,6 +133,7 @@
133 RevisionControlSystems,133 RevisionControlSystems,
134 )134 )
135from lp.code.errors import UnknownBranchTypeError135from lp.code.errors import UnknownBranchTypeError
136from lp.code.interfaces.branchmergequeue import IBranchMergeQueueSource
136from lp.code.interfaces.branchnamespace import get_branch_namespace137from lp.code.interfaces.branchnamespace import get_branch_namespace
137from lp.code.interfaces.branchtarget import IBranchTarget138from lp.code.interfaces.branchtarget import IBranchTarget
138from lp.code.interfaces.codeimport import ICodeImportSet139from lp.code.interfaces.codeimport import ICodeImportSet
@@ -152,7 +153,6 @@
152 PreviewDiff,153 PreviewDiff,
153 StaticDiff,154 StaticDiff,
154 )155 )
155from lp.code.model.branchmergequeue import BranchMergeQueue
156from lp.codehosting.codeimport.worker import CodeImportSourceDetails156from lp.codehosting.codeimport.worker import CodeImportSourceDetails
157from lp.hardwaredb.interfaces.hwdb import (157from lp.hardwaredb.interfaces.hwdb import (
158 HWSubmissionFormat,158 HWSubmissionFormat,
@@ -1114,7 +1114,7 @@
1114 configuration = unicode(simplejson.dumps({1114 configuration = unicode(simplejson.dumps({
1115 self.getUniqueString('key'): self.getUniqueString('value')}))1115 self.getUniqueString('key'): self.getUniqueString('value')}))
11161116
1117 queue = BranchMergeQueue.new(1117 queue = getUtility(IBranchMergeQueueSource).new(
1118 name, registrant, owner, description, configuration)1118 name, registrant, owner, description, configuration)
1119 return queue1119 return queue
11201120

Subscribers

People subscribed via source and target branches

to status/vote changes: