Skip to content

Localise notification email deadlines to each recipient's timezone #197

Description

@alexeygrigorev

Background

Notification emails that show a deadline (currently the new peer-review-assignment email, and a good fit for deadline reminders too) render the deadline in UTC — e.g. "Thursday, 2 July 2026, 18:00 UTC".

We initially tried showing a fixed set of zones (PT/ET/London/Berlin/IST) but dropped it as noisy. For now we stick to UTC.

Goal

Show the deadline in each recipient's own timezone, similar to what the AI shipping lab does, so a learner sees the deadline in their local time without mental math.

Notes / considerations

  • The deadline is formatted in course_management/deadlines.pyformat_deadline_for_email() (CMP side). Today it returns a single UTC string.
  • To localise per recipient we need each user's timezone. Options:
    • Store a timezone on the user profile (let users set it, or infer from browser/IP at signup).
    • Since these emails go out as a Datamailer recipient-list send (one template, per-member context merged), per-recipient rendering means either (a) CMP includes each member's tz + a pre-formatted local string in member metadata, or (b) Datamailer renders the tz at send time. Prefer (a) to keep Datamailer platform-agnostic.
  • Fall back to UTC when a recipient has no timezone set.
  • Keep the weekday in the output.

Out of scope

Per-recipient localisation of all emails — start with the deadline-bearing ones.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions