Skip to content

Commit 65de5c0

Browse files
authored
Merge pull request #660 from xchem/fix_target_loader_object_proc
Fixes a bug in target loader's create_objects func
2 parents 0c3e7a6 + 51eb5b8 commit 65de5c0

File tree

1 file changed

+23
-24
lines changed

1 file changed

+23
-24
lines changed

viewer/target_loader.py

+23-24
Original file line numberDiff line numberDiff line change
@@ -336,13 +336,15 @@ def wrapper_create_objects(
336336
)
337337
obj.save()
338338
new = True
339+
except MultipleObjectsReturned:
340+
msg = "{}.get_or_create in {} returned multiple objects for {}".format(
341+
instance_data.model_class._meta.object_name, # pylint: disable=protected-access
342+
instance_data.key,
343+
instance_data.fields,
344+
)
345+
self.report.log(logging.ERROR, msg)
346+
failed = failed + 1
339347

340-
# obj, new = instance_data.model_class.filter_manager.by_target(
341-
# self.target
342-
# ).get_or_create(
343-
# **instance_data.fields,
344-
# defaults=instance_data.defaults,
345-
# )
346348
else:
347349
# no unique field requirements, just create new object
348350
obj = instance_data.model_class(
@@ -355,15 +357,6 @@ def wrapper_create_objects(
355357
instance_data.model_class._meta.object_name, # pylint: disable=protected-access
356358
obj,
357359
)
358-
359-
except MultipleObjectsReturned:
360-
msg = "{}.get_or_create in {} returned multiple objects for {}".format(
361-
instance_data.model_class._meta.object_name, # pylint: disable=protected-access
362-
instance_data.key,
363-
instance_data.fields,
364-
)
365-
self.report.log(logging.ERROR, msg)
366-
failed = failed + 1
367360
except IntegrityError:
368361
msg = "{} object {} failed to save".format(
369362
instance_data.model_class._meta.object_name, # pylint: disable=protected-access
@@ -414,15 +407,21 @@ def wrapper_create_objects(
414407
# index data here probs
415408
result[instance_data.versioned_key] = m
416409

417-
msg = "{} {} objects processed, {} created, {} fetched from database".format(
418-
created + existing + failed,
419-
next( # pylint: disable=protected-access
420-
iter(result.values())
421-
).instance._meta.model._meta.object_name, # pylint: disable=protected-access
422-
created,
423-
existing,
424-
) # pylint: disable=protected-access
425-
self.report.log(logging.INFO, msg)
410+
result = {}
411+
if result:
412+
msg = "{} {} objects processed, {} created, {} fetched from database".format(
413+
created + existing + failed,
414+
next( # pylint: disable=protected-access
415+
iter(result.values())
416+
).instance._meta.model._meta.object_name, # pylint: disable=protected-access
417+
created,
418+
existing,
419+
) # pylint: disable=protected-access
420+
self.report.log(logging.INFO, msg)
421+
else:
422+
# cannot continue when one object type is missing, abort
423+
msg = f"No objects returned by {func.__name__}"
424+
self.report.log(logging.ERROR, msg)
426425

427426
# refresh all objects to make sure they're up to date.
428427
# this is specifically because of the superseded flag above -

0 commit comments

Comments
 (0)