selfprivacy-rest-api/selfprivacy_api/graphql/mutations/users_mutations.py

66 lines
1.8 KiB
Python
Raw Normal View History

2022-07-21 00:23:59 +03:00
#!/usr/bin/env python3
"""Users management module"""
# pylint: disable=too-few-public-methods
import strawberry
from selfprivacy_api.graphql import IsAuthenticated
2022-07-25 02:59:43 +03:00
from selfprivacy_api.graphql.common_types.user import (
UserMutationReturn,
get_user_by_username,
)
2022-07-21 00:23:59 +03:00
from selfprivacy_api.graphql.mutations.mutation_interface import (
2022-07-26 19:44:59 +03:00
GenericMutationReturn,
2022-07-21 00:23:59 +03:00
)
2022-07-31 00:02:19 +03:00
from selfprivacy_api.graphql.mutations.users_utils import (
2022-07-31 22:06:48 +03:00
create_user,
delete_user,
update_user,
)
2022-07-21 00:23:59 +03:00
2022-07-22 13:36:11 +03:00
2022-07-21 00:23:59 +03:00
@strawberry.input
2022-07-25 20:30:54 +03:00
class UserMutationInput:
2022-07-21 00:23:59 +03:00
"""Input type for user mutation"""
username: str
password: str
@strawberry.type
class UserMutations:
"""Mutations change user settings"""
@strawberry.mutation(permission_classes=[IsAuthenticated])
2022-07-25 20:30:54 +03:00
def create_user(self, user: UserMutationInput) -> UserMutationReturn:
2022-07-22 13:33:32 +03:00
2022-07-31 22:06:48 +03:00
success, message, code = create_user(user.username, user.password)
2022-07-26 19:44:59 +03:00
2022-07-21 00:23:59 +03:00
return UserMutationReturn(
2022-07-31 00:02:19 +03:00
success=success,
message=message,
code=code,
user=get_user_by_username(user.username),
2022-07-21 00:23:59 +03:00
)
@strawberry.mutation(permission_classes=[IsAuthenticated])
2022-07-26 19:44:59 +03:00
def delete_user(self, username: str) -> GenericMutationReturn:
2022-07-31 22:06:48 +03:00
success, message, code = delete_user(username)
2022-07-21 00:23:59 +03:00
2022-07-26 19:44:59 +03:00
return GenericMutationReturn(
2022-07-31 00:02:19 +03:00
success=success,
message=message,
code=code,
2022-07-21 00:23:59 +03:00
)
@strawberry.mutation(permission_classes=[IsAuthenticated])
2022-07-25 20:30:54 +03:00
def update_user(self, user: UserMutationInput) -> UserMutationReturn:
2022-07-21 00:23:59 +03:00
"""Update user mutation"""
2022-07-31 22:06:48 +03:00
success, message, code = update_user(user.username, user.password)
2022-07-21 00:23:59 +03:00
return UserMutationReturn(
2022-07-31 00:02:19 +03:00
success=success,
message=message,
code=code,
user=get_user_by_username(user.username),
2022-07-21 00:23:59 +03:00
)