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:
@@ -130,8 +130,22 @@ async def workspace_service(
|
||||
workspace_repo: SQLiteWorkspaceRepository,
|
||||
invitation_repo: SQLiteWorkspaceInvitationRepository,
|
||||
personal_data_repo: SQLitePersonalDataRepository,
|
||||
user_repo: SQLiteUserRepository,
|
||||
leave_wish_repo: SQLiteLeaveWishRepository,
|
||||
planned_leave_repo: SQLitePlannedLeaveRepository,
|
||||
parental_leave_repo: SQLiteParentalLeaveRepository,
|
||||
vacation_repo: SQLiteVacationDaysRepository,
|
||||
) -> WorkspaceService:
|
||||
return WorkspaceService(workspace_repo, invitation_repo, personal_data_repo)
|
||||
return WorkspaceService(
|
||||
workspace_repo,
|
||||
invitation_repo,
|
||||
personal_data_repo,
|
||||
user_repo,
|
||||
leave_wish_repo,
|
||||
planned_leave_repo,
|
||||
parental_leave_repo,
|
||||
vacation_repo,
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user