Skip to content

Commit

Permalink
Merge branch 'djangoindia:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
prakkhar03 authored Dec 6, 2024
2 parents 61ae877 + 9faf2d5 commit 24efe0f
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 9 deletions.
15 changes: 6 additions & 9 deletions backend/djangoindia/api/serializers/media_library.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from cabinet.models import File, Folder
from rest_framework import serializers

from django.utils.text import slugify


class FileSerializer(serializers.ModelSerializer):
class Meta:
Expand All @@ -10,24 +12,19 @@ class Meta:

class FolderLiteSerializer(serializers.ModelSerializer):
children = serializers.SerializerMethodField()
type = serializers.SerializerMethodField()
slug = serializers.SerializerMethodField()

class Meta:
model = Folder
fields = ["id", "name", "children", "type"]
fields = ["id", "name", "children", "slug"]

def get_children(self, obj):
return FolderLiteSerializer(
obj.children.all(), many=True, context=self.context
).data

def get_type(self, obj):
if len(obj.children.all()) > 0:
return "root"
elif len(obj.children.all()) >= 0 and obj.parent is None:
return "root"
else:
return "children"
def get_slug(self, obj):
return slugify(obj.name)

def to_representation(self, instance):
representation = super().to_representation(instance)
Expand Down
24 changes: 24 additions & 0 deletions backend/djangoindia/api/views/media_library.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
from rest_framework.response import Response

from django.core.exceptions import ValidationError
from django.http import Http404

from djangoindia.api.serializers.media_library import (
FolderLiteSerializer,
FolderSerializer,
)
from djangoindia.db.models import Event


class MediaLibraryAPIView(viewsets.GenericViewSet):
Expand All @@ -23,6 +25,28 @@ def get_serializer_class(self):
else:
return FolderLiteSerializer

def get_object(self):
queryset = self.filter_queryset(self.get_queryset())
lookup_value = self.kwargs.get(self.lookup_field)

if lookup_value:
try:
# Try to get the event by slug
event = Event.objects.filter(slug=lookup_value).values("name").first()

if event:
# If event exists, try to get the corresponding object
return queryset.get(name=event.get("name", ""))

# If no event found with the given slug
raise Event.DoesNotExist("No event found with this slug")

except (Event.DoesNotExist, Folder.DoesNotExist):
# Handle cases where either Event or Folder is not found
raise Http404("No matching event or folder found")

raise ValidationError("No identifier provided")

def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)

Expand Down

0 comments on commit 24efe0f

Please sign in to comment.