My favorites
▼
|
Sign in
he3-appengine-lib
Python libraries and utilities for Google App Engine
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
src
/
he3
/
db
/
tools
/
mappers.py
r54
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
'''
he3.db.tools.mappers
contains mappers written to work with App Engine MapReduce
http://code.google.com/p/appengine-mapreduce/
Created on Jun 27, 2010
@author: Ben Davies, Helium 3 IT Solutions
'''
import google.appengine.ext.db as db
import mapreduce.operation as op
class Mapper (object):
'''A standard base class for Mappers defined here'''
@staticmethod
def process(data):
'''Standard method call to invoke mapper on mapped data. Intended to
be overriden.
'''
pass
class ModelHygieneMapper (Mapper):
'''A datastore mapper for performing common maintenance tasks on
datastore model entities.'''
@staticmethod
def process(entity):
'''Checks and repairs model integrity of the passed entity
1. Removes dangling references
2. Sets undefined datastore values to the default
'''
props = [x for x in entity.__class__.__dict__.values()\
if isinstance(x, db.Property)]
changed = False
for prop in props:
if not prop.get_value_for_datastore(entity):
prop.__set__(entity, prop.default_value())
changed = True
elif isinstance(prop, db.ReferenceProperty):
if not db.get(prop.get_value_for_datastore(entity)):
prop.__set__(entity, None)
changed = True
if changed: yield op.db.Put(entity)
Show details
Hide details
Change log
r39
by bendavies.he3 on Jun 27, 2010
Diff
Added mappers.py and
ModelHygieneMapper
Go to:
/trunk/src/he3/db/tools
/trunk/src/he3/db/tools/__init__.py
/trunk/src/he3/db/tools/mappers.py
Project members,
sign in
to write a code review
Older revisions
All revisions of this file
File info
Size: 1325 bytes, 50 lines
View raw file
Powered by
Google Project Hosting