Tweak Person.emails and Person.phones relationships

This commit is contained in:
Lance Edgar 2016-05-11 12:32:35 -05:00
parent df39d271b7
commit 9b742751cd

View file

@ -29,7 +29,7 @@ from __future__ import unicode_literals, absolute_import
import datetime
import sqlalchemy as sa
from sqlalchemy.orm import relationship
from sqlalchemy import orm
from sqlalchemy.ext.orderinglist import ordering_list
from .core import Base, uuid_column
@ -87,16 +87,26 @@ class PersonPhoneNumber(PhoneNumber):
__mapper_args__ = {'polymorphic_identity': 'Person'}
Person.phones = relationship(
Person.phones = orm.relationship(
PersonPhoneNumber,
backref='person',
primaryjoin=PersonPhoneNumber.parent_uuid == Person.uuid,
foreign_keys=[PersonPhoneNumber.parent_uuid],
collection_class=ordering_list('preference', count_from=1),
order_by=PersonPhoneNumber.preference,
cascade='save-update, merge, delete, delete-orphan')
cascade='save-update, merge, delete, delete-orphan',
doc="""
Sequence of :class:`PersonPhoneNUmber` instances which belong to the
person.
""",
backref=orm.backref(
'person',
doc="""
Reference to the :class:`Person` instance to which the phone number
belongs.
"""),
)
Person.phone = relationship(
Person.phone = orm.relationship(
PersonPhoneNumber,
primaryjoin=sa.and_(
PersonPhoneNumber.parent_uuid == Person.uuid,
@ -115,16 +125,26 @@ class PersonEmailAddress(EmailAddress):
__mapper_args__ = {'polymorphic_identity': 'Person'}
Person.emails = relationship(
Person.emails = orm.relationship(
PersonEmailAddress,
backref='person',
primaryjoin=PersonEmailAddress.parent_uuid == Person.uuid,
foreign_keys=[PersonEmailAddress.parent_uuid],
collection_class=ordering_list('preference', count_from=1),
order_by=PersonEmailAddress.preference,
cascade='save-update, merge, delete, delete-orphan')
cascade='save-update, merge, delete, delete-orphan',
doc="""
Sequence of :class:`PersonEmailAddress` instances which belong to the
person.
""",
backref=orm.backref(
'person',
doc="""
Reference to the :class:`Person` instance to which the email address
belongs.
"""),
)
Person.email = relationship(
Person.email = orm.relationship(
PersonEmailAddress,
primaryjoin=sa.and_(
PersonEmailAddress.parent_uuid == Person.uuid,
@ -143,7 +163,7 @@ class PersonMailingAddress(MailingAddress):
__mapper_args__ = {'polymorphic_identity': 'Person'}
Person.addresses = relationship(
Person.addresses = orm.relationship(
PersonMailingAddress,
backref='person',
primaryjoin=PersonMailingAddress.parent_uuid == Person.uuid,
@ -152,7 +172,7 @@ Person.addresses = relationship(
order_by=PersonMailingAddress.preference,
cascade='save-update, merge, delete, delete-orphan')
Person.address = relationship(
Person.address = orm.relationship(
PersonMailingAddress,
primaryjoin=sa.and_(
PersonMailingAddress.parent_uuid == Person.uuid,