footer widgets and tuomation page fixes

This commit is contained in:
IGNY8 VPS (Salman)
2026-01-12 02:26:25 +00:00
parent 90b9d6aadc
commit 95d8ade942
3 changed files with 75 additions and 22 deletions

View File

@@ -2,6 +2,7 @@ from rest_framework import viewsets, filters, status
from rest_framework.decorators import action
from rest_framework.response import Response
from django_filters.rest_framework import DjangoFilterBackend
import django_filters
from django.db import transaction
from django.db.models import Max, Count, Sum, Q
from django.http import HttpResponse
@@ -23,6 +24,37 @@ from igny8_core.business.planning.services.ideas_service import IdeasService
from igny8_core.business.billing.exceptions import InsufficientCreditsError
# Custom FilterSets with date range filtering support
class KeywordsFilter(django_filters.FilterSet):
"""Custom filter for Keywords with date range support"""
created_at__gte = django_filters.IsoDateTimeFilter(field_name='created_at', lookup_expr='gte')
created_at__lte = django_filters.IsoDateTimeFilter(field_name='created_at', lookup_expr='lte')
class Meta:
model = Keywords
fields = ['status', 'cluster_id', 'seed_keyword__country', 'seed_keyword_id', 'created_at__gte', 'created_at__lte']
class ClustersFilter(django_filters.FilterSet):
"""Custom filter for Clusters with date range support"""
created_at__gte = django_filters.IsoDateTimeFilter(field_name='created_at', lookup_expr='gte')
created_at__lte = django_filters.IsoDateTimeFilter(field_name='created_at', lookup_expr='lte')
class Meta:
model = Clusters
fields = ['status', 'created_at__gte', 'created_at__lte']
class ContentIdeasFilter(django_filters.FilterSet):
"""Custom filter for ContentIdeas with date range support"""
created_at__gte = django_filters.IsoDateTimeFilter(field_name='created_at', lookup_expr='gte')
created_at__lte = django_filters.IsoDateTimeFilter(field_name='created_at', lookup_expr='lte')
class Meta:
model = ContentIdeas
fields = ['status', 'keyword_cluster_id', 'content_type', 'content_structure', 'created_at__gte', 'created_at__lte']
@extend_schema_view(
list=extend_schema(tags=['Planner']),
create=extend_schema(tags=['Planner']),
@@ -54,8 +86,8 @@ class KeywordViewSet(SiteSectorModelViewSet):
ordering_fields = ['created_at', 'seed_keyword__volume', 'seed_keyword__difficulty']
ordering = ['-created_at'] # Default ordering (newest first)
# Filter configuration - filter by status, cluster_id, and seed_keyword fields
filterset_fields = ['status', 'cluster_id', 'seed_keyword__country', 'seed_keyword_id']
# Filter configuration - use custom filterset for date range filtering
filterset_class = KeywordsFilter
def get_queryset(self):
"""
@@ -803,8 +835,8 @@ class ClusterViewSet(SiteSectorModelViewSet):
ordering_fields = ['name', 'created_at', 'keywords_count', 'volume', 'difficulty']
ordering = ['name'] # Default ordering
# Filter configuration
filterset_fields = ['status']
# Filter configuration - use custom filterset for date range filtering
filterset_class = ClustersFilter
def get_queryset(self):
"""
@@ -1111,8 +1143,8 @@ class ContentIdeasViewSet(SiteSectorModelViewSet):
ordering_fields = ['idea_title', 'created_at', 'estimated_word_count']
ordering = ['-created_at'] # Default ordering (newest first)
# Filter configuration (updated for new structure)
filterset_fields = ['status', 'keyword_cluster_id', 'content_type', 'content_structure']
# Filter configuration - use custom filterset for date range filtering
filterset_class = ContentIdeasFilter
def perform_create(self, serializer):
"""Require explicit site_id and sector_id - no defaults."""