diff --git a/backend/apimanager/serializers.py b/backend/apimanager/serializers.py index dac94e8..5aa03ab 100644 --- a/backend/apimanager/serializers.py +++ b/backend/apimanager/serializers.py @@ -1,8 +1,3 @@ -from django.contrib.auth import get_user_model, authenticate, login, logout -from django.contrib.auth.models import User -from django.db.models import Q -from django.urls import reverse -from django.utils import timezone from rest_framework import serializers from .models import ( UserData, @@ -59,7 +54,7 @@ class BlogSerializer(serializers.ModelSerializer): class UnifiedCategoryBlogSerializer(serializers.ModelSerializer): - blog_metadata = serializers.SerializerMethodField() # Custom field for related blogs + blog_metadata = serializers.SerializerMethodField() class Meta: model = Category @@ -74,22 +69,18 @@ class UnifiedCategoryBlogSerializer(serializers.ModelSerializer): ] def get_blog_metadata(self, obj): - # Serializes all blogs related to the category, assuming `blogs` as the related_name blogs = obj.blogs.all() return [{ - 'blog_id': blog.blog_id, # Using UUID + 'blog_id': blog.blog_id, 'name': blog.name, 'description': blog.description, 'cover_image': blog.cover_image, 'tagline': blog.tagline, 'parent_category': blog.parent_category.category_id - # Assuming parent_category is a reference to a Category object } for blog in blogs] def to_representation(self, instance): representation = super().to_representation(instance) - # Set a featured blog based on some logic, e.g., the first blog - representation['featured_id'] = instance.blogs.first().blog_id if instance.blogs.exists() else None return representation class MediaSerializer(serializers.Serializer): diff --git a/frontend/src/components/editable/blog-list.jsx b/frontend/src/components/editable/blog-list.jsx index eef5f6b..0b3e2de 100755 --- a/frontend/src/components/editable/blog-list.jsx +++ b/frontend/src/components/editable/blog-list.jsx @@ -81,6 +81,15 @@ function BlogList(props) { }); } + const updateFeaturedBlog = (featuredId) => { + EditableDataService.updateData(`/data/category/update/${categoryID}/`, {"featured_id": featuredId}).then(response=>{ + if (featuredId) + props.notificationToggler('Blog set as featured') + else props.notificationToggler('Featured blog removed') + loadBlogs() + }) + } + if (GlobalTheme && ThemeConfig) { return ( @@ -105,6 +114,8 @@ return ( - + diff --git a/frontend/src/components/editable/category-list.jsx b/frontend/src/components/editable/category-list.jsx index efc0646..98b2d4a 100755 --- a/frontend/src/components/editable/category-list.jsx +++ b/frontend/src/components/editable/category-list.jsx @@ -79,7 +79,7 @@ function Blogs(props) { const addNewCategory = () => { EditableDataService.createData('/data/category/create/', { "name": "Enter name", - "featured_blog": "", + "featured_id": "", "description": "Enter description", "tagline": "Enter tagline", "cover_image": "" diff --git a/frontend/src/components/editable/shared/card-list-viewer.jsx b/frontend/src/components/editable/shared/card-list-viewer.jsx index 3f33ee2..528afdb 100755 --- a/frontend/src/components/editable/shared/card-list-viewer.jsx +++ b/frontend/src/components/editable/shared/card-list-viewer.jsx @@ -139,6 +139,22 @@ function CardListViewer(props) { + + + + + ) }