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."""
|
||||
|
||||
@@ -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, models
|
||||
from django.db.models import Q
|
||||
from drf_spectacular.utils import extend_schema, extend_schema_view
|
||||
@@ -24,6 +25,37 @@ from igny8_core.business.content.services.metadata_mapping_service import Metada
|
||||
from igny8_core.business.billing.exceptions import InsufficientCreditsError
|
||||
|
||||
|
||||
# Custom FilterSets with date range filtering support
|
||||
class TasksFilter(django_filters.FilterSet):
|
||||
"""Custom filter for Tasks 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 = Tasks
|
||||
fields = ['status', 'cluster_id', 'content_type', 'content_structure', 'created_at__gte', 'created_at__lte']
|
||||
|
||||
|
||||
class ImagesFilter(django_filters.FilterSet):
|
||||
"""Custom filter for Images 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 = Images
|
||||
fields = ['task_id', 'content_id', 'image_type', 'status', 'created_at__gte', 'created_at__lte']
|
||||
|
||||
|
||||
class ContentFilter(django_filters.FilterSet):
|
||||
"""Custom filter for Content 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 = Content
|
||||
fields = ['cluster_id', 'status', 'content_type', 'content_structure', 'source', 'created_at__gte', 'created_at__lte']
|
||||
|
||||
|
||||
|
||||
@extend_schema_view(
|
||||
list=extend_schema(tags=['Writer']),
|
||||
@@ -56,8 +88,8 @@ class TasksViewSet(SiteSectorModelViewSet):
|
||||
ordering_fields = ['title', 'created_at', 'status']
|
||||
ordering = ['-created_at'] # Default ordering (newest first)
|
||||
|
||||
# Filter configuration - Stage 1: removed entity_type, cluster_role
|
||||
filterset_fields = ['status', 'cluster_id', 'content_type', 'content_structure']
|
||||
# Filter configuration - use custom filterset for date range filtering
|
||||
filterset_class = TasksFilter
|
||||
|
||||
def perform_create(self, serializer):
|
||||
"""Require explicit site_id and sector_id - no defaults."""
|
||||
@@ -265,7 +297,7 @@ class ImagesViewSet(SiteSectorModelViewSet):
|
||||
filter_backends = [DjangoFilterBackend, filters.OrderingFilter]
|
||||
ordering_fields = ['created_at', 'position', 'id']
|
||||
ordering = ['-id'] # Sort by ID descending (newest first)
|
||||
filterset_fields = ['task_id', 'content_id', 'image_type', 'status']
|
||||
filterset_class = ImagesFilter
|
||||
|
||||
def perform_create(self, serializer):
|
||||
"""Override to automatically set account, site, and sector"""
|
||||
@@ -743,13 +775,8 @@ class ContentViewSet(SiteSectorModelViewSet):
|
||||
ordering_fields = ['created_at', 'updated_at', 'status']
|
||||
ordering = ['-created_at']
|
||||
# Stage 1: removed task_id, entity_type, content_format, cluster_role, sync_status, external_type
|
||||
filterset_fields = [
|
||||
'cluster_id',
|
||||
'status',
|
||||
'content_type',
|
||||
'content_structure',
|
||||
'source',
|
||||
]
|
||||
# Use custom filterset for date range filtering
|
||||
filterset_class = ContentFilter
|
||||
|
||||
def get_queryset(self):
|
||||
"""Override to support status__in filtering for multiple statuses"""
|
||||
|
||||
Reference in New Issue
Block a user