summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext/declarative.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-03-26 23:14:16 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-03-26 23:14:16 -0400
commitb7a2d7de4854c26ea7773b1002852d4245cfcc10 (patch)
treee2c14cc6ce9ff41194cdae084ebeb1580e7756bb /lib/sqlalchemy/ext/declarative.py
parenta1b821a8c6cae7fb4940c581f8de7b42704ef701 (diff)
downloadsqlalchemy-b7a2d7de4854c26ea7773b1002852d4245cfcc10.tar.gz
- relationships and columns with foreign keys aren't
allowed on declarative mixins, sorry. [ticket:1751]
Diffstat (limited to 'lib/sqlalchemy/ext/declarative.py')
-rw-r--r--lib/sqlalchemy/ext/declarative.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/sqlalchemy/ext/declarative.py b/lib/sqlalchemy/ext/declarative.py
index ef1d3e68c..1f4658b60 100644
--- a/lib/sqlalchemy/ext/declarative.py
+++ b/lib/sqlalchemy/ext/declarative.py
@@ -507,7 +507,7 @@ Mapped instances then make usage of
from sqlalchemy.schema import Table, Column, MetaData
from sqlalchemy.orm import synonym as _orm_synonym, mapper, comparable_property, class_mapper
from sqlalchemy.orm.interfaces import MapperProperty
-from sqlalchemy.orm.properties import PropertyLoader, ColumnProperty
+from sqlalchemy.orm.properties import RelationshipProperty, ColumnProperty
from sqlalchemy.orm.util import _is_mapped_class
from sqlalchemy import util, exceptions
from sqlalchemy.sql import util as sql_util
@@ -543,7 +543,16 @@ def _as_declarative(cls, classname, dict_):
for name in names:
obj = getattr(base,name, None)
if isinstance(obj, Column):
+ if obj.foreign_keys:
+ raise exceptions.InvalidRequestError(
+ "Columns with foreign keys to other columns "
+ "are not allowed on declarative mixins at this time."
+ )
dict_[name]=column_copies[obj]=obj.copy()
+ elif isinstance(obj, RelationshipProperty):
+ raise exceptions.InvalidRequestError(
+ "relationships are not allowed on "
+ "declarative mixins at this time.")
# doing it this way enables these attributes to be descriptors
get_mapper_args = '__mapper_args__' in dict_
@@ -778,7 +787,7 @@ def _deferred_relationship(cls, prop):
prop.parent, arg, n.args[0], cls))
return return_cls
- if isinstance(prop, PropertyLoader):
+ if isinstance(prop, RelationshipProperty):
for attr in ('argument', 'order_by', 'primaryjoin', 'secondaryjoin',
'secondary', '_foreign_keys', 'remote_side'):
v = getattr(prop, attr)