An event's location is one short line (2026-07-07)¶
Events gained a free-text Location field on 2026-06-20, as a TextField.
Within three weeks users were pasting whole meeting invitations into it.
The field was meant to say where the event is, in a line.
Decision¶
Event.location is a CharField(max_length=150) with a single-line
input: the browser's maxlength and server validation both enforce it.
A location is a short pointer, a meeting link or a courthouse and
courtroom, not a notes field. 150 still fits a video-call link with its
passcode or a courthouse address with a room. A location pulled from
Google is truncated to the column so one long remote value cannot fail
a sync run.
It is one field. There is no separate address, room, link or
meeting-type field for the where of an event beyond event_type.
Alternatives¶
Keeping the TextField and adding a notes area beside it was not taken;
the point was to stop the field being a notes area. Splitting the
location into structured parts (address, link, room) was not taken
either; the reason is not recorded beyond the field being a pointer.
Consequences¶
- The migration that narrowed the column trimmed over-length rows in
app_eventand its history table. Anything worth keeping from a long location had to be salvaged before migrating. - Inbound Google sync writes
locationunder the same rule as the rest of the pull (not while local edits are unpushed) and cuts it to the column; a location removed on Google is cleared here. - A feature that needs more than a pointer (directions, a dial-in block) belongs in a note or a document, not in a wider column.
Evidence¶
- Commit "feat(calendar): constrain event location to a single 150-char line" (2026-07-07): "Users were dumping full meeting invitations into location. It becomes a CharField(150) with a single-line TextInput ... 150 still fits a Zoom link & passcode or courthouse address & courtroom."
- Commit "feat(calendar): add free-text Location to events; rebrand old field as Type" (2026-06-20), the field's origin.
apps/calendar/models.py, the comment onlocation: "CharField (not TextField) on purpose: location is a short pointer ... not a notes field."- Commit "fix(calendar): a deletion on Google no longer removes a finished or unsent event" (2026-10-02), which added the clearing of a location removed on Google.
Related¶
- Tasks and calendar: the Event model.
- Google Calendar sync rules.