Changeset 54
- Timestamp:
- 02/12/07 18:30:18 (6 years ago)
- Location:
- elixir/trunk
- Files:
-
- 2 modified
-
elixir/relationships.py (modified) (1 diff)
-
tests/test_autoload.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
elixir/trunk/elixir/relationships.py
r51 r54 384 384 385 385 if self.entity is self.target: 386 # print self.target._descriptor.primary_keys 387 #FIXME: this doesn't work for autoload, because primary_keys is388 #empty389 cols = [k.column for k in self.target._descriptor.primary_keys]386 if self.entity._descriptor.autoload: 387 cols = [col for col in self.target.table.primary_key.columns] 388 else: 389 cols = [k.column for k in self.target._descriptor.primary_keys] 390 390 kwargs['remote_side'] = cols 391 # print "cols", self.name, cols392 391 393 392 kwargs['primaryjoin'] = and_(*self.primaryjoin_clauses) -
elixir/trunk/tests/test_autoload.py
r53 r54 11 11 import datetime 12 12 13 #FIXME/TODO: I should also test many2many!!!14 15 13 # First create two tables (it would be better to user an external db) 16 14 engine = sqlalchemy.create_engine('sqlite:///') … … 19 17 person_table = Table('person', meta, 20 18 Column('id', Integer, primary_key=True), 19 Column('father_id', Integer, ForeignKey('person.id')), 21 20 Column('name', Unicode(32))) 22 21 person_table.create() … … 32 31 elixir.delay_setup = True 33 32 34 class Animal(Entity):35 # has_field('name', String(15))36 # has_field('color', String(15))37 38 belongs_to('owner', of_kind='Person', colname='owner_id')39 belongs_to('feeder', of_kind='Person', colname='feeder_id')40 41 using_options(autoload=True, shortnames=True)42 43 33 class Person(Entity): 44 34 # has_field('name', Unicode(32)) 45 35 36 belongs_to('father', of_kind='Person', colname='father_id') 37 has_many('children', of_kind='Person') 46 38 has_many('pets', of_kind='Animal', inverse='owner') 47 39 has_many('animals', of_kind='Animal', inverse='feeder') … … 55 47 return s 56 48 49 class Animal(Entity): 50 # has_field('name', String(15)) 51 # has_field('color', String(15)) 52 53 belongs_to('owner', of_kind='Person', colname='owner_id') 54 belongs_to('feeder', of_kind='Person', colname='feeder_id') 55 56 using_options(autoload=True, shortnames=True) 57 57 58 58 elixir.delay_setup = False … … 66 66 67 67 def teardown(self): 68 cleanup_all()68 drop_all() 69 69 70 70 def test_autoload(self): … … 86 86 assert homer == slh.owner 87 87 88 def test_autoload_selfref(self): 89 grampa = Person(name="Abe") 90 homer = Person(name="Homer") 91 bart = Person(name="Bart") 92 lisa = Person(name="Lisa") 93 94 grampa.children.append(homer) 95 homer.children.append(bart) 96 lisa.father = homer 97 98 objectstore.flush() 99 objectstore.clear() 100 101 p = Person.get_by(name="Homer") 102 103 print "%s is %s's child." % (p.name, p.father.name) 104 print "His children are: %s." % ( 105 " and ".join(c.name for c in p.children)) 106 107 assert p in p.father.children 108 assert p.father is Person.get_by(name="Abe") 109 assert p is Person.get_by(name="Lisa").father 110 88 111 if __name__ == '__main__': 89 112 test = TestAutoload()
