[enh] add journals display command

This commit is contained in:
Laurent Peuch 2016-06-24 10:05:43 +02:00
parent 19a29d9b34
commit 3eed2a28fe
2 changed files with 42 additions and 0 deletions

View file

@ -1605,3 +1605,11 @@ journals:
full: --limit
help: Maximum number of journals per categories
type: int
### journals_display()
display:
action_help: List journals
api: GET /journals/<file_name>
arguments:
file_name:
help: Journal file name

View file

@ -76,6 +76,40 @@ def journals_list(limit=None):
return result
def journals_display(file_name):
if not os.path.exists(JOURNALS_PATH):
# TODO raise exception
return {}
for category in os.listdir(JOURNALS_PATH):
for journal in filter(lambda x: x.endswith(".journal"), os.listdir(os.path.join(JOURNALS_PATH, category))):
if journal != file_name:
continue
with open(os.path.join(JOURNALS_PATH, category, file_name), "r") as content:
content = content.read()
journal = journal[:-len(".journal")]
journal = journal.split("_")
journal_datetime = datetime.strptime(" ".join(journal[-2:]), "%Y-%m-%d %H-%M-%S")
infos, logs = content.split("\n---\n", 1)
infos = yaml.safe_load(infos)
logs = [x.split(": ", 1) for x in logs.split("\n") if x]
return {
"started_at": journal_datetime,
"name": " ".join(journal[:-2]),
"file_name": file_name,
"path": os.path.join(JOURNALS_PATH, category, file_name),
"metadata": infos,
"logs": logs,
}
# TODO raise exception
return {}
class Journal(object):
def __init__(self, name, category, on_stdout=None, on_stderr=None, on_write=None, **kwargs):
self.name = name