Commit e81c1312 authored by Serge S. Koval's avatar Serge S. Koval

Fixed model conversion logic if property is not column

parent bde254c8
...@@ -79,6 +79,11 @@ class AdminModelConverter(ModelConverterBase): ...@@ -79,6 +79,11 @@ class AdminModelConverter(ModelConverterBase):
else: else:
# Ignore pk/fk # Ignore pk/fk
if hasattr(prop, 'columns'): if hasattr(prop, 'columns'):
# Check if more than one column mapped to the property
if len(prop.columns) != 1:
raise TypeError('Can not convert multiple-column properties (%s.%s)' % (model, prop.key))
# Grab column
column = prop.columns[0] column = prop.columns[0]
# Do not display foreign keys - use relations # Do not display foreign keys - use relations
...@@ -110,42 +115,40 @@ class AdminModelConverter(ModelConverterBase): ...@@ -110,42 +115,40 @@ class AdminModelConverter(ModelConverterBase):
if not column.nullable: if not column.nullable:
kwargs['validators'].append(validators.Required()) kwargs['validators'].append(validators.Required())
# Apply label # Apply label
kwargs['label'] = self._get_label(prop.key, kwargs) kwargs['label'] = self._get_label(prop.key, kwargs)
# Check if more than one column mapped to the property # Figure out default value
if len(prop.columns) != 1: default = getattr(column, 'default', None)
raise TypeError('Can not convert multiple-column properties (%s.%s)' % (model, prop.key))
# Figure out default value if default is not None:
default = getattr(column, 'default', None) callable_default = getattr(default, 'arg', None)
if default is not None: if callable_default and callable(callable_default):
callable_default = getattr(default, 'arg', None) default = callable_default(None)
if callable_default and callable(callable_default): if default is not None:
default = callable_default(None) kwargs['default'] = default
if default is not None: # Check nullable
kwargs['default'] = default if column.nullable:
kwargs['validators'].append(validators.Optional())
# Check nullable # Override field type if necessary
if column.nullable: override = self._get_field_override(prop.key)
kwargs['validators'].append(validators.Optional()) if override:
return override(**kwargs)
# Override field type if necessary # Run converter
override = self._get_field_override(prop.key) converter = self.get_converter(column)
if override:
return override(**kwargs)
# Run converter if converter is None:
converter = self.get_converter(column) return None
if converter is None: return converter(model=model, mapper=mapper, prop=prop,
return None column=column, field_args=kwargs)
return converter(model=model, mapper=mapper, prop=prop, return None
column=column, field_args=kwargs)
@classmethod @classmethod
def _string_common(cls, column, field_args, **extra): def _string_common(cls, column, field_args, **extra):
......
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