Skip to content

Commit

Permalink
Feat(MM): API Serializer Expansion (#583)
Browse files Browse the repository at this point in the history
  • Loading branch information
williamputraintan authored Oct 2, 2024
1 parent 89477a7 commit 02d9015
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
from app.models import Library, Sample, Subject
from .base import SerializersBase
from .project import ProjectSerializer
from .sample import SampleSerializer
from .subject import SubjectSerializer


class LibraryBaseSerializer(SerializersBase):
Expand All @@ -21,8 +18,11 @@ def to_representation(self, instance):
return representation



class LibraryDetailSerializer(LibraryBaseSerializer):
from .sample import SampleSerializer
from .project import ProjectSerializer
from .subject import SubjectSerializer

project_set = ProjectSerializer(many=True, read_only=True)

sample = SampleSerializer(read_only=True)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ class Meta:

class ProjectDetailSerializer(ProjectBaseSerializer):
from .contact import ContactSerializer
from .library import LibrarySerializer

contact_set = ContactSerializer(many=True, read_only=True)
library_set = LibrarySerializer(many=True, read_only=True)

class Meta:
model = Project
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,21 @@
from app.models import Sample


class SampleSerializer(SerializersBase):
class SampleBaseSerializer(SerializersBase):
prefix = Sample.orcabus_id_prefix


class SampleSerializer(SampleBaseSerializer):
class Meta:
model = Sample
fields = "__all__"


class SampleDetailSerializer(SampleBaseSerializer):
from .library import LibrarySerializer

class Meta:
model = Sample
fields = '__all__'

library_set = LibrarySerializer(many=True, read_only=True)
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
class ProjectViewSet(BaseViewSet):
serializer_class = ProjectDetailSerializer
search_fields = Project.get_base_fields()
queryset = Project.objects.prefetch_related("contact_set").all()
queryset = Project.objects.prefetch_related("contact_set").prefetch_related("library_set").all()
orcabus_id_prefix = Project.orcabus_id_prefix

@extend_schema(parameters=[
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
from drf_spectacular.utils import extend_schema
from rest_framework import filters

from app.models import Sample
from app.serializers.sample import SampleSerializer
from app.pagination import StandardResultsSetPagination
from app.serializers.sample import SampleSerializer, SampleDetailSerializer

from .base import BaseViewSet


class SampleViewSet(BaseViewSet):
serializer_class = SampleSerializer
serializer_class = SampleDetailSerializer
search_fields = Sample.get_base_fields()
queryset = Sample.objects.all()
orcabus_id_prefix = Sample.orcabus_id_prefix
Expand Down

0 comments on commit 02d9015

Please sign in to comment.