from django.template.loader import get_template
from django.contrib.auth.decorators import login_required
+from rest_framework import viewsets
+from rest_framework.response import Response
+from rest_framework.renderers import (TemplateHTMLRenderer,
+ JSONRenderer,
+ BrowsableAPIRenderer)
+
from htsworkflow.auth import require_api_key
from experiments.models import FlowCell, LANE_STATUS_MAP
from .changelist import HTSChangeList
from .models import Antibody, Library, Species
from .admin import LibraryOptions
from .results import get_flowcell_result_dict
+from .serializers import (ExperimentTypeSerializer,
+ LibrarySerializer,
+ SpeciesSerializer)
+
from bcmagic.forms import BarcodeMagicForm
from htsworkflow.pipelines import runfolder
from htsworkflow.pipelines.samplekey import SampleKey
return HttpResponse(lib_json, content_type='application/json')
-@csrf_exempt
-def species_json(request, species_id):
- """
- Return information about a species.
- """
- raise Http404
-
-
-def species(request, species_id):
- species = get_object_or_404(Species, id=species_id)
-
- context = RequestContext(request,
- {'species': species})
-
- return render_to_response("samples/species_detail.html", context)
+class LibraryViewSet(viewsets.ReadOnlyModelViewSet):
+ renderer_classes = (TemplateHTMLRenderer,
+ BrowsableAPIRenderer,
+ JSONRenderer)
+ queryset = Library.objects.all()
+ serializer_class = LibrarySerializer
+ pagination_class = 'rest_framework.pagination.LimitOffsetPagination'
+ default_limit = 50
+ template_name = 'samples/library_detail.html'
+
+
+class ExperimentTypeViewSet(viewsets.ReadOnlyModelViewSet):
+ renderer_classes = (BrowsableAPIRenderer,
+ JSONRenderer)
+ queryset = ExperimentType.objects.all()
+ serializer_class = ExperimentTypeSerializer
+
+#@csrf_exempt
+#def species_json(request, species_id):
+# """
+# Return information about a species.
+# """
+# raise Http404
+#
+#
+#def species(request, species_id):
+# species = get_object_or_404(Species, id=species_id)
+#
+# context = RequestContext(request,
+# {'species': species})
+#
+# return render_to_response("samples/species_detail.html", context)
+#
+
+class SpeciesViewSet(viewsets.ReadOnlyModelViewSet):
+ renderer_classes = (TemplateHTMLRenderer,
+ BrowsableAPIRenderer,
+ JSONRenderer)
+ queryset = Species.objects.all()
+ serializer_class = SpeciesSerializer
+ template_name = 'samples/species_detail.html'
+
+ def list(self, request, format=format):
+ queryset = Species.objects.all()
+ serializer = self.serializer_class(
+ queryset,
+ many=True,
+ context={'request': request})
+ return Response({'species': serializer.data},
+ template_name='samples/species_list.html')
def antibodies(request):
- context = RequestContext(request,
- {'antibodies': Antibody.objects.order_by('antigene')})
+ context = RequestContext(
+ request,
+ {'antibodies': Antibody.objects.order_by('antigene')})
return render_to_response("samples/antibody_index.html", context)