Advertisement
bossylobster

Custom OAuth2Decorator Persistence

Apr 5th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.01 KB | None | 0 0
  1. from google.appengine.ext import ndb
  2.  
  3. from oauth2client import appengine
  4.  
  5.  
  6. class CustomCredentialsModel(appengine.CredentialsNDBModel):
  7.   user_email = ndb.StringProperty(required=True, indexed=False)
  8.  
  9.  
  10. class CustomStorageByKeyName(appengine.StorageByKeyName):
  11.   def __init__(self, model, key_name, property_name, cache=None, user=None):
  12.     super(CustomStorageByKeyName, self).__init__(
  13.         model, key_name, property_name, cache=cache, user=user)
  14.     # May want to throw exception if not a users.User object
  15.     self._user = user
  16.  
  17.   def locked_put(self, credentials):
  18.     entity = self._model.get_or_insert(self._key_name)
  19.     setattr(entity, self._property_name, credentials)
  20.     entity.user_email = self._user.email()
  21.     entity.put()
  22.     if self._cache:
  23.       self._cache.set(self._key_name, credentials.to_json())
  24.  
  25.  
  26. decorator = appengine.OAuth2Decorator(
  27.     'some.client.id', 'some.client.secret', 'some.scope',
  28.     _storage_class=CustomStorageByKeyName,
  29.     _credentials_class=CustomCredentialsModel)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement