Calendar: appointments with an employment service, typed by hand #888

Closed
opened 2026-10-10 16:35:01 +00:00 by tiagoagueda · 1 comment
Owner

A person registered with an employment service (France Travail, Bundesagentur für Arbeit, IEFP, …) has meetings with an adviser. Postulo has nowhere to put them: an Interview requires an application, and the agenda's own docstring waits for this (applications/agenda.py:17-18, An appointment at the employment office can fill it later; the wiki's Tracking-applications.md:712 says not there yet).

No employment service publishes a job seeker's own appointments through an API (France Travail's Rendez-vous partenaire is for partner advisers), so they are typed by hand.

What exists today

  • CompanyKind.EMPLOYMENT_SERVICE (jobs/models.py:267-282), the services table (jobs/employment_services.py, fr:france-travail at :66), the adviser as a Contact at that company, Channel.EMPLOYMENT_SERVICE (applications/models.py:178-189), and the report addressed to the adviser (applications/reports.py).
  • Agenda kinds are a closed tuple, KINDS (agenda.py:86-92).

What would change

  • An Appointment (owned): company (an employment service), contact (the adviser, optional), starts_at/ends_at, how (in person with a place, phone, video with a link), notes, outcome notes, uid, an optional reminder.
  • A new agenda kind appointment: on the calendar, in the .ics feed, in the DAV sync's calendar later, and listed in the report for the adviser (meetings attended).
  • Linked: #887. Typed from the calendar (Add → Appointment) and from the employment-service company's page.
  • On the plugin surface: read access, and add_appointment for a plugin that can learn of one (none can today).

Decisions

  • A new model or an Interview without an application. Recommended: a new model — an interview's outcome, stages and application timeline mean nothing here.

Checked against main at 8c3d03570. Needed by tiagoagueda/postulo-francetravail, an independent plugin outside Postulo's official repositories, but general to any country's employment service.

A person registered with an employment service (France Travail, Bundesagentur für Arbeit, IEFP, …) has meetings with an adviser. Postulo has nowhere to put them: an `Interview` requires an application, and the agenda's own docstring waits for this (`applications/agenda.py:17-18`, *An appointment at the employment office can fill it later*; the wiki's `Tracking-applications.md:712` says *not there yet*). No employment service publishes a job seeker's own appointments through an API (France Travail's *Rendez-vous partenaire* is for partner advisers), so they are typed by hand. ## What exists today - `CompanyKind.EMPLOYMENT_SERVICE` (`jobs/models.py:267-282`), the services table (`jobs/employment_services.py`, `fr:france-travail` at `:66`), the adviser as a `Contact` at that company, `Channel.EMPLOYMENT_SERVICE` (`applications/models.py:178-189`), and the report addressed to the adviser (`applications/reports.py`). - Agenda kinds are a closed tuple, `KINDS` (`agenda.py:86-92`). ## What would change - An `Appointment` (owned): company (an employment service), contact (the adviser, optional), `starts_at`/`ends_at`, how (in person with a place, phone, video with a link), notes, outcome notes, `uid`, an optional reminder. - A new agenda kind `appointment`: on the calendar, in the `.ics` feed, in the DAV sync's calendar later, and listed in the report for the adviser (*meetings attended*). - Linked: #887. Typed from the calendar (*Add → Appointment*) and from the employment-service company's page. - On the plugin surface: read access, and `add_appointment` for a plugin that can learn of one (none can today). ## Decisions - **A new model or an `Interview` without an application.** Recommended: a new model — an interview's outcome, stages and application timeline mean nothing here. Checked against `main` at `8c3d03570`. Needed by [tiagoagueda/postulo-francetravail](https://source.tiagoagueda.com/tiagoagueda/postulo-francetravail), an independent plugin outside Postulo's official repositories, but general to any country's employment service.
tiagoagueda added this to the 0.6.0 milestone 2026-10-10 16:35:01 +00:00
Author
Owner

Fixed in 30e295954 on main.

Fixed in 30e295954 on main.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#888
No description provided.