Deal with unreadable mandatory foreign keys

by dropping the parent object.  Also, clarify some of the warning log
messages.
This commit is contained in:
Jeff Bradberry
2020-04-08 14:19:23 -04:00
parent 53d81d42cc
commit 43b76f4575
2 changed files with 6 additions and 5 deletions

View File

@@ -113,7 +113,6 @@ class ApiV2(base.Base):
key: asset.json[key] for key in options key: asset.json[key] for key in options
if key in asset.json and key not in asset.related and key != 'id' if key in asset.json and key not in asset.related and key != 'id'
} }
fields['natural_key'] = asset.get_natural_key()
for key in options: for key in options:
if key not in asset.related: if key not in asset.related:
@@ -122,8 +121,9 @@ class ApiV2(base.Base):
# FIXME: use caching by url # FIXME: use caching by url
fields[key] = asset.related[key].get().get_natural_key() fields[key] = asset.related[key].get().get_natural_key()
except exc.Forbidden: except exc.Forbidden:
log.warning("This object cannot be read: %s", asset.related[key]) log.warning("This foreign key cannot be read: %s", asset.related[key])
pass # FIXME: what if the fk is mandatory? if options[key]['required']:
return None # This is a mandatory foreign key
related = {} related = {}
for key, related_endpoint in asset.related.items(): for key, related_endpoint in asset.related.items():
@@ -147,7 +147,7 @@ class ApiV2(base.Base):
# FIXME: use caching by url # FIXME: use caching by url
data = rel.get(all_pages=True) data = rel.get(all_pages=True)
except exc.Forbidden: except exc.Forbidden:
log.warning("This object cannot be read: %s", related_endpoint) log.warning("These related objects cannot be read: %s", related_endpoint)
continue continue
if 'results' in data: if 'results' in data:
@@ -162,6 +162,7 @@ class ApiV2(base.Base):
if related: if related:
fields['related'] = related fields['related'] = related
fields['natural_key'] = asset.get_natural_key()
return fields return fields
def _get_assets(self, resource, value): def _get_assets(self, resource, value):

View File

@@ -331,7 +331,7 @@ class Page(object):
# FIXME: use caching by url # FIXME: use caching by url
natural_key[key] = self.related[key].get().get_natural_key() natural_key[key] = self.related[key].get().get_natural_key()
except exc.Forbidden: except exc.Forbidden:
log.warning("This object cannot be read: %s", getattr(self, 'endpoint', '')) log.warning("This foreign key cannot be read: %s", getattr(self, 'endpoint', ''))
return None return None
elif key in self: elif key in self:
natural_key[key] = self[key] natural_key[key] = self[key]