Deal with lack of permissions

This commit is contained in:
Jeff Bradberry
2020-03-24 16:40:23 -04:00
parent 01d575f833
commit 30a3e3e172

View File

@@ -92,7 +92,7 @@ class ApiV2(base.Base):
# Common import/export methods # Common import/export methods
def _get_options(self, endpoint): def _get_options(self, endpoint):
return endpoint.options().json['actions']['POST'] return endpoint.options().json['actions'].get('POST', {})
# Export methods # Export methods
@@ -101,31 +101,34 @@ class ApiV2(base.Base):
if asset.json.get('managed_by_tower'): if asset.json.get('managed_by_tower'):
return None return None
fields = { try:
key: asset[key] for key in options fields = {
if key in asset.json and key not in asset.related key: asset[key] for key in options
} if key in asset.json and key not in asset.related
fields['natural_key'] = get_natural_key(asset) }
fields['natural_key'] = get_natural_key(asset)
fk_fields = { fk_fields = {
key: get_natural_key(asset.related[key].get()) for key in options key: get_natural_key(asset.related[key].get()) for key in options
if key in asset.related if key in asset.related
} }
related = {} related = {}
for k, related_endpoint in asset.related.items(): for k, related_endpoint in asset.related.items():
if not related_endpoint: if not related_endpoint:
continue continue
if k == 'object_roles': if k == 'object_roles':
continue continue
rel = related_endpoint._create() rel = related_endpoint._create()
if rel.__class__.__name__ not in EXPORTABLE_RELATIONS: if rel.__class__.__name__ not in EXPORTABLE_RELATIONS:
continue continue
data = related_endpoint.get(all_pages=True) data = related_endpoint.get(all_pages=True)
if 'results' in data: if 'results' in data:
related[k] = [get_natural_key(x) for x in data.results] related[k] = [get_natural_key(x) for x in data.results]
else: else:
related[k] = data.json related[k] = data.json
except exc.Forbidden:
return None
related_fields = {'related': related} if related else {} related_fields = {'related': related} if related else {}