import datetime import dejavu from dejavu import Unit, UnitProperty, associate class Zoo(Unit): Name = UnitProperty() Founded = UnitProperty(datetime.date) Opens = UnitProperty(datetime.time) LastEscape = UnitProperty(datetime.datetime) class EscapeProperty(UnitProperty): def post(self, unit, value): z = unit.first(Zoo) if z: z.LastEscape = unit.LastEscape class Animal(Unit): Name = UnitProperty() ZooID = UnitProperty(int, index=True) Legs = UnitProperty(int) Options = UnitProperty(dict) LastEscape = EscapeProperty(datetime.datetime) associate(Zoo, 'ID', Animal, 'ZooID') class Exhibit(Unit): ZooID = UnitProperty(int) Animals = UnitProperty(list) associate(Zoo, 'ID', Exhibit, 'ZooID') arena = dejavu.Arena() arena.register_all(globals())