77
88from django .views .generic import DetailView
99
10- from rest_framework import generics , parsers
10+ from rest_framework import generics , parsers , renderers
1111from rest_framework .response import Response
1212
1313from gsmap .models import Workspace , Snapshot , Annotation , Category , Attachement
1717
1818SECRET_KEY = os .getenv ('DJANGO_SECRET_KEY' ) or os .getenv ('DJANGO_SECRET_KEY_DEV' )
1919
20+ class StaffBrowsableMixin (object ):
21+ def get_renderers (self ):
22+ """
23+ Add Browsable API renderer if user is staff.
24+ """
25+ rends = self .renderer_classes
26+ if self .request .user and self .request .user .is_superuser :
27+ rends .append (renderers .BrowsableAPIRenderer )
28+ return [renderer () for renderer in rends ]
29+
2030class CustomLoginView (LoginView ):
2131 """
2232 Customized to include Workspace data in the request cookie
@@ -51,7 +61,7 @@ def logout(request):
5161 return response
5262
5363
54- class SnapshotFileUploadView (generics .UpdateAPIView ):
64+ class SnapshotFileUploadView (StaffBrowsableMixin , generics .UpdateAPIView ):
5565 permission_classes = [IsUser ,]
5666 queryset = Snapshot .objects .all ()
5767 serializer_class = SnapshotDataUploadSerializer
@@ -72,12 +82,12 @@ def update(self, request, *args, **kwargs):
7282
7383 return Response (serializer .data )
7484
75- class AnnotationCreateView (generics .CreateAPIView ):
85+ class AnnotationCreateView (StaffBrowsableMixin , generics .CreateAPIView ):
7686 queryset = Annotation .objects .all ()
7787 serializer_class = AnnotationSerializer
7888 http_method_names = ['post' ,]
7989
80- class AnnotationRateUpView (generics .UpdateAPIView ):
90+ class AnnotationRateUpView (StaffBrowsableMixin , generics .UpdateAPIView ):
8191 queryset = Annotation .objects .all ()
8292 serializer_class = AnnotationRateUpSerializer
8393 lookup_url_kwarg = 'annotation_id'
0 commit comments