Paste #11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import array from google.appengine.ext import db from google.appengine.api import datastore_errors class ArrayProperty(db.Property): def __init__(self, typecode, **kwargs): self.typecode = typecode super(ArrayProperty, self).__init__(**kwargs) def default_value(self): return array.array(self.typecode) def validate(self, value): if not isinstance(value, array.array) or value.typecode != self.typecode: raise datastore_errors.BadValueError( "Property %s must be an array instance with typecode %s" % (self.name, self.typecode)) value = super(ArrayProperty, self).validate(value) return value def get_value_for_datastore(self, model_instance): value = self.__get__(model_instance, model_instance.__class__) return db.Blob(value.tostring()) def make_value_from_datastore(self, value): a = array.array(self.typecode) if value is None: return a a.fromstring(value) return a data_type=db.Blob |