Merge pull request #1169 from AlanCoding/filterability

Add tip in OPTIONS for fields that cannot be filtered
This commit is contained in:
Alan Rominger
2018-04-11 14:35:37 -04:00
committed by GitHub
2 changed files with 24 additions and 6 deletions

View File

@@ -44,9 +44,9 @@ class Metadata(metadata.SimpleMetadata):
if placeholder is not serializers.empty: if placeholder is not serializers.empty:
field_info['placeholder'] = placeholder field_info['placeholder'] = placeholder
# Update help text for common fields.
serializer = getattr(field, 'parent', None) serializer = getattr(field, 'parent', None)
if serializer: if serializer and hasattr(serializer, 'Meta') and hasattr(serializer.Meta, 'model'):
# Update help text for common fields.
field_help_text = { field_help_text = {
'id': _('Database ID for this {}.'), 'id': _('Database ID for this {}.'),
'name': _('Name of this {}.'), 'name': _('Name of this {}.'),
@@ -59,10 +59,18 @@ class Metadata(metadata.SimpleMetadata):
'modified': _('Timestamp when this {} was last modified.'), 'modified': _('Timestamp when this {} was last modified.'),
} }
if field.field_name in field_help_text: if field.field_name in field_help_text:
if hasattr(serializer, 'Meta') and hasattr(serializer.Meta, 'model'): opts = serializer.Meta.model._meta.concrete_model._meta
opts = serializer.Meta.model._meta.concrete_model._meta verbose_name = smart_text(opts.verbose_name)
verbose_name = smart_text(opts.verbose_name) field_info['help_text'] = field_help_text[field.field_name].format(verbose_name)
field_info['help_text'] = field_help_text[field.field_name].format(verbose_name) # If field is not part of the model, then show it as non-filterable
else:
is_model_field = False
for model_field in serializer.Meta.model._meta.fields:
if field.field_name == model_field.name:
is_model_field = True
break
if not is_model_field:
field_info['filterable'] = False
# Indicate if a field has a default value. # Indicate if a field has a default value.
# FIXME: Still isn't showing all default values? # FIXME: Still isn't showing all default values?

View File

@@ -91,3 +91,13 @@ class TestDeleteViews:
job.get_absolute_url(), user=system_auditor job.get_absolute_url(), user=system_auditor
) )
assert resp.status_code == 403 assert resp.status_code == 403
@pytest.mark.django_db
def test_non_filterable_field(options, instance, admin_user):
r = options(
url=instance.get_absolute_url(),
user=admin_user
)
field_info = r.data['actions']['GET']['percent_capacity_remaining']
assert 'filterable' in field_info