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 f4951ac10..61e48a79d 100644 --- a/fastapi_user_manager/routers/user.py +++ b/fastapi_user_manager/routers/user.py @@ -16,6 +16,18 @@ user_router = APIRouter(tags=["user"]) +def create_user(env, data): + vals = { + "name": data.name, + "login": data.email, + "phone": data.phone, + "mobile": data.mobile, + } + user = env["res.users"].create(vals) + env["api.user.router"]._post_process_user_creation(user, data.misc) + return user + + @user_router.post("/user") def update_user_data( data: UserSc, @@ -26,19 +38,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,15 +93,13 @@ 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 _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..95db99f82 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):