Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: app/handlers/package_uploaders.py

Issue 815973002: Remove legacy Package.uploaders PackageVersion.{uploader,readme,changelog} properties (Closed) Base URL: https://github.com/dart-lang/pub-dartlang.git@master
Patch Set: Small fix in changelog/readme handling for new uploads Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « app/handlers/api/package_versions.py ('k') | app/handlers/package_versions.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 # for details. All rights reserved. Use of this source code is governed by a 2 # for details. All rights reserved. Use of this source code is governed by a
3 # BSD-style license that can be found in the LICENSE file. 3 # BSD-style license that can be found in the LICENSE file.
4 4
5 from google.appengine.api import oauth 5 from google.appengine.api import oauth
6 from google.appengine.api import users 6 from google.appengine.api import users
7 7
8 import handlers 8 import handlers
9 import models 9 import models
10 10
11 class PackageUploaders(object): 11 class PackageUploaders(object):
12 """The handler for packages/*/uploaders/*. 12 """The handler for packages/*/uploaders/*.
13 13
14 This handler is in charge of the list of users that are allowed to upload a 14 This handler is in charge of the list of users that are allowed to upload a
15 given package. 15 given package.
16 """ 16 """
17 17
18 @handlers.json_action 18 @handlers.json_action
19 @handlers.requires_uploader 19 @handlers.requires_uploader
20 @models.transactional 20 @models.transactional
21 def create(self, package_id, format, email): 21 def create(self, package_id, format, email):
22 """Add a new uploader for this package. 22 """Add a new uploader for this package.
23 23
24 Only other uploaders may add new uploaders.""" 24 Only other uploaders may add new uploaders."""
25 25
26 package = handlers.request().package 26 package = handlers.request().package
27 user_to_add = users.User(email) 27 if package.has_uploader_email(email):
28 if package.has_uploader(user_to_add):
29 handlers.http_error( 28 handlers.http_error(
30 400, "User '%s' is already an uploader for package '%s'." % 29 400, "User '%s' is already an uploader for package '%s'." %
31 (email, package.name)) 30 (email, package.name))
32 31
33 package.uploaders.append(user_to_add) 32 package.uploaderEmails.append(email)
34 package.temp_synchronize_uploaders_to_uploaderemails()
35 package.put() 33 package.put()
36 package.invalidate_cache() 34 package.invalidate_cache()
37 return handlers.json_success( 35 return handlers.json_success(
38 "'%s' added as an uploader for package '%s'." % 36 "'%s' added as an uploader for package '%s'." %
39 (email, package.name)) 37 (email, package.name))
40 38
41 @handlers.json_action 39 @handlers.json_action
42 @handlers.requires_uploader 40 @handlers.requires_uploader
43 @models.transactional 41 @models.transactional
44 def delete(self, package_id, id, format): 42 def delete(self, package_id, id, format):
45 """Delete one of this package's uploaders. 43 """Delete one of this package's uploaders.
46 44
47 Only uploaders may delete uploaders. If only one uploader remains, that 45 Only uploaders may delete uploaders. If only one uploader remains, that
48 uploader may not be deleted until a new one is added. 46 uploader may not be deleted until a new one is added.
49 """ 47 """
50 48
51 package = handlers.request().package 49 package = handlers.request().package
52 user_to_delete = users.User(id) 50 email = id
53 if not package.has_uploader(user_to_delete): 51 if not package.has_uploader_email(email):
54 handlers.http_error( 52 handlers.http_error(
55 400, "'%s' isn't an uploader for package '%s'." % 53 400, "'%s' isn't an uploader for package '%s'." %
56 (user_to_delete.nickname(), package.name)) 54 (email, package.name))
57 55
58 if len(package.uploaders) == 1: 56 if len(package.uploaderEmails) == 1:
59 handlers.http_error( 57 handlers.http_error(
60 400, ("Package '%s' only has one uploader, so that uploader " + 58 400, ("Package '%s' only has one uploader, so that uploader " +
61 "can't be removed.") % package.name) 59 "can't be removed.") % package.name)
62 60
63 email_to_delete = user_to_delete.email().lower() 61 email_to_delete = email.lower()
64 package.uploaders = [uploader for uploader in package.uploaders 62 package.uploaderEmails = [email for email in package.uploaderEmails
65 if uploader.email().lower() != email_to_delete] 63 if email.lower() != email_to_delete]
66 package.temp_synchronize_uploaders_to_uploaderemails()
67 package.put() 64 package.put()
68 package.invalidate_cache() 65 package.invalidate_cache()
69 return handlers.json_success( 66 return handlers.json_success(
70 "'%s' is no longer an uploader for package '%s'." % 67 "'%s' is no longer an uploader for package '%s'." %
71 (id, package.name)) 68 (id, package.name))
69
OLDNEW
« no previous file with comments | « app/handlers/api/package_versions.py ('k') | app/handlers/package_versions.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698