Add rename and remove for a workspace's placeholder partner
Settings is gaining a partner display, which hides the add-form once a
partner exists. Without these routes a typo'd partner name would be
permanently unfixable, since no endpoint could change or drop one.
PATCH /workspace/{id}/parents/{uuid} renames; DELETE soft-deletes.
Soft rather than hard delete because PersonalData holds PII and the
repository is a SoftDeleteRepository specifically so erasure stays
auditable.
Removal refuses (422) when the member still has leave wishes, planned
leave, parental-leave rows or vacation days, naming the blockers, so a
removal can never orphan plan data. It also refuses for the caller's own
profile, and for a member who has their own login -- the invite/redeem
flow re-points a real user's personal_data into the inviter's workspace,
so soft-deleting that row would silently break their login.
Errors carry message_key + data rather than prose, per the no-Swedish-on
-the-wire rule; NotFoundError/ValidationError gained the same optional
shape DubbeldagError already had, defaulting empty so existing call
sites are unaffected.
Also fixes seed_demo.py constructing WorkspaceService with a stale
3-arg signature, which would have crashed at runtime -- invisible to
pytest since it is a standalone script.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RXMhc9nT6sNz1SL4j8dznL
This commit is contained in:
@@ -237,8 +237,22 @@ def get_workspace_service(
|
||||
ws_repo: WorkspaceRepositoryDep,
|
||||
inv_repo: WorkspaceInvitationRepositoryDep,
|
||||
pd_repo: PersonalDataRepositoryDep,
|
||||
user_repo: UserRepositoryDep,
|
||||
leave_wish_repo: LeaveWishRepositoryDep,
|
||||
planned_leave_repo: PlannedLeaveRepositoryDep,
|
||||
parental_leave_repo: ParentalLeaveRepositoryDep,
|
||||
vacation_days_repo: VacationDaysRepositoryDep,
|
||||
) -> WorkspaceService:
|
||||
return WorkspaceService(ws_repo, inv_repo, pd_repo)
|
||||
return WorkspaceService(
|
||||
ws_repo,
|
||||
inv_repo,
|
||||
pd_repo,
|
||||
user_repo,
|
||||
leave_wish_repo,
|
||||
planned_leave_repo,
|
||||
parental_leave_repo,
|
||||
vacation_days_repo,
|
||||
)
|
||||
|
||||
|
||||
WorkspaceServiceDep = Annotated[WorkspaceService, Depends(get_workspace_service)]
|
||||
|
||||
Reference in New Issue
Block a user