Changeset 362
- Timestamp:
- 07/11/08 17:18:56 (4 years ago)
- Location:
- elixir/trunk
- Files:
-
- 4 modified
-
CHANGES (modified) (3 diffs)
-
elixir/properties.py (modified) (2 diffs)
-
elixir/relationships.py (modified) (3 diffs)
-
tests/test_o2m.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
elixir/trunk/CHANGES
r356 r362 17 17 pass 18 18 A.name = Field(String(32)) 19 - Added add_ mapper_property and add_table_column helper methods in20 EntityBuilders.19 - Added add_table_column, add_mapper_property and add_mapper_extension helper 20 methods in EntityBuilders. 21 21 - Added full_tablename property on EntityDescriptor (includes schema name if 22 22 any). … … 25 25 - Added support for filtered OneToMany relationships. Produce viewonly 26 26 relations. See source:elixir/trunk/tests/test_o2m.py for an example. 27 - Added support for callables for some arguments on relationships: primaryjoin, 28 secondaryjoin and remote_side. It means those can be evaluated at setup time 29 (when tables and their columns already exist) instead of definition time. 27 30 28 31 Changes: … … 35 38 SA 0.4) 36 39 * autoexpire=True (with SA 0.5). 37 - removed objectstore and other SA 0.3 or oldersupport code.40 - removed objectstore and other SA 0.3 (or older) support code. 38 41 39 42 Bug fixes: -
elixir/trunk/elixir/properties.py
r359 r362 58 58 59 59 def create_tables(self): 60 pass 60 ''' 61 Subclasses may override this method to create tables. 62 ''' 61 63 62 64 def after_table(self): … … 64 66 65 67 def create_properties(self): 66 pass 68 ''' 69 Subclasses may override this method to add properties to the involved 70 entity. 71 ''' 67 72 68 73 def before_mapper(self): -
elixir/trunk/elixir/relationships.py
r356 r362 380 380 ''' 381 381 382 def create_tables(self):383 '''384 Subclasses (ie. concrete relationships) may override this method to385 create secondary tables.386 '''387 388 382 def create_properties(self): 389 '''390 Subclasses (ie. concrete relationships) may override this method to391 add properties to the involved entities.392 '''393 383 if self.property or self.backref: 394 384 return 395 385 396 386 kwargs = self.get_prop_kwargs() 387 if 'order_by' in kwargs: 388 kwargs['order_by'] = \ 389 self.target._descriptor.translate_order_by(kwargs['order_by']) 390 391 # transform callable arguments 392 for arg in ('primaryjoin', 'secondaryjoin', 'remote_side'): 393 kwarg = kwargs.get(arg, None) 394 if callable(kwarg): 395 kwargs[arg] = kwarg() 397 396 398 397 # viewonly relationships need to create "standalone" relations (ie … … 664 663 uselist = True 665 664 666 def get_prop_kwargs(self):667 kwargs = super(OneToMany, self).get_prop_kwargs()668 669 if 'order_by' in kwargs:670 kwargs['order_by'] = \671 self.target._descriptor.translate_order_by(672 kwargs['order_by'])673 674 return kwargs675 676 665 677 666 class ManyToMany(Relationship): … … 857 846 858 847 kwargs.update(self.kwargs) 859 860 if 'order_by' in kwargs:861 kwargs['order_by'] = \862 self.target._descriptor.translate_order_by(kwargs['order_by'])863 848 864 849 return kwargs -
elixir/trunk/tests/test_o2m.py
r356 r362 108 108 109 109 def test_viewonly(self): 110 # the callable primaryjoin seem to be unstable... sometime it works,111 # sometime it doesn't... for no apparent reason. I think it's a bug in112 # the current revision of SQLAlchemy I'm using (4900).113 110 class User(Entity): 114 111 two_blurbs = OneToMany('Blurb', primaryjoin=lambda:
