Petition: link student user_account on creation / first login; clerk endpoints by petition

Abierto
#142 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python, sql
Área
api, backend, database

Línea de trabajo

Start with the migration and schema patterns in issues #138 and #141, then read api/security.py where first-login Employee creation is handled. Trace petition creation and both clerk routes named in the issue, and add integration tests for linking at creation and first login, preserving existing links, and resolving both endpoints without username lookups. Done means the schema, linking paths, routes, and acceptance tests all match the stated behavior.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Context

Petitions identify the student only by student_username (the supervisor only knows the username, and the student may not have an account yet). Usernames are fine for sending mail but not for identity: the planned account fusion maps several usernames of one human to one user. Clerk endpoints currently resolve students by username.

Decision

  • Add Petition.student_user_account: nullable uuid, FK → employee.user_account with ON UPDATE CASCADE (same pattern as #138 / #141)
  • On petition creation: if an Employee with student_username exists, set it immediately
  • On first login (branch in api/security.py where the Employee is created): UPDATE petition SET student_user_account = :sub WHERE student_username = :username AND student_user_account IS NULL
  • Username is used only once as the binding key; afterwards identity is user_account

Tasks

  • Migration + schema; backfill existing petitions from employee.username
  • Linking on petition creation and on first login
  • GET /clerk/petitions/{petition_id}/documents (from #138): resolve via petition.student_user_account instead of the username join (contract unchanged)
  • Replace GET /clerk/prev_employments/petition/{petition_id} with GET /clerk/petitions/{petition_id}/prev_employments, resolved via petition.student_user_account (breaking change for the frontend; remove the old route)

Acceptance criteria (integration tests)

  • Petition for an existing student is linked at creation
  • Petition for an unknown student is linked on the student's first login
  • Already-linked petitions are not overwritten
  • Both clerk endpoints work without any username lookup

Related: #138, #141

Lenguaje dominante
Python
Estrellas
0
Forks
0
Merge medio
39 min
PR fusionados (30 d)
10

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ClockGU/clockwork-backend

Todos los issues de ClockGU/clockwork-backend

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.