mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 17:37:37 -02:30
prohibit additional items from related_search_fields
This commit is contained in:
@@ -278,17 +278,21 @@ class ListAPIView(generics.ListAPIView, GenericAPIView):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def related_search_fields(self):
|
def related_search_fields(self):
|
||||||
|
def skip_related_name(name):
|
||||||
|
return (
|
||||||
|
name is None or name.endswith('_role') or name.startswith('_') or
|
||||||
|
name.startswith('deprecated_') or name.endswith('_set') or
|
||||||
|
name == 'polymorphic_ctype')
|
||||||
|
|
||||||
fields = []
|
fields = []
|
||||||
for field in self.model._meta.fields:
|
for field in self.model._meta.fields:
|
||||||
if field.name.endswith('_role'):
|
if skip_related_name(field.name):
|
||||||
continue
|
continue
|
||||||
if getattr(field, 'related_model', None):
|
if getattr(field, 'related_model', None):
|
||||||
fields.append('{}__search'.format(field.name))
|
fields.append('{}__search'.format(field.name))
|
||||||
for rel in self.model._meta.related_objects:
|
for rel in self.model._meta.related_objects:
|
||||||
name = rel.get_accessor_name()
|
name = rel.get_accessor_name()
|
||||||
if name is None:
|
if skip_related_name(name):
|
||||||
continue
|
|
||||||
if name.endswith('_set'):
|
|
||||||
continue
|
continue
|
||||||
fields.append('{}__search'.format(name))
|
fields.append('{}__search'.format(name))
|
||||||
m2m_rel = []
|
m2m_rel = []
|
||||||
@@ -298,6 +302,8 @@ class ListAPIView(generics.ListAPIView, GenericAPIView):
|
|||||||
if issubclass(self.model, UnifiedJob) and self.model != UnifiedJob:
|
if issubclass(self.model, UnifiedJob) and self.model != UnifiedJob:
|
||||||
m2m_rel += UnifiedJob._meta.local_many_to_many
|
m2m_rel += UnifiedJob._meta.local_many_to_many
|
||||||
for relationship in m2m_rel:
|
for relationship in m2m_rel:
|
||||||
|
if skip_related_name(relationship.name):
|
||||||
|
continue
|
||||||
if relationship.related_model._meta.app_label != 'main':
|
if relationship.related_model._meta.app_label != 'main':
|
||||||
continue
|
continue
|
||||||
fields.append('{}__search'.format(relationship.name))
|
fields.append('{}__search'.format(relationship.name))
|
||||||
|
|||||||
Reference in New Issue
Block a user