Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fastapi_user_manager/data/endpoint.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<odoo>
<odoo noupdate="1">
<record id="user_manager_endpoint" model="fastapi.endpoint">
<field name="name">User Manager</field>
<field name="app">user_manager</field>
Expand Down
37 changes: 23 additions & 14 deletions fastapi_user_manager/routers/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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)
Expand Down Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions fastapi_user_manager/schemas/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -22,6 +23,7 @@ def _get_user_update_fields(self):
"name",
"phone",
"mobile",
"misc",
]


Expand All @@ -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):
Expand Down
Loading