Commit b78fbc50 authored by Jason Grider's avatar Jason Grider

Updating views.py to support changes in Peewee version 3.0 (for Fields the...

Updating views.py to support changes in Peewee version 3.0 (for Fields the model_class attribute has changed to model). Previous versions of Peewee should work because of the try: except: loop I put in to first try model_class then on AttributeError try model.
parent 06aebf07
...@@ -234,14 +234,24 @@ class ModelView(BaseModelView): ...@@ -234,14 +234,24 @@ class ModelView(BaseModelView):
raise Exception('Failed to find field for filter: %s' % name) raise Exception('Failed to find field for filter: %s' % name)
# Check if field is in different model # Check if field is in different model
if attr.model_class != self.model: try:
visible_name = '%s / %s' % (self.get_column_name(attr.model_class.__name__), if attr.model_class != self.model:
visible_name = '%s / %s' % (self.get_column_name(attr.model_class.__name__),
self.get_column_name(attr.name)) self.get_column_name(attr.name))
else:
if not isinstance(name, string_types):
visible_name = self.get_column_name(attr.name)
else: else:
visible_name = self.get_column_name(name) if not isinstance(name, string_types):
visible_name = self.get_column_name(attr.name)
else:
visible_name = self.get_column_name(name)
except AttributeError:
if attr.model != self.model:
visible_name = '%s / %s' % (self.get_column_name(attr.model.__name__),
self.get_column_name(attr.name))
else:
if not isinstance(name, string_types):
visible_name = self.get_column_name(attr.name)
else:
visible_name = self.get_column_name(name)
type_name = type(attr).__name__ type_name = type(attr).__name__
flt = self.filter_converter.convert(type_name, flt = self.filter_converter.convert(type_name,
...@@ -307,12 +317,20 @@ class ModelView(BaseModelView): ...@@ -307,12 +317,20 @@ class ModelView(BaseModelView):
return create_ajax_loader(self.model, name, name, options) return create_ajax_loader(self.model, name, name, options)
def _handle_join(self, query, field, joins): def _handle_join(self, query, field, joins):
if field.model_class != self.model: try:
model_name = field.model_class.__name__ if field.model_class != self.model:
model_name = field.model_class.__name__
if model_name not in joins:
query = query.join(field.model_class, JOIN.LEFT_OUTER)
joins.add(model_name)
except AttributeError:
if field.model != self.model:
model_name = field.model.__name__
if model_name not in joins: if model_name not in joins:
query = query.join(field.model_class, JOIN.LEFT_OUTER) query = query.join(field.model, JOIN.LEFT_OUTER)
joins.add(model_name) joins.add(model_name)
return query return query
...@@ -321,8 +339,12 @@ class ModelView(BaseModelView): ...@@ -321,8 +339,12 @@ class ModelView(BaseModelView):
field = getattr(self.model, sort_field) field = getattr(self.model, sort_field)
query = query.order_by(field.desc() if sort_desc else field.asc()) query = query.order_by(field.desc() if sort_desc else field.asc())
elif isinstance(sort_field, Field): elif isinstance(sort_field, Field):
if sort_field.model_class != self.model: try:
query = self._handle_join(query, sort_field, joins) if sort_field.model_class != self.model:
query = self._handle_join(query, sort_field, joins)
except AttributeError:
if sort_field.model != self.model:
query = self._handle_join(query, sort_field, joins)
query = query.order_by(sort_field.desc() if sort_desc else sort_field.asc()) query = query.order_by(sort_field.desc() if sort_desc else sort_field.asc())
......
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