gealogiuya
This commit is contained in:
3
apps/geology/views/__init__.py
Normal file
3
apps/geology/views/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from .category import * # noqa
|
||||
from .gallery import * # noqa
|
||||
from .geology import * # noqa
|
||||
24
apps/geology/views/category.py
Normal file
24
apps/geology/views/category.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from typing import Type
|
||||
|
||||
from django.db.models import QuerySet
|
||||
from rest_framework.generics import GenericAPIView
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import Serializer
|
||||
|
||||
from apps.geology.models import Category
|
||||
from apps.geology.serializers import CategorySerializer
|
||||
|
||||
|
||||
class CategoryView(GenericAPIView):
|
||||
permission_classes = [AllowAny]
|
||||
serializer_class: Type[Serializer] = CategorySerializer
|
||||
|
||||
def get_queryset(self) -> QuerySet[Category]:
|
||||
return Category.objects.all()
|
||||
|
||||
def get(self, request: Request) -> Response:
|
||||
categories = self.get_queryset()
|
||||
serializer = self.serializer_class(categories, many=True)
|
||||
return Response(serializer.data)
|
||||
24
apps/geology/views/gallery.py
Normal file
24
apps/geology/views/gallery.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from typing import Type
|
||||
|
||||
from django.db.models import QuerySet
|
||||
from rest_framework.generics import GenericAPIView
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import Serializer
|
||||
|
||||
from apps.geology.models import GalleryCategory
|
||||
from apps.geology.serializers import GalleryCategorySerializer
|
||||
|
||||
|
||||
class GalleryCategoryView(GenericAPIView):
|
||||
permission_classes = [AllowAny]
|
||||
serializer_class: Type[Serializer] = GalleryCategorySerializer
|
||||
|
||||
def get_queryset(self) -> QuerySet[GalleryCategory]:
|
||||
return GalleryCategory.objects.all()
|
||||
|
||||
def get(self, request: Request) -> Response:
|
||||
categories = self.get_queryset()
|
||||
serializer = self.serializer_class(categories, many=True)
|
||||
return Response(serializer.data)
|
||||
45
apps/geology/views/geology.py
Normal file
45
apps/geology/views/geology.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from typing import Type
|
||||
|
||||
from django.db.models import QuerySet
|
||||
from rest_framework import status
|
||||
from rest_framework.generics import GenericAPIView
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import Serializer
|
||||
|
||||
from apps.geology.models import Geology
|
||||
from apps.geology.serializers import GeologySerializer, GeologyDetailSerializer
|
||||
|
||||
|
||||
class GeologyView(GenericAPIView):
|
||||
permission_classes = [AllowAny]
|
||||
|
||||
def get_serializer_class(self) -> Type[Serializer]:
|
||||
if self.request.method == "POST":
|
||||
return GeologySerializer
|
||||
return GeologyDetailSerializer
|
||||
|
||||
def get_queryset(self) -> QuerySet[Geology]:
|
||||
return Geology.objects.all().select_related()
|
||||
|
||||
def get(self, request: Request) -> Response:
|
||||
geology_id = request.query_params.get("id")
|
||||
category_id = request.query_params.get("category")
|
||||
if geology_id:
|
||||
geologies = Geology.objects.filter(id=geology_id)
|
||||
elif category_id:
|
||||
geologies = Geology.objects.filter(category_id=category_id)
|
||||
else:
|
||||
geologies = self.get_queryset()
|
||||
serializer = self.get_serializer(geologies, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
def post(self, request: Request) -> Response:
|
||||
serializer = self.get_serializer(
|
||||
data=request.data, context={"request": request}
|
||||
)
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
Reference in New Issue
Block a user