1313from rest_framework .response import Response
1414from rest_framework import status
1515from rest_framework .views import APIView
16+ from drf_spectacular .utils import extend_schema
1617
1718from sasdata .dataloader .loader import Loader
1819from data .serializers import (
@@ -37,6 +38,9 @@ class DataFileView(APIView):
3738 """
3839
3940 # List of datafiles
41+ @extend_schema (
42+ description = "Retrieve a list of accessible data files by id and filename."
43+ )
4044 def get (self , request , version = None ):
4145 if "username" in request .GET :
4246 search_user = get_object_or_404 (User , username = request .GET ["username" ])
@@ -54,6 +58,7 @@ def get(self, request, version=None):
5458 return Response (data_list )
5559
5660 # Create a datafile
61+ @extend_schema (description = "Upload a data file." )
5762 def post (self , request , version = None ):
5863 form = DataFileForm (request .data , request .FILES )
5964 if form .is_valid ():
@@ -83,6 +88,7 @@ def post(self, request, version=None):
8388 return Response (return_data , status = status .HTTP_201_CREATED )
8489
8590 # Create a datafile
91+ @extend_schema (description = "Upload a data file." )
8692 def put (self , request , version = None ):
8793 return self .post (request , version )
8894
@@ -95,6 +101,9 @@ class SingleDataFileView(APIView):
95101 """
96102
97103 # Load the contents of a datafile or download the file to a device
104+ @extend_schema (
105+ description = "Retrieve the contents of a data file or download a file."
106+ )
98107 def get (self , request , data_id , version = None ):
99108 data = get_object_or_404 (DataFile , id = data_id )
100109 if "download" in request .GET and request .GET ["download" ]:
@@ -123,6 +132,7 @@ def get(self, request, data_id, version=None):
123132 return Response (return_data )
124133
125134 # Modify a datafile
135+ @extend_schema (description = "Make changes to a data file that you own." )
126136 def put (self , request , data_id , version = None ):
127137 db = get_object_or_404 (DataFile , id = data_id )
128138 if not permissions .check_permissions (request , db ):
@@ -153,6 +163,7 @@ def put(self, request, data_id, version=None):
153163 return Response (return_data )
154164
155165 # Delete a datafile
166+ @extend_schema (description = "Delete a data file that you own." )
156167 def delete (self , request , data_id , version = None ):
157168 db = get_object_or_404 (DataFile , id = data_id )
158169 if not permissions .is_owner (request , db ):
@@ -172,6 +183,10 @@ class DataFileUsersView(APIView):
172183 """
173184
174185 # View users with access to a datafile
186+ @extend_schema (
187+ description = "Retrieve a list of users that have been granted access to"
188+ " a data file and the file's publicity status."
189+ )
175190 def get (self , request , data_id , version = None ):
176191 db = get_object_or_404 (DataFile , id = data_id )
177192 if not permissions .is_owner (request , db ):
@@ -189,6 +204,7 @@ def get(self, request, data_id, version=None):
189204 return Response (response_data )
190205
191206 # Grant or revoke access to a datafile
207+ @extend_schema (description = "Grant or revoke a user's access to a data file." )
192208 def put (self , request , data_id , version = None ):
193209 db = get_object_or_404 (DataFile , id = data_id )
194210 if not permissions .is_owner (request , db ):
@@ -223,6 +239,7 @@ class DataSetView(APIView):
223239 permission_classes = [DataPermission ]
224240
225241 # get a list of accessible datasets
242+ @extend_schema (description = "Retrieve a list of accessible datasets by id and name." )
226243 def get (self , request , version = None ):
227244 data_list = {"dataset_ids" : {}}
228245 data = DataSet .objects .all ()
@@ -236,6 +253,7 @@ def get(self, request, version=None):
236253
237254 # TODO: enable uploading files as part of dataset creation, not just associating dataset with existing files
238255 # create a dataset
256+ @extend_schema (description = "Upload a dataset." )
239257 def post (self , request , version = None ):
240258 # TODO: revisit request data format
241259 if isinstance (request .data , str ):
@@ -259,6 +277,7 @@ def post(self, request, version=None):
259277 return Response (data = response , status = status .HTTP_201_CREATED )
260278
261279 # create a dataset
280+ @extend_schema (description = "Upload a dataset." )
262281 def put (self , request , version = None ):
263282 return self .post (request , version )
264283
@@ -274,6 +293,7 @@ class SingleDataSetView(APIView):
274293 permission_classes = [DataPermission ]
275294
276295 # get a specific dataset
296+ @extend_schema (description = "Retrieve a dataset." )
277297 def get (self , request , data_id , version = None ):
278298 db = get_object_or_404 (DataSet , id = data_id )
279299 if not permissions .check_permissions (request , db ):
@@ -289,6 +309,7 @@ def get(self, request, data_id, version=None):
289309 return Response (response_data )
290310
291311 # edit a specific dataset
312+ @extend_schema (description = "Make changes to a dataset that you own." )
292313 def put (self , request , data_id , version = None ):
293314 db = get_object_or_404 (DataSet , id = data_id )
294315 if not permissions .check_permissions (request , db ):
@@ -316,6 +337,7 @@ def put(self, request, data_id, version=None):
316337 return Response (data )
317338
318339 # delete a dataset
340+ @extend_schema (description = "Delete a dataset that you own." )
319341 def delete (self , request , data_id , version = None ):
320342 db = get_object_or_404 (DataSet , id = data_id )
321343 if not permissions .check_permissions (request , db ):
@@ -339,6 +361,10 @@ class DataSetUsersView(APIView):
339361 permission_classes = [DataPermission ]
340362
341363 # get a list of users with access to dataset data_id
364+ @extend_schema (
365+ description = "Retrieve a list of users that have been granted access to"
366+ " a dataset and the dataset's publicity status."
367+ )
342368 def get (self , request , data_id , version = None ):
343369 db = get_object_or_404 (DataSet , id = data_id )
344370 if not permissions .is_owner (request , db ):
@@ -354,6 +380,7 @@ def get(self, request, data_id, version=None):
354380 return Response (response_data )
355381
356382 # grant or revoke a user's access to dataset data_id
383+ @extend_schema (description = "Grant or revoke a user's access to a dataset." )
357384 def put (self , request , data_id , version = None ):
358385 db = get_object_or_404 (DataSet , id = data_id )
359386 if not permissions .is_owner (request , db ):
@@ -386,6 +413,9 @@ class SessionView(APIView):
386413 """
387414
388415 # View a list of accessible sessions
416+ @extend_schema (
417+ description = "Retrieve a list of accessible sessions by name and title."
418+ )
389419 def get (self , request , version = None ):
390420 session_list = {"session_ids" : {}}
391421 sessions = Session .objects .all ()
@@ -399,6 +429,7 @@ def get(self, request, version=None):
399429
400430 # Create a session
401431 # TODO: revisit response data
432+ @extend_schema (description = "Upload a session." )
402433 def post (self , request , version = None ):
403434 if isinstance (request .data , str ):
404435 serializer = SessionSerializer (
@@ -421,6 +452,7 @@ def post(self, request, version=None):
421452 return Response (data = response , status = status .HTTP_201_CREATED )
422453
423454 # Create a session
455+ @extend_schema (description = "Upload a session." )
424456 def put (self , request , version = None ):
425457 return self .post (request , version )
426458
@@ -433,6 +465,7 @@ class SingleSessionView(APIView):
433465 """
434466
435467 # get a specific session
468+ @extend_schema (description = "Retrieve a session." )
436469 def get (self , request , data_id , version = None ):
437470 db = get_object_or_404 (Session , id = data_id )
438471 if not permissions .check_permissions (request , db ):
@@ -448,6 +481,7 @@ def get(self, request, data_id, version=None):
448481 return Response (response_data )
449482
450483 # modify a session
484+ @extend_schema (description = "Make changes to a session that you own." )
451485 def put (self , request , data_id , version = None ):
452486 db = get_object_or_404 (Session , id = data_id )
453487 if not permissions .check_permissions (request , db ):
@@ -465,6 +499,7 @@ def put(self, request, data_id, version=None):
465499 return Response (data )
466500
467501 # delete a session
502+ @extend_schema (description = "Delete a session that you own." )
468503 def delete (self , request , data_id , version = None ):
469504 db = get_object_or_404 (Session , id = data_id )
470505 if not permissions .check_permissions (request , db ):
@@ -486,6 +521,10 @@ class SessionUsersView(APIView):
486521 """
487522
488523 # view the users that have access to a specific session
524+ @extend_schema (
525+ description = "Retrieve a list of users that have been granted access to"
526+ " a session and the session's publicity status."
527+ )
489528 def get (self , request , data_id , version = None ):
490529 db = get_object_or_404 (Session , id = data_id )
491530 if not permissions .is_owner (request , db ):
@@ -501,6 +540,7 @@ def get(self, request, data_id, version=None):
501540 return Response (response_data )
502541
503542 # grant or revoke access to a session
543+ @extend_schema (description = "Grant or revoke a user's access to a data file." )
504544 def put (self , request , data_id , version = None ):
505545 db = get_object_or_404 (Session , id = data_id )
506546 if not permissions .is_owner (request , db ):
@@ -538,6 +578,9 @@ class PublishedStateView(APIView):
538578 """
539579
540580 # View a list of accessible sessions' published states
581+ @extend_schema (
582+ description = "Retrieve a list of published states of accessible sessions."
583+ )
541584 def get (self , request , version = None ):
542585 ps_list = {"published_state_ids" : {}}
543586 published_states = PublishedState .objects .all ()
@@ -554,6 +597,7 @@ def get(self, request, version=None):
554597 return Response (data = ps_list )
555598
556599 # Create a published state for an existing session
600+ @extend_schema (description = "Create a published state for an existing session." )
557601 def post (self , request , version = None ):
558602 if isinstance (request .data , str ):
559603 serializer = PublishedStateSerializer (
@@ -587,6 +631,7 @@ def post(self, request, version=None):
587631 return Response (data = response , status = status .HTTP_201_CREATED )
588632
589633 # Create a published state for an existing session
634+ @extend_schema (description = "Create a published state for an existing session." )
590635 def put (self , request , version = None ):
591636 return self .post (request , version )
592637
@@ -599,6 +644,7 @@ class SinglePublishedStateView(APIView):
599644 """
600645
601646 # View a specific published state
647+ @extend_schema (description = "Retrieve a published state." )
602648 def get (self , request , ps_id , version = None ):
603649 db = get_object_or_404 (PublishedState , id = ps_id )
604650 if not permissions .check_permissions (request , db .session ):
@@ -620,6 +666,9 @@ def get(self, request, ps_id, version=None):
620666 return Response (response_data )
621667
622668 # Modify a published state
669+ @extend_schema (
670+ description = "Make changes to the published state of a session that you own."
671+ )
623672 def put (self , request , ps_id , version = None ):
624673 db = get_object_or_404 (PublishedState , id = ps_id )
625674 if not permissions .check_permissions (request , db .session ):
@@ -645,6 +694,7 @@ def put(self, request, ps_id, version=None):
645694 return Response (data )
646695
647696 # Delete a published state
697+ @extend_schema (description = "Delete the published state of a session that you own." )
648698 def delete (self , request , ps_id , version = None ):
649699 db = get_object_or_404 (PublishedState , id = ps_id )
650700 if not permissions .check_permissions (request , db .session ):
0 commit comments