diff --git a/awxkit/awxkit/api/pages/api.py b/awxkit/awxkit/api/pages/api.py index b4a786d7a6..ddd01803bf 100644 --- a/awxkit/awxkit/api/pages/api.py +++ b/awxkit/awxkit/api/pages/api.py @@ -129,11 +129,13 @@ class ApiV2(base.Base): continue try: # FIXME: use caching by url - fields[key] = asset.related[key].get().get_natural_key() + natural_key = asset.related[key].get().get_natural_key() except exc.Forbidden: log.warning("This foreign key cannot be read: %s", asset.related[key]) - if options[key]['required']: - return None # This is a mandatory foreign key + return None + if natural_key is None: + return None # This is an unresolvable foreign key + fields[key] = natural_key related = {} for key, related_endpoint in asset.related.items(): @@ -172,7 +174,11 @@ class ApiV2(base.Base): if related: fields['related'] = related - fields['natural_key'] = asset.get_natural_key() + natural_key = asset.get_natural_key() + if natural_key is None: + return None + fields['natural_key'] = natural_key + return remove_encrypted(fields) def _get_assets(self, resource, value): diff --git a/awxkit/awxkit/api/pages/page.py b/awxkit/awxkit/api/pages/page.py index 4a824ee290..91098abe8d 100644 --- a/awxkit/awxkit/api/pages/page.py +++ b/awxkit/awxkit/api/pages/page.py @@ -331,7 +331,7 @@ class Page(object): # FIXME: use caching by url natural_key[key] = self.related[key].get().get_natural_key() except exc.Forbidden: - log.warning("This foreign key cannot be read: %s", getattr(self, 'endpoint', '')) + log.warning("This foreign key cannot be read: %s", self.related[key]) return None elif key in self: natural_key[key] = self[key]