Fixes: 1) Standardized error responses in `DownloadDigitalAssetView`. Extra: Improved maintainability by refactoring serializers and schema definitions into modular components; updated API URLs to use new class-based view.
34 lines
1.8 KiB
Python
34 lines
1.8 KiB
Python
from django.utils.translation import gettext_lazy as _
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
from drf_spectacular.utils import extend_schema_view
|
|
from rest_framework.viewsets import ReadOnlyModelViewSet
|
|
|
|
from blog.filters import PostFilter
|
|
from blog.models import Post
|
|
from blog.serializers import PostSerializer
|
|
from blog.docs.drf.viewsets import POST_SCHEMA
|
|
from core.permissions import EvibesPermission
|
|
|
|
|
|
@extend_schema_view(**POST_SCHEMA)
|
|
class PostViewSet(ReadOnlyModelViewSet): # type: ignore [type-arg]
|
|
__doc__ = _( # type: ignore [assignment]
|
|
"Encapsulates operations for managing and retrieving Post entities in a read-only model view set.\n\n"
|
|
"This class is tailored to handle Post objects that are active and allows filtration based on defined "
|
|
"filters. It integrates with Django's backend filtering system and ensures operations align with the "
|
|
"defined permissions. The view set also includes an additional 'retrieve' permission configuration.\n\n"
|
|
"Attributes:\n"
|
|
" serializer_class: Specifies the serializer to be used for Post objects.\n"
|
|
" permission_classes: Defines the permissions required to interact with this view set.\n"
|
|
" queryset: Determines the initial queryset, filtered to include only active Post objects.\n"
|
|
" filter_backends: Lists the backends to be used for filtering querysets.\n"
|
|
" filterset_class: Defines the set of filters used for filtering Post objects.\n"
|
|
" additional: Contains additional configuration, such as specific action permissions."
|
|
)
|
|
|
|
serializer_class = PostSerializer
|
|
permission_classes = (EvibesPermission,)
|
|
queryset = Post.objects.filter(is_active=True)
|
|
filter_backends = [DjangoFilterBackend]
|
|
filterset_class = PostFilter
|
|
additional = {"retrieve": "ALLOW"}
|