This is a DecimalProperty class, which will allow you to add Python decimals as properties to your App Engine models. If you want to create your own property types then I strongly suggest reading Rafe's article on Extending Model Properties, which is what I followed when creating DecimalProperty. Just a bit of code I needed for a project. Posted here if others need it:
from google.appengine.ext import db from decimal import Decimal class DecimalProperty(db.Property): # Tell what the user type is. data_type = Decimal # For writing to datastore. def get_value_for_datastore(self, model_instance): value = super(DecimalProperty, self).get_value_for_datastore(model_instance) return unicode(value) # For reading from datastore. def make_value_from_datastore(self, value): if value is None: return None return Decimal(value) def validate(self, value): if value is not None and not isinstance(value, Decimal): raise BadValueError('Property %s must be convertible ' 'to a Decimal instance (%s)' % (self.name, value)) return super(DecimalProperty, self).validate(value) def empty(self, value): return not value