From 8db24bcf1a9fd24467e87a8734f6f3a15fd568a6 Mon Sep 17 00:00:00 2001 From: Roberto Perdomo Macedo Date: Wed, 21 Apr 2021 13:06:10 +0100 Subject: [PATCH 1/2] Update users.py ### Added exc.IntegrityError to catch when an user update contains an already registered email --- .../app/app/api/api_v1/endpoints/users.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py index c8f89b63d8..6d3a1c384b 100644 --- a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py +++ b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py @@ -4,7 +4,7 @@ from fastapi.encoders import jsonable_encoder from pydantic.networks import EmailStr from sqlalchemy.orm import Session - +from sqlalchemy import exc from app import crud, models, schemas from app.api import deps from app.core.config import settings @@ -71,7 +71,12 @@ def update_user_me( user_in.full_name = full_name if email is not None: user_in.email = email - user = crud.user.update(db, db_obj=current_user, obj_in=user_in) + try: + user = crud.user.update(db, db_obj=current_user, obj_in=user_in) + except exc.IntegrityError: + raise HTTPException( + status_code=409, detail="User with this email already exists" + ) return user @@ -149,5 +154,10 @@ def update_user( status_code=404, detail="The user with this username does not exist in the system", ) - user = crud.user.update(db, db_obj=user, obj_in=user_in) + try: + user = crud.user.update(db, db_obj=current_user, obj_in=user_in) + except exc.IntegrityError: + raise HTTPException( + status_code=409, detail="User with this email already exists" + ) return user From 4bf5386f85732e4acf40c2dbc7de6a19513f7be0 Mon Sep 17 00:00:00 2001 From: Roberto Perdomo Macedo Date: Wed, 21 Apr 2021 13:24:18 +0100 Subject: [PATCH 2/2] Update users.py --- .../backend/app/app/api/api_v1/endpoints/users.py | 1 + 1 file changed, 1 insertion(+) diff --git a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py index 6d3a1c384b..2486b60efe 100644 --- a/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py +++ b/{{cookiecutter.project_slug}}/backend/app/app/api/api_v1/endpoints/users.py @@ -5,6 +5,7 @@ from pydantic.networks import EmailStr from sqlalchemy.orm import Session from sqlalchemy import exc + from app import crud, models, schemas from app.api import deps from app.core.config import settings