Home | History | Annotate | Download | only in server2
      1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 from appengine_wrappers import db
      6 from appengine_wrappers import BlobReferenceProperty
      7 
      8 BLOB_REFERENCE_BLOBSTORE = 'BlobReferenceBlobstore'
      9 
     10 class _Model(db.Model):
     11   key_ = db.StringProperty()
     12   value = BlobReferenceProperty()
     13 
     14 class BlobReferenceStore(object):
     15   """A wrapper around the datastore API that can store blob keys.
     16   """
     17   def _Query(self, namespace, key):
     18     return _Model.gql('WHERE key_ = :1', self._MakeKey(namespace, key)).get()
     19 
     20   def _MakeKey(self, namespace, key):
     21     return '.'.join((namespace, key))
     22 
     23   def Set(self, namespace, key, value):
     24     _Model(key_=self._MakeKey(namespace, key), value=value).put()
     25 
     26   def Get(self, namespace, key):
     27     result = self._Query(namespace, key)
     28     if not result:
     29       return None
     30     return result.value
     31 
     32   def Delete(self, namespace, key):
     33     result = self._Query(namespace, key)
     34     if not result:
     35       return None
     36     blob_key = result.value
     37     result.delete()
     38     return blob_key
     39