Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
4 changes: 4 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 All @@ -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,
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pas du tout sur cela

)
Loading