Attempt to infer related pages on export when the link is missing

This commit is contained in:
Jeff Bradberry
2020-10-08 11:23:17 -04:00
parent 32c08a09c3
commit a07dabae9e
3 changed files with 16 additions and 26 deletions

View File

@@ -72,10 +72,21 @@ class ApiV2(base.Base):
}
for key in post_fields:
if key not in _page.related:
continue
if key in _page.related:
related = _page.related[key]
else:
if post_fields[key]['type'] == 'id' and _page.json.get(key) is not None:
log.warning("Related link %r missing from %s, attempting to reconstruct endpoint.",
key, _page.endpoint)
resource = getattr(self, key, None)
if resource is None:
log.error("Unable to infer endpoint for %r on %s.", key, _page.endpoint)
continue
related = self._filtered_list(resource, _page.json[key]).results[0]
else:
continue
rel_endpoint = self._cache.get_page(_page.related[key])
rel_endpoint = self._cache.get_page(related)
if rel_endpoint is None: # This foreign key is unreadable
if post_fields[key].get('required'):
log.error("Foreign key %r export failed for object %s.", key, _page.endpoint)