X-Git-Url: http://woldlab.caltech.edu/gitweb/?a=blobdiff_plain;f=samples%2Fviews.py;h=78cd0ba0c6f5d838cc46fae8d243274cb2ac9c53;hb=928bea8121391cabde673a31de302825cc80cf12;hp=3b5ea350e2289e16d7474bec221580d8175311b4;hpb=57c98b7b2221fd367279873f50f4977596c5f20f;p=htsworkflow.git diff --git a/samples/views.py b/samples/views.py index 3b5ea35..78cd0ba 100644 --- a/samples/views.py +++ b/samples/views.py @@ -12,12 +12,22 @@ from django.template import RequestContext 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 @@ -451,26 +461,62 @@ def library_json(request, library_id): 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)