footer widgets and tuomation page fixes
This commit is contained in:
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user