Skip to content

Commit

Permalink
Delete user (#228)
Browse files Browse the repository at this point in the history
* feat: add delete endpoint for members

* fix: correct variable type for short uuid-comparisons in crud

* chore: bump version
  • Loading branch information
Sebbedi authored Aug 9, 2024
1 parent 6f00f24 commit 34a1c34
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 8 deletions.
2 changes: 1 addition & 1 deletion back/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "tmeit_backend"
version = "1.3.4"
version = "1.3.5"
description = "Python backend for the TMEIT website"
authors = ["TraditionsMEsterIT"]
license = "AGPL-3.0"
Expand Down
9 changes: 9 additions & 0 deletions back/tmeit_backend/crud/members.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,12 @@ async def update_member(db: AsyncSession,
sql_member['workteams_leading'] = []

return response_schema.parse_obj(sql_member)

async def delete_member(db: AsyncSession,
short_uuid: str) -> None:
async with db.begin():
stmt = select(models.Member).where(models.Member.short_uuid == short_uuid)
result = (await db.execute(stmt)).fetchone()
if result is None:
raise KeyError()
await db.delete(result.Member)
21 changes: 19 additions & 2 deletions back/tmeit_backend/routers/members.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@

from ._database_deps import get_db, get_current_user
from ._error_responses import NotFoundResponse, ForbiddenResponse, BadPatchResponse
from ..crud.members import get_members, get_member_by_short_uuid, create_member, update_member, change_password
from ..crud.members import get_members, get_member_by_short_uuid, create_member, update_member, change_password, delete_member
from ..deps import get_worker_pool
from ..schemas.members.schemas import base64url_length_8, MemberMemberView, MemberSelfView, MemberPublicView, \
MemberMasterView, MemberMasterCreate, MemberViewResponse, MemberSelfPatch, MemberMasterPatch, ChangePassword
MemberMasterView, MemberMasterCreate, MemberViewResponse, MemberSelfPatch, MemberMasterPatch, MemberMasterDelete, ChangePassword

router = APIRouter()
me_router = APIRouter()
Expand Down Expand Up @@ -162,3 +162,20 @@ async def send_test_email(current_user: MemberSelfView = Depends(get_current_use
content={"error": f"Only masters can send test emails."})
await pool.enqueue_job('send_test_email_to_member', current_user.uuid)
return "Email job submitted."


@router.delete("/{short_uuid}", responses={403: {"model": ForbiddenResponse}})
async def remove_member (short_uuid: base64url_length_8,
db: AsyncSession = Depends(get_db),
current_user: MemberMasterDelete = Depends(get_current_user)):

if current_user is None:
return JSONResponse(status_code=status.HTTP_403_FORBIDDEN,
content={"error": f"Only masters have the permission to delete members."})
try:
await delete_member(db=db, short_uuid=short_uuid)
except KeyError:
return JSONResponse(status_code=status.HTTP_404_NOT_FOUND,
content={"error": f"No member with the ID {short_uuid=} was found."})
return JSONResponse(status_code=status.HTTP_200_OK,
content={"Success": f"member with ID {short_uuid} has been deleted"})
3 changes: 3 additions & 0 deletions back/tmeit_backend/schemas/members/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,9 @@ class PatchSchemaConfig(BaseConfig):
# Create schemas
MemberMasterCreate = create_model('MemberMasterCreate', **build_member_schema_dict("master", edit))

# Delete schemas
MemberMasterDelete = create_model('MemberMasterDelete', **build_member_schema_dict("master", edit))


# Union type for the read schemas
MemberViewResponse = Union[MemberMasterView, MemberSelfView, MemberMemberView, MemberPublicView]
Expand Down
2 changes: 1 addition & 1 deletion deploy/kubernetes/tmeit-se/postgres/set_image_tag.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
{
"op": "replace",
"path": "/spec/jobTemplate/spec/template/spec/containers/0/image",
"value": "ghcr.io/tmeit/db-backup-agent:1.3.4"
"value": "ghcr.io/tmeit/db-backup-agent:1.3.5"
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
{
"op": "replace",
"path": "/spec/template/spec/containers/0/image",
"value": "ghcr.io/tmeit/tmeit-run-migrations:1.3.4"
"value": "ghcr.io/tmeit/tmeit-run-migrations:1.3.5"
}
]
2 changes: 1 addition & 1 deletion deploy/kubernetes/tmeit-se/tmeit-app/set_image_tag.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
{
"op": "replace",
"path": "/spec/template/spec/containers/0/image",
"value": "ghcr.io/tmeit/tmeit-app:1.3.4"
"value": "ghcr.io/tmeit/tmeit-app:1.3.5"
}
]
2 changes: 1 addition & 1 deletion deploy/kubernetes/tmeit-se/tmeit-worker/set_image_tag.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
{
"op": "replace",
"path": "/spec/template/spec/containers/0/image",
"value": "ghcr.io/tmeit/tmeit-worker:1.3.4"
"value": "ghcr.io/tmeit/tmeit-worker:1.3.5"
}
]
2 changes: 1 addition & 1 deletion front/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"sideEffects": [
"*.css"
],
"version": "1.3.4",
"version": "1.3.5",
"description": "Front-end for the TMEIT website.",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit 34a1c34

Please sign in to comment.