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."""

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, 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"""