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

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

Issue 816693002: Add string versions of User/Pickled objects to datastore models (Closed) Base URL: https://github.com/dart-lang/pub-dartlang.git@master
Patch Set: Use db.Text(encoding="utf-8") 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 | « no previous file | app/handlers/api/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 /api/packages/*/uploaders/*.""" 12 """The handler for /api/packages/*/uploaders/*."""
13 13
14 @handlers.api(1) 14 @handlers.api(1)
15 @handlers.requires_uploader 15 @handlers.requires_uploader
16 @models.transactional 16 @models.transactional
17 def create(self, package_id, email): 17 def create(self, package_id, email):
18 """Add a new uploader for this package. 18 """Add a new uploader for this package.
19 19
20 Only other uploaders may add new uploaders.""" 20 Only other uploaders may add new uploaders."""
21 21
22 package = handlers.request().package 22 package = handlers.request().package
23 user_to_add = users.User(email) 23 user_to_add = users.User(email)
24 if package.has_uploader(user_to_add): 24 if package.has_uploader(user_to_add):
25 handlers.http_error( 25 handlers.http_error(
26 400, "User '%s' is already an uploader for package '%s'." % 26 400, "User '%s' is already an uploader for package '%s'." %
27 (email, package.name)) 27 (email, package.name))
28 28
29 package.uploaders.append(user_to_add) 29 package.uploaders.append(user_to_add)
30 package.temp_synchronize_uploaders_to_uploaderemails()
30 package.put() 31 package.put()
31 package.invalidate_cache() 32 package.invalidate_cache()
32 return handlers.json_success( 33 return handlers.json_success(
33 "'%s' added as an uploader for package '%s'." % 34 "'%s' added as an uploader for package '%s'." %
34 (email, package.name)) 35 (email, package.name))
35 36
36 @handlers.api(1) 37 @handlers.api(1)
37 @handlers.requires_uploader 38 @handlers.requires_uploader
38 @models.transactional 39 @models.transactional
39 def delete(self, package_id, id, format=None): 40 def delete(self, package_id, id, format=None):
(...skipping 13 matching lines...) Expand all
53 (user_to_delete.nickname(), package.name)) 54 (user_to_delete.nickname(), package.name))
54 55
55 if len(package.uploaders) == 1: 56 if len(package.uploaders) == 1:
56 handlers.http_error( 57 handlers.http_error(
57 400, ("Package '%s' only has one uploader, so that uploader " + 58 400, ("Package '%s' only has one uploader, so that uploader " +
58 "can't be removed.") % package.name) 59 "can't be removed.") % package.name)
59 60
60 email_to_delete = user_to_delete.email().lower() 61 email_to_delete = user_to_delete.email().lower()
61 package.uploaders = [uploader for uploader in package.uploaders 62 package.uploaders = [uploader for uploader in package.uploaders
62 if uploader.email().lower() != email_to_delete] 63 if uploader.email().lower() != email_to_delete]
64 package.temp_synchronize_uploaders_to_uploaderemails()
63 package.put() 65 package.put()
64 package.invalidate_cache() 66 package.invalidate_cache()
65 return handlers.json_success( 67 return handlers.json_success(
66 "'%s' is no longer an uploader for package '%s'." % 68 "'%s' is no longer an uploader for package '%s'." %
67 (id, package.name)) 69 (id, package.name))
OLDNEW
« no previous file with comments | « no previous file | app/handlers/api/package_versions.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698