mirror of
https://github.com/flibusta-apps/users_settings_server.git
synced 2025-12-06 14:45:38 +01:00
Fix user creating
This commit is contained in:
@@ -11,15 +11,16 @@ class LanguageDetail(CreateLanguage):
|
|||||||
|
|
||||||
|
|
||||||
class UserBase(BaseModel):
|
class UserBase(BaseModel):
|
||||||
user_id: int
|
|
||||||
last_name: constr(max_length=64) # type: ignore
|
last_name: constr(max_length=64) # type: ignore
|
||||||
first_name: constr(max_length=64) # type: ignore
|
first_name: constr(max_length=64) # type: ignore
|
||||||
username: constr(max_length=32) # type: ignore
|
username: constr(max_length=32) # type: ignore
|
||||||
|
source: constr(max_length=32) # type: ignore
|
||||||
|
|
||||||
|
|
||||||
class UserCreateOrUpdate(BaseModel):
|
class UserCreateOrUpdate(UserBase):
|
||||||
allowed_langs: list[str]
|
allowed_langs: list[str]
|
||||||
|
|
||||||
|
|
||||||
class UserDetail(UserCreateOrUpdate):
|
class UserDetail(BaseModel):
|
||||||
|
user_id: int
|
||||||
allowed_langs: list[LanguageDetail]
|
allowed_langs: list[LanguageDetail]
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ async def get_user(user_id: int):
|
|||||||
|
|
||||||
|
|
||||||
@users_router.post("/{user_id}", response_model=UserDetail)
|
@users_router.post("/{user_id}", response_model=UserDetail)
|
||||||
async def get_or_update_user(user_id: int, data: UserCreateOrUpdate):
|
async def create_or_update_user(user_id: int, data: UserCreateOrUpdate):
|
||||||
data_dict = data.dict()
|
data_dict = data.dict()
|
||||||
|
|
||||||
user_data = await User.objects.select_related("allowed_langs").get_or_none(user_id=user_id)
|
user_data = await User.objects.select_related("allowed_langs").get_or_none(user_id=user_id)
|
||||||
@@ -42,17 +42,19 @@ async def get_or_update_user(user_id: int, data: UserCreateOrUpdate):
|
|||||||
allowed_langs = data_dict.pop("allowed_langs")
|
allowed_langs = data_dict.pop("allowed_langs")
|
||||||
|
|
||||||
if user_data is None:
|
if user_data is None:
|
||||||
return User.objects.create(**data.dict())
|
user_data = await User.objects.select_related("allowed_langs").create(**{**data_dict, "user_id": user_id})
|
||||||
else:
|
else:
|
||||||
user_data.update_from_dict(data.dict())
|
user_data.update_from_dict(data_dict)
|
||||||
|
|
||||||
user_data.allowed_langs.clear()
|
await user_data.allowed_langs.clear() # type: ignore
|
||||||
|
|
||||||
langs = await Language.objects.filter(code__in=allowed_langs).all()
|
langs = await Language.objects.filter(code__in=allowed_langs).all()
|
||||||
|
|
||||||
for lang in langs:
|
for lang in langs:
|
||||||
await user_data.allowed_langs.add(lang)
|
await user_data.allowed_langs.add(lang)
|
||||||
|
|
||||||
|
await user_data.update()
|
||||||
|
|
||||||
return user_data
|
return user_data
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user