From 0c2cb44b0f387053f6b6b17bbd4fe0ec2a7819c3 Mon Sep 17 00:00:00 2001 From: James Turk Date: Tue, 11 Oct 2016 19:01:30 -0400 Subject: [PATCH] allow log-only behavior for unresolved ids when there are multiple matches instead of just no matches --- pupa/importers/base.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pupa/importers/base.py b/pupa/importers/base.py index d4341962..cdecdcf0 100644 --- a/pupa/importers/base.py +++ b/pupa/importers/base.py @@ -144,18 +144,21 @@ def resolve_json_id(self, json_id, allow_no_match=False): ids = {each.id for each in objects} if len(ids) == 1: self.pseudo_id_cache[json_id] = ids.pop() + errmsg = None elif not ids: - msg = 'cannot resolve pseudo id to {}: {}'.format( + errmsg = 'cannot resolve pseudo id to {}: {}'.format( self.model_class.__name__, json_id) + else: + errmsg = 'multiple objects returned for {} pseudo id {}: {}'.format( + self.model_class.__name__, json_id, ids) + + # either raise or log error + if errmsg: if not allow_no_match: - raise UnresolvedIdError(msg) + raise UnresolvedIdError(errmsg) else: - self.error(msg) + self.error(errmsg) self.pseudo_id_cache[json_id] = None - else: - raise UnresolvedIdError( - 'multiple objects returned for {} pseudo id {}: {}'.format( - self.model_class.__name__, json_id, ids)) # return the cached object return self.pseudo_id_cache[json_id]