class OneToManyDP(DependencyProcessor):
def register_dependencies(self, uowcommit):
if self.post_update:
- stub = MapperStub(self.parent, self.mapper, self.key)
- uowcommit.register_dependency(self.mapper, stub)
- uowcommit.register_dependency(self.parent, stub)
- uowcommit.register_processor(stub, self, self.parent)
+ if not self.is_backref:
+ stub = MapperStub(self.parent, self.mapper, self.key)
+ uowcommit.register_dependency(self.mapper, stub)
+ uowcommit.register_dependency(self.parent, stub)
+ uowcommit.register_processor(stub, self, self.parent)
else:
uowcommit.register_dependency(self.parent, self.mapper)
uowcommit.register_processor(self.parent, self, self.parent)
class ManyToOneDP(DependencyProcessor):
def register_dependencies(self, uowcommit):
if self.post_update:
- stub = MapperStub(self.parent, self.mapper, self.key)
- uowcommit.register_dependency(self.mapper, stub)
- uowcommit.register_dependency(self.parent, stub)
- uowcommit.register_processor(stub, self, self.parent)
+ if not self.is_backref:
+ stub = MapperStub(self.parent, self.mapper, self.key)
+ uowcommit.register_dependency(self.mapper, stub)
+ uowcommit.register_dependency(self.parent, stub)
+ uowcommit.register_processor(stub, self, self.parent)
else:
uowcommit.register_dependency(self.mapper, self.parent)
uowcommit.register_processor(self.mapper, self, self.parent)
sj = self.kwargs.pop('secondaryjoin', None)
# the backref property is set on the primary mapper
parent = prop.parent.primary_mapper()
+ self.kwargs.setdefault('viewonly', prop.viewonly)
+ self.kwargs.setdefault('post_update', prop.post_update)
relation = PropertyLoader(parent, prop.secondary, pj, sj, backref=prop.key, is_backref=True, **self.kwargs)
mapper._compile_property(self.key, relation);
elif not isinstance(mapper.props[self.key], PropertyLoader):
Ball.mapper = mapper(Ball, ball)
Person.mapper = mapper(Person, person, properties= dict(
- balls = relation(Ball.mapper, primaryjoin=ball.c.person_id==person.c.id, foreignkey=ball.c.person_id, private=True, post_update=True),
+ balls = relation(Ball.mapper, primaryjoin=ball.c.person_id==person.c.id, foreignkey=ball.c.person_id, private=True, post_update=True, backref='person'),
favorateBall = relation(Ball.mapper, primaryjoin=person.c.favorite_ball_id==ball.c.id, foreignkey=person.c.favorite_ball_id),
)
)