tracked content serializer changes

This commit is contained in:
Corban-Lee Jones 2024-06-11 13:51:51 +01:00
parent 845394fbe9
commit 44cde0daf4
3 changed files with 27 additions and 6 deletions

View File

@ -148,7 +148,18 @@ class SavedGuildSerializer(DynamicModelSerializer):
fields = ("id", "guild_id", "name", "icon", "added_by", "permissions", "owner")
class TrackedContentSerializer(DynamicModelSerializer):
class TrackedContentSerializer_GET(DynamicModelSerializer):
"""
Serializer for the TrackedContent model.
"""
subscription = SubscriptionSerializer()
class Meta:
model = TrackedContent
fields = ("guid", "title", "subscription", "creation_datetime")
class TrackedContentSerializer_POST(DynamicModelSerializer):
"""
Serializer for the TrackedContent model.
"""

View File

@ -46,6 +46,6 @@ urlpatterns = [
path("tracked-content/", include([
path("", TrackedContent_ListView.as_view(), name="tracked-content"),
path("<str:pk>/", TrackedContent_DetailView.as_view(), name="tracked-content-detail")
path("<path:pk>/", TrackedContent_DetailView.as_view(), name="tracked-content-detail")
])),
]

View File

@ -18,7 +18,8 @@ from .serializers import (
FilterSerializer,
SubscriptionSerializer,
SavedGuildSerializer,
TrackedContentSerializer
TrackedContentSerializer_GET,
TrackedContentSerializer_POST
)
log = logging.getLogger(__name__)
@ -386,11 +387,19 @@ class TrackedContent_ListView(generics.ListCreateAPIView):
permission_classes = [permissions.IsAuthenticated]
pagination_class = DefaultPagination
serializer_class = TrackedContentSerializer
queryset = TrackedContent.objects.all().order_by("guid")
filter_backends = [filters.SearchFilter, rest_filters.DjangoFilterBackend, filters.OrderingFilter]
filterset_fields = ["guid", "title", "subscription", "creation_datetime"]
filterset_fields = ["guid", "title", "subscription", "subscription__guild_id", "creation_datetime"]
read_serializer_class = TrackedContentSerializer_GET
write_serializer_class = TrackedContentSerializer_POST
def get_serializer_class(self):
if self.request.method == "POST":
return self.write_serializer_class
return self.read_serializer_class
def post(self, request):
serializer = self.get_serializer(data=request.data)
@ -420,6 +429,7 @@ class TrackedContent_DetailView(generics.RetrieveUpdateDestroyAPIView):
permission_classes = [permissions.IsAuthenticated]
parser_classes = [MultiPartParser, FormParser]
serializer_class = TrackedContentSerializer
serializer_class = TrackedContentSerializer_POST
queryset = TrackedContent.objects.all().order_by("guid")