Enhance API documentation and schema management by implementing explicit tag configurations for Swagger and ReDoc. Introduce postprocessing hooks to filter auto-generated tags, ensuring only defined tags are used. Update viewsets across various modules to utilize the new tagging system, improving clarity and organization in API documentation.
This commit is contained in:
@@ -9,6 +9,7 @@ from django.db.models import Sum, Count, Q
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
from decimal import Decimal
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
from igny8_core.api.base import AccountModelViewSet
|
||||
from igny8_core.api.pagination import CustomPageNumberPagination
|
||||
from igny8_core.api.response import success_response, error_response
|
||||
@@ -23,6 +24,9 @@ from .services import CreditService
|
||||
from .exceptions import InsufficientCreditsError
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Billing']),
|
||||
)
|
||||
class CreditBalanceViewSet(viewsets.ViewSet):
|
||||
"""
|
||||
ViewSet for credit balance operations
|
||||
@@ -73,6 +77,10 @@ class CreditBalanceViewSet(viewsets.ViewSet):
|
||||
return success_response(data=serializer.data, request=request)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Billing']),
|
||||
retrieve=extend_schema(tags=['Billing']),
|
||||
)
|
||||
class CreditUsageViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
"""
|
||||
ViewSet for credit usage logs
|
||||
@@ -444,6 +452,10 @@ class CreditUsageViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
return success_response(data={'limits': limits_data}, request=request)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Billing']),
|
||||
retrieve=extend_schema(tags=['Billing']),
|
||||
)
|
||||
class CreditTransactionViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
"""
|
||||
ViewSet for credit transaction history
|
||||
|
||||
@@ -8,6 +8,7 @@ from django.http import HttpResponse
|
||||
import csv
|
||||
import json
|
||||
import time
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
from igny8_core.api.base import SiteSectorModelViewSet
|
||||
from igny8_core.api.pagination import CustomPageNumberPagination
|
||||
from igny8_core.api.response import success_response, error_response
|
||||
@@ -18,6 +19,14 @@ from .serializers import KeywordSerializer, ContentIdeasSerializer
|
||||
from .cluster_serializers import ClusterSerializer
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Planner']),
|
||||
create=extend_schema(tags=['Planner']),
|
||||
retrieve=extend_schema(tags=['Planner']),
|
||||
update=extend_schema(tags=['Planner']),
|
||||
partial_update=extend_schema(tags=['Planner']),
|
||||
destroy=extend_schema(tags=['Planner']),
|
||||
)
|
||||
class KeywordViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing keywords with CRUD operations
|
||||
@@ -662,6 +671,14 @@ class KeywordViewSet(SiteSectorModelViewSet):
|
||||
)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Planner']),
|
||||
create=extend_schema(tags=['Planner']),
|
||||
retrieve=extend_schema(tags=['Planner']),
|
||||
update=extend_schema(tags=['Planner']),
|
||||
partial_update=extend_schema(tags=['Planner']),
|
||||
destroy=extend_schema(tags=['Planner']),
|
||||
)
|
||||
class ClusterViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing clusters with CRUD operations
|
||||
@@ -952,6 +969,14 @@ class ClusterViewSet(SiteSectorModelViewSet):
|
||||
)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Planner']),
|
||||
create=extend_schema(tags=['Planner']),
|
||||
retrieve=extend_schema(tags=['Planner']),
|
||||
update=extend_schema(tags=['Planner']),
|
||||
partial_update=extend_schema(tags=['Planner']),
|
||||
destroy=extend_schema(tags=['Planner']),
|
||||
)
|
||||
class ContentIdeasViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing content ideas with CRUD operations
|
||||
|
||||
@@ -7,6 +7,7 @@ from rest_framework import viewsets, status
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from django.db import transaction
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
from igny8_core.api.base import AccountModelViewSet
|
||||
from igny8_core.api.response import success_response, error_response
|
||||
from igny8_core.api.throttles import DebugScopedRateThrottle
|
||||
@@ -16,6 +17,14 @@ from django.conf import settings
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
test_connection=extend_schema(tags=['System']),
|
||||
task_progress=extend_schema(tags=['System']),
|
||||
get_image_generation_settings=extend_schema(tags=['System']),
|
||||
)
|
||||
class IntegrationSettingsViewSet(viewsets.ViewSet):
|
||||
"""
|
||||
ViewSet for managing integration settings (OpenAI, Runware, GSC)
|
||||
|
||||
@@ -6,6 +6,7 @@ from rest_framework import viewsets, status, permissions
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from django.db import transaction
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
from igny8_core.api.base import AccountModelViewSet
|
||||
from igny8_core.api.response import success_response, error_response
|
||||
from igny8_core.api.authentication import JWTAuthentication, CSRFExemptSessionAuthentication
|
||||
@@ -18,6 +19,14 @@ from .settings_serializers import (
|
||||
)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class SystemSettingsViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing system-wide settings (admin only for write operations)
|
||||
@@ -61,6 +70,14 @@ class SystemSettingsViewSet(AccountModelViewSet):
|
||||
return success_response(data=serializer.data, request=request)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class AccountSettingsViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing account-level settings
|
||||
@@ -113,6 +130,14 @@ class AccountSettingsViewSet(AccountModelViewSet):
|
||||
serializer.save(account=account)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class UserSettingsViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing user-level settings
|
||||
@@ -171,6 +196,14 @@ class UserSettingsViewSet(AccountModelViewSet):
|
||||
serializer.save(user=user, account=account)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class ModuleSettingsViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing module-specific settings
|
||||
@@ -242,6 +275,14 @@ class ModuleSettingsViewSet(AccountModelViewSet):
|
||||
serializer.save(account=account)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class AISettingsViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing AI-specific settings
|
||||
|
||||
@@ -12,6 +12,7 @@ from django.db import transaction, connection
|
||||
from django.core.cache import cache
|
||||
from django.utils import timezone
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
from igny8_core.api.base import AccountModelViewSet
|
||||
from igny8_core.api.response import success_response, error_response
|
||||
from igny8_core.api.permissions import IsEditorOrAbove, IsAuthenticatedAndActive, IsViewerOrAbove
|
||||
@@ -23,6 +24,14 @@ from .serializers import AIPromptSerializer, AuthorProfileSerializer, StrategySe
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class AIPromptViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing AI prompts
|
||||
@@ -192,6 +201,14 @@ class AIPromptViewSet(AccountModelViewSet):
|
||||
)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class AuthorProfileViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing Author Profiles
|
||||
@@ -210,6 +227,14 @@ class AuthorProfileViewSet(AccountModelViewSet):
|
||||
filterset_fields = ['is_active', 'language']
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['System']),
|
||||
create=extend_schema(tags=['System']),
|
||||
retrieve=extend_schema(tags=['System']),
|
||||
update=extend_schema(tags=['System']),
|
||||
partial_update=extend_schema(tags=['System']),
|
||||
destroy=extend_schema(tags=['System']),
|
||||
)
|
||||
class StrategyViewSet(AccountModelViewSet):
|
||||
"""
|
||||
ViewSet for managing Strategies
|
||||
|
||||
@@ -4,6 +4,7 @@ from rest_framework.response import Response
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from django.db import transaction, models
|
||||
from django.db.models import Q
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
from igny8_core.api.base import SiteSectorModelViewSet
|
||||
from igny8_core.api.pagination import CustomPageNumberPagination
|
||||
from igny8_core.api.response import success_response, error_response
|
||||
@@ -13,6 +14,14 @@ from .models import Tasks, Images, Content
|
||||
from .serializers import TasksSerializer, ImagesSerializer, ContentSerializer
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Writer']),
|
||||
create=extend_schema(tags=['Writer']),
|
||||
retrieve=extend_schema(tags=['Writer']),
|
||||
update=extend_schema(tags=['Writer']),
|
||||
partial_update=extend_schema(tags=['Writer']),
|
||||
destroy=extend_schema(tags=['Writer']),
|
||||
)
|
||||
class TasksViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing tasks with CRUD operations
|
||||
@@ -374,6 +383,14 @@ class TasksViewSet(SiteSectorModelViewSet):
|
||||
)
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Writer']),
|
||||
create=extend_schema(tags=['Writer']),
|
||||
retrieve=extend_schema(tags=['Writer']),
|
||||
update=extend_schema(tags=['Writer']),
|
||||
partial_update=extend_schema(tags=['Writer']),
|
||||
destroy=extend_schema(tags=['Writer']),
|
||||
)
|
||||
class ImagesViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing content images
|
||||
@@ -773,6 +790,14 @@ class ImagesViewSet(SiteSectorModelViewSet):
|
||||
request=request
|
||||
)
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Writer']),
|
||||
create=extend_schema(tags=['Writer']),
|
||||
retrieve=extend_schema(tags=['Writer']),
|
||||
update=extend_schema(tags=['Writer']),
|
||||
partial_update=extend_schema(tags=['Writer']),
|
||||
destroy=extend_schema(tags=['Writer']),
|
||||
)
|
||||
class ContentViewSet(SiteSectorModelViewSet):
|
||||
"""
|
||||
ViewSet for managing task content
|
||||
|
||||
Reference in New Issue
Block a user