Skip to content

The events calendar

The events calendar is the platform's diary of events and meetings: site-wide happenings with a date/time, a location, a description, and an optional list of attendees who can be invited and can RSVP. It is reached at /calendar/list — an events list alongside a month/week/day calendar widget.

This is a standalone events calendar. It does not aggregate deal key dates, figures reminders, or tasks — those are separate features. (A different "spend calendar" under turnover is unrelated.)

What an event is

An event is stored in the calendar table with: a name, description, start and end date/time (held in UTC), an address and postcode, a type (appointmentType), an organizer, a maximum guests count, a require-registration flag, a private flag, and a soft link to another object (relatedType/relatedID) such as a deal or company. Events are not all-day, recurring, or color-coded, and there are no scheduled reminders — the platform has none of those for the calendar.

The calendar views

  • Events list — upcoming events as a simple list, each linking to its detail.
  • Calendar widget — a full month/week/day/list calendar (FullCalendar) that loads events for the visible date range. Events are fetched by start/end date range, not by month.

Registration and attendees

Events can require registration with a maximum guest count; the detail view shows remaining slots. Each event has an attendee list (the calender_attendee table) with a per-attendee RSVP status. Attendees are added when the event is created (all invited recipients are auto-added) or later, individually or by expanding a group. On the detail view, an admin — or the attendee themselves — can confirm or decline an attendee.

When an event is saved with the email option on, each attendee receives a one-shot invitation email with a calendar (ICS) attachment. This is the only notification the calendar sends — there are no lead-time reminders, and RSVP changes don't notify the organizer.

Who can see and manage events

  • View is controlled per event by an object-level ACL (object type calendar) enforced in the query, so users only see events they are permitted to. By default a view grant is open.
  • Add event is shown to admin users; edit defaults to the event creator and superusers (with the admin role); delete and admin default to superusers. See the permissions matrix.

Why does the calendar change unexpectedly

  • An event you could see disappeared — its view ACL or your roles changed; visibility is filtered per user in the query.
  • Registration slots changed — attendees were added or removed; remaining slots are the max guests minus current attendees.
  • An event shows different times to different people — times are stored in UTC and formatted in the viewer's display; check the UTC value if a time looks off.

What the events calendar is not

  • Not a deal timeline — it does not surface deal period dates; those live on the deal.
  • Not a figures/turnover calendar — that is the separate spend calendar.
  • Not a reminder system — the only email is the invitation sent at save time.