From 53780fe5f029219497866dd9b5079a3fabd41e57 Mon Sep 17 00:00:00 2001 From: David Beal Date: Thu, 9 Oct 2025 12:03:03 +0200 Subject: [PATCH 1/3] IMP fastapi_user_manager: add abstract method to create user --- fastapi_user_manager/routers/user.py | 31 +++++++++++++++------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/fastapi_user_manager/routers/user.py b/fastapi_user_manager/routers/user.py index f4951ac10..35ebd3cd1 100644 --- a/fastapi_user_manager/routers/user.py +++ b/fastapi_user_manager/routers/user.py @@ -16,6 +16,16 @@ user_router = APIRouter(tags=["user"]) +def create_user(env, data): + vals = { + "name": data.name, + "login": data.email, + "phone": data.phone, + "mobile": data.mobile, + } + return env["res.users"].create(vals) + + @user_router.post("/user") def update_user_data( data: UserSc, @@ -26,19 +36,18 @@ def update_user_data( """ update user personal data of authenticated user """ + ##### /!\ Doit on chercher l'utilisateur via le nom et l'email + ##### ou via le mail seulement ? + ##### il me semble que cela est spécifique au projet + ##### je pense qu'il vaudrait mieux faire une methode spécifique + ##### de recherche à surchager dans le projet user = env["res.users"].search( [("name", "=", data.name), ("email", "=", data.email)] ) if user: return UserSc.from_res_user(user) else: - vals = { - "name": data.name, - "login": data.email, - "phone": data.phone, - "mobile": data.mobile, - } - user = env["res.users"].create(vals) + user = create_user(env, data) return UserSc.from_res_user(user) # helper = env["api.user.router"].new() # user = helper.create(data) @@ -82,13 +91,7 @@ def _create_user(self, data: UserSc) -> ResUsers: if user: return user else: - vals = { - "name": data.name, - "email": data.email, - "phone": data.phone, - "mobile": data.mobile, - } - user = self.env["res.users"].create(vals) + user = create_user(self.env, data) return user # def _get_user_values(self, data: CustomerUpdate) -> dict: From 3742d19d6356b4b097e32d5a2ff702a979a563e9 Mon Sep 17 00:00:00 2001 From: David Beal Date: Thu, 9 Oct 2025 12:26:11 +0200 Subject: [PATCH 2/3] add _post_process_user_creation method --- fastapi_user_manager/data/endpoint.xml | 2 +- fastapi_user_manager/routers/user.py | 8 +++++++- fastapi_user_manager/schemas/schemas.py | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/fastapi_user_manager/data/endpoint.xml b/fastapi_user_manager/data/endpoint.xml index 7d903e900..5d20d0387 100644 --- a/fastapi_user_manager/data/endpoint.xml +++ b/fastapi_user_manager/data/endpoint.xml @@ -1,4 +1,4 @@ - + User Manager user_manager diff --git a/fastapi_user_manager/routers/user.py b/fastapi_user_manager/routers/user.py index 35ebd3cd1..61e48a79d 100644 --- a/fastapi_user_manager/routers/user.py +++ b/fastapi_user_manager/routers/user.py @@ -23,7 +23,9 @@ def create_user(env, data): "phone": data.phone, "mobile": data.mobile, } - return env["res.users"].create(vals) + user = env["res.users"].create(vals) + env["api.user.router"]._post_process_user_creation(user, data.misc) + return user @user_router.post("/user") @@ -94,6 +96,10 @@ def _create_user(self, data: UserSc) -> ResUsers: user = create_user(self.env, data) return user + def _post_process_user_creation(self, user, misc): + """inherit it to adapt to your needs""" + pass + # def _get_user_values(self, data: CustomerUpdate) -> dict: # values = data.to_user_vals() # lang_id = data.lang_id diff --git a/fastapi_user_manager/schemas/schemas.py b/fastapi_user_manager/schemas/schemas.py index 6676a6d0d..c4ccb542a 100644 --- a/fastapi_user_manager/schemas/schemas.py +++ b/fastapi_user_manager/schemas/schemas.py @@ -10,6 +10,7 @@ class UserScUpdate(StrictExtendableBaseModel, extra="ignore"): mobile: str | None = None opt_in: bool | None = None lang_id: int | None = None + misc: str | None = None def to_user_vals(self) -> dict: fields = self._get_user_update_fields() @@ -22,6 +23,7 @@ def _get_user_update_fields(self): "name", "phone", "mobile", + "misc", ] @@ -34,6 +36,7 @@ class UserSc(StrictExtendableBaseModel): name: str | None = None phone: str | None = None mobile: str | None = None + misc: str | None = None @classmethod def from_res_user(cls, odoo_rec): @@ -42,4 +45,5 @@ def from_res_user(cls, odoo_rec): name=odoo_rec.name or None, phone=odoo_rec.phone or None, mobile=odoo_rec.mobile or None, + misc=odoo_rec.misc or None, ) From d6ae616dc5578017feb6b4d2014cbcd9a322fc3b Mon Sep 17 00:00:00 2001 From: David Beal Date: Thu, 9 Oct 2025 14:58:47 +0200 Subject: [PATCH 3/3] fixup --- fastapi_user_manager/schemas/schemas.py | 1 - 1 file changed, 1 deletion(-) diff --git a/fastapi_user_manager/schemas/schemas.py b/fastapi_user_manager/schemas/schemas.py index c4ccb542a..95db99f82 100644 --- a/fastapi_user_manager/schemas/schemas.py +++ b/fastapi_user_manager/schemas/schemas.py @@ -45,5 +45,4 @@ def from_res_user(cls, odoo_rec): name=odoo_rec.name or None, phone=odoo_rec.phone or None, mobile=odoo_rec.mobile or None, - misc=odoo_rec.misc or None, )