Skip to content

Commit

Permalink
Improved error reporting in both simple registration command aswell a…
Browse files Browse the repository at this point in the history
…s batch registration.
  • Loading branch information
constantinius committed Jan 14, 2015
1 parent 10c226a commit 60452d2
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,10 @@ def handle_with_cache(self, cache, *args, **kwargs):

except Exception as e:
self.print_traceback(e, kwargs)
raise CommandError("Dataset registration failed: %s" % e)
raise CommandError(
"Dataset '%s' registration failed: %s" %
(retrieved_metadata["identifier"], e)
)

self.print_msg(
"Dataset with ID '%s' registered sucessfully."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,24 +91,43 @@ def handle(self, *args, **kwargs):
if header:
header = header.split(",")

sum_successful = 0
sum_failed = 0

for filename in args:
with open(filename) as f:
self.print_msg("Processing batch file '%s'." % filename)
reader = csv.DictReader(
f, fieldnames=header, delimiter=delimiter
)
self.handle_file(reader, kwargs)
successful, failed = self.handle_file(reader, filename, kwargs)
self.print_msg(
"Finished processing batch file '%s'." % filename
"Finished processing batch file '%s'. Processed %d "
"datasets (%d successful, %d failed)" % (
filename, successful + failed, successful, failed
)
)
sum_successful += successful
sum_failed += failed

self.print_msg(
"Finished processing %d batch file%s. Processed %d datasets "
"(%d successful, %d failed)" % (
len(args), "s" if len(args) > 1 else "",
sum_successful + sum_failed, sum_successful, sum_failed
)
)

def handle_file(self, reader, kwargs):
def handle_file(self, reader, filename, kwargs):
sid = None
on_error = kwargs["on_error"]
traceback = kwargs["traceback"]
verbosity = kwargs["verbosity"]

for row in reader:
successful = 0
failed = 0

for i, row in enumerate(reader):
params = self._translate_params(row)
if on_error != "rollback":
sid = transaction.savepoint()
Expand All @@ -118,17 +137,21 @@ def handle_file(self, reader, kwargs):
)
if sid:
transaction.savepoint_commit(sid)
except Exception, e:
successful += 1
except BaseException: # need to catch SystemExit aswell
self.print_err(
"Error occurred: '%s'" % e
"Failed to register line %d of file '%s." % (i, filename)
)
transaction.savepoint_rollback(sid)
if on_error == "ignore":
failed += 1
continue
elif on_error == "stop":
transaction.commit()
raise

return successful, failed

def _translate_params(self, params):
out = {}
for key, value in params.items():
Expand Down

0 comments on commit 60452d2

Please sign in to comment.