From 02cc2e5a61d06b5240d96bf1e3c43cfce35e3da8 Mon Sep 17 00:00:00 2001 From: Joel Savitz Date: Mon, 17 Feb 2025 18:25:51 -0500 Subject: [PATCH 1/2] denis: configure: dump: use isoformat instead of unix timestamp Signed-off-by: Joel Savitz --- container-compose.yml | 2 ++ denis/Containerfile | 1 + denis/configure.py | 10 +++++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/container-compose.yml b/container-compose.yml index a6cee3c8..bbc50556 100644 --- a/container-compose.yml +++ b/container-compose.yml @@ -183,6 +183,8 @@ services: - journal_source=./journal - mailman_source=./mailman - orbit_source=./orbit + environment: + TZ: ${SINGULARITY_TIMEZONE} volumes: - type: volume source: denis-db diff --git a/denis/Containerfile b/denis/Containerfile index f87db507..8808eb91 100644 --- a/denis/Containerfile +++ b/denis/Containerfile @@ -22,6 +22,7 @@ FROM alpine:3.20 AS denis RUN apk add \ py3-peewee \ py3-gitpython \ + tzdata \ ; WORKDIR /usr/local/share/denis diff --git a/denis/configure.py b/denis/configure.py index 1bef66f4..e6c71170 100755 --- a/denis/configure.py +++ b/denis/configure.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from datetime import datetime from argparse import ArgumentParser as ap import db @@ -97,12 +98,15 @@ def remove(assignment): def dump(): + def timestamp_to_formatted(timestamp): + return datetime.fromtimestamp(timestamp).astimezone().isoformat() + print(' --- Assignments ---') for asn in db.Assignment.select(): print(f'''{asn.name}: -\tInitial: {asn.initial_due_date} -\tPeer Review: {asn.peer_review_due_date} -\tFinal: {asn.final_due_date}''') +\tInitial:\t{timestamp_to_formatted(asn.initial_due_date)} +\tPeer Review:\t{timestamp_to_formatted(asn.peer_review_due_date)} +\tFinal:\t\t{timestamp_to_formatted(asn.final_due_date)}''') def reload(): From f75a533ac67d0938aba0eb8afd4e18e36fb5a4e0 Mon Sep 17 00:00:00 2001 From: Joel Savitz Date: Mon, 17 Feb 2025 18:34:01 -0500 Subject: [PATCH 2/2] denis: configure: dump: default to friendlier format but retain iso option Signed-off-by: Joel Savitz --- denis/configure.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/denis/configure.py b/denis/configure.py index e6c71170..c18060d9 100755 --- a/denis/configure.py +++ b/denis/configure.py @@ -49,7 +49,12 @@ def add_final(parser, required=True): remove_parser = command_parsers.add_parser('remove') add_assignment(remove_parser) - command_parsers.add_parser('dump') + dump_parser = command_parsers.add_parser('dump') + dump_parser.add_argument('-i', '--iso', + action='store_true', + dest='fmt_iso', + help='Dump dates in ISO format') + command_parsers.add_parser('reload') # Dictionary containing the desired command and all flags with their values @@ -97,9 +102,10 @@ def remove(assignment): print(f'no such assignment {assignment}') -def dump(): +def dump(fmt_iso): def timestamp_to_formatted(timestamp): - return datetime.fromtimestamp(timestamp).astimezone().isoformat() + dt = datetime.fromtimestamp(timestamp).astimezone() + return dt.isoformat() if fmt_iso else dt.strftime('%a %b %d %Y %T %Z (%z)') print(' --- Assignments ---') for asn in db.Assignment.select():