1 # Copyright 2013 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.
8 from appengine_wrappers
import db
10 # A collection of the data store models used throughout the server.
11 # These values are global within datastore.
13 class PersistentObjectStoreItem(db
.Model
):
14 pickled_value
= db
.BlobProperty()
17 def CreateKey(cls
, namespace
, key
):
18 path
= '%s/%s' % (namespace
, key
)
20 return db
.Key
.from_path(cls
.__name
__, path
)
22 # Probably AppEngine's BadValueError for the name being too long, but
23 # it's not documented which errors can actually be thrown here, so catch
26 'Exception thrown when trying to create db.Key from path %s: %s' % (
27 path
, traceback
.format_exc()))
30 def CreateItem(cls
, namespace
, key
, value
):
31 return PersistentObjectStoreItem(key
=cls
.CreateKey(namespace
, key
),
32 pickled_value
=cPickle
.dumps(value
))
35 return cPickle
.loads(self
.pickled_value
)