initial attempt to use django restframework
[htsworkflow.git] / experiments / views.py
index 521e89f4852e9480376425382375dc844e375272..9b1c8a196e4f6171be1881c27b11c0ff8bed9b27 100644 (file)
@@ -16,10 +16,21 @@ from django.template import RequestContext
 from django.template.loader import get_template
 
 from .models import DataRun, DataFile, FlowCell, Lane, Sequencer
+from rest_framework import viewsets
+from rest_framework.response import Response
+from rest_framework.renderers import (TemplateHTMLRenderer,
+                                      JSONRenderer,
+                                      BrowsableAPIRenderer)
+
 from .admin import LaneOptions
 from .experiments import estimateFlowcellDuration, estimateFlowcellTimeRemaining, roundToDays, \
      getUsersForFlowcell, \
      makeEmailLaneMap
+from .serializers import (
+    ClusterStationSerializer,
+    SequencerSerializer,
+    LaneSerializer,
+    FlowCellSerializer)
 from samples.changelist import HTSChangeList
 from samples.models import HTSUser
 
@@ -132,6 +143,72 @@ def finishedEmail(request, pk):
     return HttpResponse("I've got nothing.")
 
 
+
+class ClusterStationViewSet(viewsets.ReadOnlyModelViewSet):
+    renderer_classes = (TemplateHTMLRenderer,
+                        BrowsableAPIRenderer,
+                        JSONRenderer)
+    queryset = ClusterStation.objects.all()
+    serializer_class = ClusterStationSerializer
+    # template_name = 'experiments/cluster_station.html'
+
+from pprint import pprint
+class FlowCellViewSet(viewsets.ReadOnlyModelViewSet):
+    renderer_classes = (TemplateHTMLRenderer,
+                        BrowsableAPIRenderer,
+                        JSONRenderer)
+    queryset = FlowCell.objects.all()
+    lookup_field = 'flowcell_id'
+    serializer_class = FlowCellSerializer
+    template_name = 'experiments/flowcell_detail.html'
+
+    def retrieve(self, request, *args, **kwargs):
+        fc = get_object_or_404(self.queryset, flowcell_id = kwargs['flowcell_id'])
+        context = kwargs.copy()
+        context['request'] = request
+        serializer = FlowCellSerializer(
+            fc,
+            context=context,
+            )
+        pprint(serializer.data)
+        return Response(serializer.data)
+
+    #def retrieve(self, request, flowcell_id=None, format=None):
+    #    queryset = FlowCell.objects.all()
+    #    fc = get_object_or_404(queryset, flowcell_id=flowcell_id)
+    #    serializer = FlowCellSerializer(
+    #        fc,
+    #        context={
+    #            'request': request,
+    #            'format': format,
+    #        }
+    #    )
+    #    return Response(
+    #        serializer.data,
+    #    )
+
+    #def list(self, *args, **kwargs):
+    #    template_name = 'experiments/flowcell_index.html'
+    #    return super(FlowCellViewSet, self).list(*args, **kwargs)
+
+class LaneViewSet(viewsets.ReadOnlyModelViewSet):
+    renderer_classes = (TemplateHTMLRenderer,
+                        BrowsableAPIRenderer,
+                        JSONRenderer)
+    queryset = Lane.objects.all()
+    serializer_class = LaneSerializer
+    template_name = 'experiments/flowcell_lane_detail.html'
+
+
+
+class SequencerViewSet(viewsets.ReadOnlyModelViewSet):
+    renderer_classes = (TemplateHTMLRenderer,
+                        BrowsableAPIRenderer,
+                        JSONRenderer)
+    queryset = Sequencer.objects.all()
+    serializer_class = SequencerSerializer
+    template_name = 'experiments/sequencer.html'
+
 def flowcell_detail(request, flowcell_id, lane_number=None):
     fc = get_object_or_404(FlowCell, flowcell_id__startswith=flowcell_id)
     fc.update_data_runs()
@@ -186,13 +263,6 @@ def read_result_file(self, key):
     raise Http404
 
 
-def sequencer(request, sequencer_id):
-    sequencer = get_object_or_404(Sequencer, id=sequencer_id)
-    context = RequestContext(request,
-                             {'sequencer': sequencer})
-    return render_to_response('experiments/sequencer.html', context)
-
-
 def lanes_for(request, username=None):
     """
     Generate a report of recent activity for a user