Merge lp:~stevenk/launchpad/double-archivesub into lp:launchpad

Proposed by Steve Kowalik
Status: Work in progress
Proposed branch: lp:~stevenk/launchpad/double-archivesub
Merge into: lp:launchpad
Diff against target: 56 lines (+10/-11)
2 files modified
lib/lp/soyuz/model/archive.py (+5/-11)
lib/lp/soyuz/tests/test_archive.py (+5/-0)
To merge this branch: bzr merge lp:~stevenk/launchpad/double-archivesub
Reviewer Review Type Date Requested Status
Launchpad code reviewers Pending
Review via email: mp+124102@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

15950. By Steve Kowalik

Deal with newAuthToken() being called twice -- return the existing token.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/soyuz/model/archive.py'
2--- lib/lp/soyuz/model/archive.py 2012-09-07 05:43:28 +0000
3+++ lib/lp/soyuz/model/archive.py 2012-09-13 05:45:25 +0000
4@@ -1,8 +1,6 @@
5 # Copyright 2009-2012 Canonical Ltd. This software is licensed under the
6 # GNU Affero General Public License version 3 (see the file LICENSE).
7
8-# pylint: disable-msg=E0611,W0212
9-
10 """Database class for table Archive."""
11
12 __metaclass__ = type
13@@ -153,10 +151,7 @@
14 from lp.soyuz.interfaces.archivearch import IArchiveArchSet
15 from lp.soyuz.interfaces.archiveauthtoken import IArchiveAuthTokenSet
16 from lp.soyuz.interfaces.archivepermission import IArchivePermissionSet
17-from lp.soyuz.interfaces.archivesubscriber import (
18- ArchiveSubscriptionError,
19- IArchiveSubscriberSet,
20- )
21+from lp.soyuz.interfaces.archivesubscriber import IArchiveSubscriberSet
22 from lp.soyuz.interfaces.binarypackagebuild import IBinaryPackageBuildSet
23 from lp.soyuz.interfaces.buildrecords import (
24 IHasBuildRecords,
25@@ -1832,11 +1827,10 @@
26 raise NoTokensForTeams(
27 "Subscription tokens can be created for individuals only.")
28
29- # Ensure that the current subscription does not already have a token
30- if self.getAuthToken(person) is not None:
31- raise ArchiveSubscriptionError(
32- "%s already has a token for %s." % (
33- person.displayname, self.displayname))
34+ # If a token already exists, return it.
35+ existing_token = self.getAuthToken(person)
36+ if existing_token:
37+ return existing_token
38
39 # Now onto the actual token creation:
40 if token is None:
41
42=== modified file 'lib/lp/soyuz/tests/test_archive.py'
43--- lib/lp/soyuz/tests/test_archive.py 2012-08-21 14:15:43 +0000
44+++ lib/lp/soyuz/tests/test_archive.py 2012-09-13 05:45:25 +0000
45@@ -1161,6 +1161,11 @@
46 token = self.private_ppa.newAuthToken(self.joe)
47 self.assertEqual(self.private_ppa.getAuthToken(self.joe), token)
48
49+ def test_newAuthToken_returns_existing(self):
50+ token = self.private_ppa.newAuthToken(self.joe)
51+ token2 = self.private_ppa.newAuthToken(self.joe)
52+ self.assertEqual(token2, token)
53+
54 def test_getArchiveSubscriptionURL(self):
55 url = self.joe.getArchiveSubscriptionURL(self.joe, self.private_ppa)
56 token = self.private_ppa.getAuthToken(self.joe)