Fix timestamps off by timezone offset in non-UTC containers (#504)

All backend timestamps used datetime.now() (server local time) or the
deprecated datetime.utcnow(). The frontend's parseUTCDate() assumes
timestamps without timezone indicators are UTC and appends 'Z', so
stored timestamps were off by the timezone offset when the container's
timezone wasn't UTC.

Backend: replaced datetime.now() and datetime.utcnow() with
datetime.now(timezone.utc) across 16 files (~80 call sites) for all
database fields and DB comparisons. Cosmetic timestamps (filenames,
user-facing local time formatting) intentionally left as local time.

Frontend: replaced 13 new Date(backendTimestamp) calls with
parseUTCDate() across 8 files to correctly interpret UTC timestamps.
This commit is contained in:
maziggy
2026-02-24 08:18:02 +01:00
parent 974988c4f1
commit ed36eafbec
30 changed files with 207 additions and 203 deletions
+2 -2
View File
@@ -10,7 +10,7 @@ import { useFilamentMapping } from '../../hooks/useFilamentMapping';
import { useMultiPrinterFilamentMapping, type PerPrinterConfig } from '../../hooks/useMultiPrinterFilamentMapping';
import { isPlaceholderDate } from '../../utils/amsHelpers';
import { getCurrencySymbol } from '../../utils/currency';
import { toDateTimeLocalValue } from '../../utils/date';
import { toDateTimeLocalValue, parseUTCDate } from '../../utils/date';
import { Button } from '../Button';
import { Card, CardContent } from '../Card';
import { FilamentMapping } from './FilamentMapping';
@@ -94,7 +94,7 @@ export function PrintModal({
let scheduledTime = '';
if (queueItem.scheduled_time && !isPlaceholderDate(queueItem.scheduled_time)) {
const date = new Date(queueItem.scheduled_time);
const date = parseUTCDate(queueItem.scheduled_time) ?? new Date();
// Use toDateTimeLocalValue to convert UTC to local time for datetime-local input
scheduledTime = toDateTimeLocalValue(date);
}