Commit d897c718 authored by Serge S. Koval's avatar Serge S. Koval Committed by GitHub

Merge pull request #1348 from vToMy/bugfix/remote_hybrid_property

Added support for remote hybrid properties filters
parents d7ee730a 8f7a35ed
......@@ -190,7 +190,12 @@ def get_hybrid_properties(model):
def is_hybrid_property(model, attr_name):
return attr_name in get_hybrid_properties(model)
names = attr_name.split('.')
last_model = model
for i in range(len(names)-1):
last_model = getattr(last_model, names[i]).property.argument
last_name = names[-1]
return last_name in get_hybrid_properties(last_model)
def is_relationship(attr):
......@@ -199,9 +204,3 @@ def is_relationship(attr):
def is_association_proxy(attr):
return hasattr(attr, 'extension_type') and attr.extension_type == ASSOCIATION_PROXY
def get_association_proxy_column_name(attr):
# TODO find a better way to get the name
name, = [key for key, value in inspect(attr.owning_class).all_orm_descriptors.items() if value is attr]
return name
......@@ -2,6 +2,7 @@ import logging
import warnings
import inspect
from speaklater import is_lazy_string, make_lazy_string
from sqlalchemy.orm.attributes import InstrumentedAttribute
from sqlalchemy.orm import joinedload, aliased
from sqlalchemy.sql.expression import desc
......@@ -617,6 +618,7 @@ class ModelView(BaseModelView):
is_hybrid_property = tools.is_hybrid_property(self.model, name)
if is_hybrid_property:
column = attr
column.key = name.split('.')[-1]
else:
columns = tools.get_columns_for_field(attr)
......@@ -636,7 +638,14 @@ class ModelView(BaseModelView):
if not isinstance(name, string_types):
visible_name = self.get_column_name(name.property.key)
else:
visible_name = self.get_column_name(name)
column_name = self.get_column_name(name)
def prettify():
return column_name.replace('.', ' / ')
if is_lazy_string(column_name):
visible_name = make_lazy_string(prettify)
else:
visible_name = prettify()
type_name = type(column.type).__name__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment