Skip to content

views

This module contains the views of the files package.

Classes
  • FilesAPI: A class that handles the files endpoints
  • FileAPI: A class that handle the file details

FileDetailAPI

Bases: views.APIView

View for fetching and deleting individual files.

Attributes:

Name Type Description
`authentication_classes`

List of authentication classes. Default is JWTAuthentication.

Methods
  • get(request): Handles GET requests to get a file.
  • delete(request): Handles DELETE requests to delete a file.
Source code in backend/api/files/views.py
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
class FileDetailAPI(views.APIView):
    """View for fetching and deleting individual files.

    Attributes:
        `authentication_classes`: List of authentication classes. Default is JWTAuthentication.

    Methods:
        - `get(request)`: Handles GET requests to get a file.
        - `delete(request)`: Handles DELETE requests to delete a file.
    """

    authentication_classes = [JWTAuthentication]

    def get(self, request: Request, file_id: str) -> Response:
        """Get the details of a file.

        Args:
            request: The HTTP request object.
            file_id: The ID of the file to fetch.

        Returns:
            The response containing the file details.
        """
        if not request.user:
            return Response({
                "status": status.HTTP_401_UNAUTHORIZED,
                "message": "Access denied!",
            })

        file = request.user.files.filter(file_id=file_id).first()

        if not file:
            return Response({
                "status": status.HTTP_404_NOT_FOUND,
                "message": "File not found",
            })

        return Response({
            "status": status.HTTP_200_OK,
            "message": "File fetched successfully",
            "file": FileSerializer(file, context={"request": request}).data,
        })

    def delete(self, request: Request, file_id: str) -> Response:
        """Delete a file.

        Args:
            request: HTTP request
            file_id: The ID of the file to delete.

        Returns:
            The response indicating whether the file was successfully deleted.
        """
        if not request.user:
            return Response({
                "status": status.HTTP_401_UNAUTHORIZED,
                "message": "Access denied!",
            })

        file = request.user.files.filter(file_id=file_id).first()

        if not file:
            return Response({
                "status": status.HTTP_404_NOT_FOUND,
                "message": "File not found",
            })

        file.delete()

        return Response({
            "status": status.HTTP_200_OK,
            "message": "File deleted successfully",
        })

delete(request, file_id)

Delete a file.

Parameters:

Name Type Description Default
request Request

HTTP request

required
file_id str

The ID of the file to delete.

required

Returns:

Type Description
Response

The response indicating whether the file was successfully deleted.

Source code in backend/api/files/views.py
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
def delete(self, request: Request, file_id: str) -> Response:
    """Delete a file.

    Args:
        request: HTTP request
        file_id: The ID of the file to delete.

    Returns:
        The response indicating whether the file was successfully deleted.
    """
    if not request.user:
        return Response({
            "status": status.HTTP_401_UNAUTHORIZED,
            "message": "Access denied!",
        })

    file = request.user.files.filter(file_id=file_id).first()

    if not file:
        return Response({
            "status": status.HTTP_404_NOT_FOUND,
            "message": "File not found",
        })

    file.delete()

    return Response({
        "status": status.HTTP_200_OK,
        "message": "File deleted successfully",
    })

get(request, file_id)

Get the details of a file.

Parameters:

Name Type Description Default
request Request

The HTTP request object.

required
file_id str

The ID of the file to fetch.

required

Returns:

Type Description
Response

The response containing the file details.

Source code in backend/api/files/views.py
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
def get(self, request: Request, file_id: str) -> Response:
    """Get the details of a file.

    Args:
        request: The HTTP request object.
        file_id: The ID of the file to fetch.

    Returns:
        The response containing the file details.
    """
    if not request.user:
        return Response({
            "status": status.HTTP_401_UNAUTHORIZED,
            "message": "Access denied!",
        })

    file = request.user.files.filter(file_id=file_id).first()

    if not file:
        return Response({
            "status": status.HTTP_404_NOT_FOUND,
            "message": "File not found",
        })

    return Response({
        "status": status.HTTP_200_OK,
        "message": "File fetched successfully",
        "file": FileSerializer(file, context={"request": request}).data,
    })

FileListAPI

Bases: views.APIView

API endpoint for managing files.

Attributes:

Name Type Description
`authentication_classes`

List of authentication classes. Default is JWTAuthentication.

Methods
  • get(request): Handles GET requests to get list of files.
  • delete(request): Handles DELETE requests to delete all files.
Source code in backend/api/files/views.py
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
class FileListAPI(views.APIView):
    """API endpoint for managing files.

    Attributes:
        `authentication_classes`: List of authentication classes. Default is JWTAuthentication.

    Methods:
        - `get(request)`: Handles GET requests to get list of files.
        - `delete(request)`: Handles DELETE requests to delete all files.
    """

    authentication_classes = [JWTAuthentication]

    def get(self, request: Request) -> Response:
        """Retrieve a list of all files.

        Args:
            request: HTTP request object.

        Returns:
            HTTP response containing a list of all files.
        """
        if not request.user:
            return Response({
                "status": status.HTTP_401_UNAUTHORIZED,
                "message": "Access denied!",
            })

        files = request.user.files.all()

        return Response({
            "status": status.HTTP_200_OK,
            "message": "Files fetched successfully",
            "file": FileSerializer(files, many=True, context={"request": request}).data,
        })

    def delete(self, request: Request) -> Response:
        """Delete all files.

        Args:
            request: HTTP request object.

        Returns:
            HTTP response with message ans status code.
        """
        if not request.user:
            return Response({
                "status": status.HTTP_401_UNAUTHORIZED,
                "message": "Access denied!",
            })

        request.user.files.all().delete()

        return Response({
            "status": status.HTTP_200_OK,
            "message": "All files deleted successfully",
        })

delete(request)

Delete all files.

Parameters:

Name Type Description Default
request Request

HTTP request object.

required

Returns:

Type Description
Response

HTTP response with message ans status code.

Source code in backend/api/files/views.py
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
def delete(self, request: Request) -> Response:
    """Delete all files.

    Args:
        request: HTTP request object.

    Returns:
        HTTP response with message ans status code.
    """
    if not request.user:
        return Response({
            "status": status.HTTP_401_UNAUTHORIZED,
            "message": "Access denied!",
        })

    request.user.files.all().delete()

    return Response({
        "status": status.HTTP_200_OK,
        "message": "All files deleted successfully",
    })

get(request)

Retrieve a list of all files.

Parameters:

Name Type Description Default
request Request

HTTP request object.

required

Returns:

Type Description
Response

HTTP response containing a list of all files.

Source code in backend/api/files/views.py
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def get(self, request: Request) -> Response:
    """Retrieve a list of all files.

    Args:
        request: HTTP request object.

    Returns:
        HTTP response containing a list of all files.
    """
    if not request.user:
        return Response({
            "status": status.HTTP_401_UNAUTHORIZED,
            "message": "Access denied!",
        })

    files = request.user.files.all()

    return Response({
        "status": status.HTTP_200_OK,
        "message": "Files fetched successfully",
        "file": FileSerializer(files, many=True, context={"request": request}).data,
    })