summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuchita Lad2025-01-24 16:53:57 +0530
committerSuchita Lad2025-01-24 16:53:57 +0530
commit6f9e016c3085c8a76ad7b6320e91c47f845d20a2 (patch)
tree44d67e4cd1de5f3cf73d56478d085b49ce7d03a8
parentc6aaf1fc84cf65f332cfb6a1120558f8e7198175 (diff)
downloadCommon-Interface-Project-6f9e016c3085c8a76ad7b6320e91c47f845d20a2.tar.gz
Common-Interface-Project-6f9e016c3085c8a76ad7b6320e91c47f845d20a2.tar.bz2
Common-Interface-Project-6f9e016c3085c8a76ad7b6320e91c47f845d20a2.zip
Added example count
-rw-r--r--blocks/saveAPI/models.py41
-rw-r--r--blocks/saveAPI/serializers.py3
-rw-r--r--blocks/saveAPI/views.py12
3 files changed, 31 insertions, 25 deletions
diff --git a/blocks/saveAPI/models.py b/blocks/saveAPI/models.py
index f97f3b07..fb29bfe3 100644
--- a/blocks/saveAPI/models.py
+++ b/blocks/saveAPI/models.py
@@ -15,6 +15,24 @@ media = FileSystemStorage(
location=settings.MEDIA_ROOT, base_url='.')
+class BookCategory(models.Model):
+ id = models.AutoField(primary_key=True)
+ category_name = models.CharField(max_length=500)
+
+ def __str__(self):
+ return self.category_name
+
+
+class Book(models.Model):
+ id = models.AutoField(primary_key=True)
+ book_name = models.CharField(max_length=500)
+ author_name = models.CharField(max_length=500)
+ category = models.ForeignKey(BookCategory, on_delete=models.CASCADE)
+
+ def __str__(self):
+ return self.book_name
+
+
class StateSave(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=200, null=True)
@@ -32,26 +50,10 @@ class StateSave(models.Model):
def save(self, *args, **kwargs):
super(StateSave, self).save(*args, **kwargs)
- def __str__(self):
- return self.name
-
-
-class BookCategory(models.Model):
- id = models.AutoField(primary_key=True)
- category_name = models.CharField(max_length=500)
-
- def __str__(self):
- return self.category_name
-
-
-class Book(models.Model):
- id = models.AutoField(primary_key=True)
- book_name = models.CharField(max_length=500)
- author_name = models.CharField(max_length=500)
- category = models.ForeignKey(BookCategory, on_delete=models.CASCADE)
+ # book = models.ForeignKey(Book, on_delete=models.CASCADE)
def __str__(self):
- return self.book_name
+ return self.name
class Gallery(models.Model):
@@ -64,6 +66,7 @@ class Gallery(models.Model):
upload_to='simulation_images', storage=media, null=True)
shared = models.BooleanField(default=True)
save_time = models.DateTimeField(auto_now=True)
+ book = models.ForeignKey(Book, related_name='examples', on_delete=models.CASCADE, null=True)
# For Django Admin Panel
def image_tag(self):
@@ -73,7 +76,7 @@ class Gallery(models.Model):
else:
return 'No Image Found'
image_tag.short_description = 'Image'
- book = models.ForeignKey(Book, on_delete=models.CASCADE, null=True)
+
def __str__(self):
return self.name
diff --git a/blocks/saveAPI/serializers.py b/blocks/saveAPI/serializers.py
index d06743d2..6d3184d7 100644
--- a/blocks/saveAPI/serializers.py
+++ b/blocks/saveAPI/serializers.py
@@ -84,6 +84,7 @@ class BookCategorySerializer(serializers.ModelSerializer):
class BookSerializer(serializers.ModelSerializer):
+ example_count = serializers.IntegerField(read_only=True)
class Meta:
model = Book
- fields = ['id', 'book_name', 'category']
+ fields = ['id', 'book_name', 'author_name', 'category', 'example_count']
diff --git a/blocks/saveAPI/views.py b/blocks/saveAPI/views.py
index 7c788e27..048b88f2 100644
--- a/blocks/saveAPI/views.py
+++ b/blocks/saveAPI/views.py
@@ -15,7 +15,7 @@ from .serializers import Base64ImageField, GallerySerializer, \
SaveListSerializer, StateSaveSerializer, BookCategorySerializer, \
BookSerializer
-from django.db.models import OuterRef, Subquery
+from django.db.models import Count, OuterRef, Subquery
logger = logging.getLogger(__name__)
@@ -478,9 +478,11 @@ class BookView(APIView):
@swagger_auto_schema(responses={200: BookSerializer(many=True)})
def get(self, request):
- books = Book.objects.all()
try:
- serialized = BookSerializer(books, many=True)
- return Response(serialized.data, status=status.HTTP_200_OK)
+ books = Book.objects.annotate(example_count=Count('examples')).order_by('book_name')
+ serializer = BookSerializer(books, many=True)
+
+ return Response(serializer.data, status=status.HTTP_200_OK)
+
except Exception as e:
- return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+ return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) \ No newline at end of file