Source code for swh.deposit.api.converters
# Copyright (C) 2017-2021 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
[docs]
def convert_status_detail(status_detail):
"""Given a status_detail dict, transforms it into a human readable string.
Dict has the following form (all first level keys are optional)::
{
'url': {
'summary': "summary-string",
'fields': [impacted-fields-list]
},
'metadata': [{
'summary': "summary-string",
'fields': [impacted-fields-list],
}],
'archive': [{
'summary': "summary-string",
'fields': [impacted-fields-list],
}],
'loading': [
'error 1',
'error 2',
],
}
Args:
status_detail (dict): The status detail dict with the syntax
mentioned
Returns:
the status detail as inlined string
"""
if not status_detail:
return None
def _str_fields(data):
fields = data.get("fields")
if not fields:
return ""
return " (%s)" % ", ".join(map(str, fields))
msg = []
for key in ["metadata", "archive"]:
_detail = status_detail.get(key)
if _detail:
for data in _detail:
msg.append("- %s%s\n" % (data["summary"], _str_fields(data)))
_detail = status_detail.get("url")
if _detail:
msg.append("- %s%s\n" % (_detail["summary"], _str_fields(_detail)))
_detail = status_detail.get("loading")
if _detail:
msg.extend(f"- {error}\n" for error in _detail)
if not msg:
return None
return "".join(msg)