Skip to content

fl_server_api.views.user

Classes:

Name Description
User

User model ViewSet.

Attributes

Classes

User

Bases: ViewSet


              flowchart TD
              fl_server_api.views.user.User[User]
              fl_server_api.views.base.ViewSet[ViewSet]

                              fl_server_api.views.base.ViewSet --> fl_server_api.views.user.User
                


              click fl_server_api.views.user.User href "" "fl_server_api.views.user.User"
              click fl_server_api.views.base.ViewSet href "" "fl_server_api.views.base.ViewSet"
            

User model ViewSet.

Methods:

Name Description
create_user

Create a new user.

get_myself

Get current user.

get_user

Get user information.

get_user_groups

Get user groups.

get_user_trainings

Get user trainings.

get_users

Get all registered users as list.

Attributes:

Name Type Description
serializer_class

The serializer for the ViewSet.

Source code in fl_server_api/views/user.py
class User(ViewSet):
    """
    User model ViewSet.
    """

    serializer_class = UserSerializer
    """The serializer for the ViewSet."""

    @extend_schema(
        responses={
            status.HTTP_200_OK: UserSerializer(many=True),
            status.HTTP_403_FORBIDDEN: error_response_403,
        }
    )
    def get_users(self, request: HttpRequest) -> HttpResponse:
        """
        Get all registered users as list.

        Args:
            request (HttpRequest):  request object

        Returns:
            HttpResponse: user list as json response
        """
        serializer = UserSerializer(UserModel.objects.all(), many=True)
        return Response(serializer.data)

    def get_myself(self, request: HttpRequest) -> HttpResponse:
        """
        Get current user.

        Args:
            request (HttpRequest):  request object

        Returns:
            HttpResponse: user data as json response
        """
        serializer = UserSerializer(request.user)
        return Response(serializer.data)

    @extend_schema(
        responses={
            status.HTTP_200_OK: UserSerializer,
            status.HTTP_400_BAD_REQUEST: ErrorSerializer,
            status.HTTP_403_FORBIDDEN: error_response_403,
        },
        examples=[
            OpenApiExample(
                name="Get user by id",
                description="Retrieve user data by user ID.",
                value="88a9f11a-846b-43b5-bd15-367fc332ba59",
                parameter_only=("id", OpenApiParameter.PATH)
            )
        ]
    )
    def get_user(self, request: HttpRequest, id: str) -> HttpResponse:
        """
        Get user information.

        Args:
            request (HttpRequest):  request object
            id (str):  user uuid

        Returns:
            HttpResponse: user as json response
        """
        serializer = UserSerializer(get_entity(UserModel, pk=id), context={"request_user_id": request.user.id})
        return Response(serializer.data)

    @decorators.authentication_classes([])
    @decorators.permission_classes([])
    @extend_schema(
        responses={
            status.HTTP_200_OK: UserSerializer,
            status.HTTP_400_BAD_REQUEST: ErrorSerializer,
        },
        examples=[
            OpenApiExample("Jane Doe", value={
                "message_endpoint": "http://example.com/",
                "actor": True,
                "client": True,
                "username": "jane",
                "first_name": "Jane",
                "last_name": "Doe",
                "email": "jane.doe@example.com",
                "password": "my-super-secret-password"
            })
        ]
    )
    def create_user(self, request: HttpRequest) -> HttpResponse:
        """
        Create a new user.

        Args:
            request (HttpRequest):  request object

        Returns:
            HttpResponse: new created user as json response
        """
        user = UserSerializer().create(request.data)
        serializer = UserSerializer(user, context={"request_user_id": user.id})
        return Response(serializer.data, status=status.HTTP_201_CREATED)

    @extend_schema(
        responses={
            status.HTTP_200_OK: GroupSerializer,
            status.HTTP_400_BAD_REQUEST: ErrorSerializer,
            status.HTTP_403_FORBIDDEN: error_response_403,
        },
        examples=[
            OpenApiExample(
                name="User uuid",
                value="88a9f11a-846b-43b5-bd15-367fc332ba59",
                parameter_only=("id", OpenApiParameter.PATH)
            )
        ]
    )
    def get_user_groups(self, request: HttpRequest) -> HttpResponse:
        """
        Get user groups.

        Args:
            request (HttpRequest):  request object
            id (str):  user uuid

        Returns:
            HttpResponse: user groups as json response
        """
        serializer = GroupSerializer(request.user.groups, many=True)
        return Response(serializer.data)

    @extend_schema(
        responses={
            status.HTTP_200_OK: TrainingSerializer,
            status.HTTP_400_BAD_REQUEST: ErrorSerializer,
            status.HTTP_403_FORBIDDEN: error_response_403,
        }
    )
    def get_user_trainings(self, request: HttpRequest) -> HttpResponse:
        """
        Get user trainings.

        Args:
            request (HttpRequest):  request object

        Returns:
            HttpResponse: user trainings as json response
        """
        trainings = TrainingModel.objects.filter(Q(actor=request.user) | Q(participants=request.user)).distinct()
        serializer = TrainingSerializer(trainings, many=True)
        return Response(serializer.data)

Attributes

serializer_class class-attribute instance-attribute
serializer_class = UserSerializer

The serializer for the ViewSet.

Functions

create_user
create_user(request: HttpRequest) -> HttpResponse

Create a new user.

Parameters:

Name Type Description Default
request
HttpRequest

request object

required

Returns:

Name Type Description
HttpResponse HttpResponse

new created user as json response

Source code in fl_server_api/views/user.py
@decorators.authentication_classes([])
@decorators.permission_classes([])
@extend_schema(
    responses={
        status.HTTP_200_OK: UserSerializer,
        status.HTTP_400_BAD_REQUEST: ErrorSerializer,
    },
    examples=[
        OpenApiExample("Jane Doe", value={
            "message_endpoint": "http://example.com/",
            "actor": True,
            "client": True,
            "username": "jane",
            "first_name": "Jane",
            "last_name": "Doe",
            "email": "jane.doe@example.com",
            "password": "my-super-secret-password"
        })
    ]
)
def create_user(self, request: HttpRequest) -> HttpResponse:
    """
    Create a new user.

    Args:
        request (HttpRequest):  request object

    Returns:
        HttpResponse: new created user as json response
    """
    user = UserSerializer().create(request.data)
    serializer = UserSerializer(user, context={"request_user_id": user.id})
    return Response(serializer.data, status=status.HTTP_201_CREATED)
get_myself
get_myself(request: HttpRequest) -> HttpResponse

Get current user.

Parameters:

Name Type Description Default
request
HttpRequest

request object

required

Returns:

Name Type Description
HttpResponse HttpResponse

user data as json response

Source code in fl_server_api/views/user.py
def get_myself(self, request: HttpRequest) -> HttpResponse:
    """
    Get current user.

    Args:
        request (HttpRequest):  request object

    Returns:
        HttpResponse: user data as json response
    """
    serializer = UserSerializer(request.user)
    return Response(serializer.data)
get_user
get_user(request: HttpRequest, id: str) -> HttpResponse

Get user information.

Parameters:

Name Type Description Default
request
HttpRequest

request object

required
id
str

user uuid

required

Returns:

Name Type Description
HttpResponse HttpResponse

user as json response

Source code in fl_server_api/views/user.py
@extend_schema(
    responses={
        status.HTTP_200_OK: UserSerializer,
        status.HTTP_400_BAD_REQUEST: ErrorSerializer,
        status.HTTP_403_FORBIDDEN: error_response_403,
    },
    examples=[
        OpenApiExample(
            name="Get user by id",
            description="Retrieve user data by user ID.",
            value="88a9f11a-846b-43b5-bd15-367fc332ba59",
            parameter_only=("id", OpenApiParameter.PATH)
        )
    ]
)
def get_user(self, request: HttpRequest, id: str) -> HttpResponse:
    """
    Get user information.

    Args:
        request (HttpRequest):  request object
        id (str):  user uuid

    Returns:
        HttpResponse: user as json response
    """
    serializer = UserSerializer(get_entity(UserModel, pk=id), context={"request_user_id": request.user.id})
    return Response(serializer.data)
get_user_groups
get_user_groups(request: HttpRequest) -> HttpResponse

Get user groups.

Parameters:

Name Type Description Default
request
HttpRequest

request object

required
id
str

user uuid

required

Returns:

Name Type Description
HttpResponse HttpResponse

user groups as json response

Source code in fl_server_api/views/user.py
@extend_schema(
    responses={
        status.HTTP_200_OK: GroupSerializer,
        status.HTTP_400_BAD_REQUEST: ErrorSerializer,
        status.HTTP_403_FORBIDDEN: error_response_403,
    },
    examples=[
        OpenApiExample(
            name="User uuid",
            value="88a9f11a-846b-43b5-bd15-367fc332ba59",
            parameter_only=("id", OpenApiParameter.PATH)
        )
    ]
)
def get_user_groups(self, request: HttpRequest) -> HttpResponse:
    """
    Get user groups.

    Args:
        request (HttpRequest):  request object
        id (str):  user uuid

    Returns:
        HttpResponse: user groups as json response
    """
    serializer = GroupSerializer(request.user.groups, many=True)
    return Response(serializer.data)
get_user_trainings
get_user_trainings(request: HttpRequest) -> HttpResponse

Get user trainings.

Parameters:

Name Type Description Default
request
HttpRequest

request object

required

Returns:

Name Type Description
HttpResponse HttpResponse

user trainings as json response

Source code in fl_server_api/views/user.py
@extend_schema(
    responses={
        status.HTTP_200_OK: TrainingSerializer,
        status.HTTP_400_BAD_REQUEST: ErrorSerializer,
        status.HTTP_403_FORBIDDEN: error_response_403,
    }
)
def get_user_trainings(self, request: HttpRequest) -> HttpResponse:
    """
    Get user trainings.

    Args:
        request (HttpRequest):  request object

    Returns:
        HttpResponse: user trainings as json response
    """
    trainings = TrainingModel.objects.filter(Q(actor=request.user) | Q(participants=request.user)).distinct()
    serializer = TrainingSerializer(trainings, many=True)
    return Response(serializer.data)
get_users
get_users(request: HttpRequest) -> HttpResponse

Get all registered users as list.

Parameters:

Name Type Description Default
request
HttpRequest

request object

required

Returns:

Name Type Description
HttpResponse HttpResponse

user list as json response

Source code in fl_server_api/views/user.py
@extend_schema(
    responses={
        status.HTTP_200_OK: UserSerializer(many=True),
        status.HTTP_403_FORBIDDEN: error_response_403,
    }
)
def get_users(self, request: HttpRequest) -> HttpResponse:
    """
    Get all registered users as list.

    Args:
        request (HttpRequest):  request object

    Returns:
        HttpResponse: user list as json response
    """
    serializer = UserSerializer(UserModel.objects.all(), many=True)
    return Response(serializer.data)

Functions