Skip to content

Commit 36f87be

Browse files
committed
Customize documentation endpoint descriptions
1 parent 4e34a0f commit 36f87be

3 files changed

Lines changed: 86 additions & 134 deletions

File tree

sasdata/fair_database/data/views.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from rest_framework.response import Response
1414
from rest_framework import status
1515
from rest_framework.views import APIView
16+
from drf_spectacular.utils import extend_schema
1617

1718
from sasdata.dataloader.loader import Loader
1819
from 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

Comments
 (0)