summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuchita Lad2025-01-23 12:40:50 +0530
committerSuchita Lad2025-01-23 12:49:15 +0530
commit58033bdb9f9cb3fe652f3204c1271db7e68622c8 (patch)
treeb1d73d330dbc482a58d09a4206f8666eae89b5e8
parent74ffab5c38046f0333c6991ca7fa4085317f54be (diff)
downloadCommon-Interface-Project-58033bdb9f9cb3fe652f3204c1271db7e68622c8.tar.gz
Common-Interface-Project-58033bdb9f9cb3fe652f3204c1271db7e68622c8.tar.bz2
Common-Interface-Project-58033bdb9f9cb3fe652f3204c1271db7e68622c8.zip
New bookcategory and book tables
-rw-r--r--blocks/blocks/xcosblocks/fixtures/saveAPI.yaml70
-rw-r--r--blocks/saveAPI/admin.py15
-rw-r--r--blocks/saveAPI/models.py18
-rw-r--r--blocks/saveAPI/serializers.py13
-rw-r--r--blocks/saveAPI/urls.py6
-rw-r--r--blocks/saveAPI/views.py32
6 files changed, 150 insertions, 4 deletions
diff --git a/blocks/blocks/xcosblocks/fixtures/saveAPI.yaml b/blocks/blocks/xcosblocks/fixtures/saveAPI.yaml
new file mode 100644
index 00000000..f3285e16
--- /dev/null
+++ b/blocks/blocks/xcosblocks/fixtures/saveAPI.yaml
@@ -0,0 +1,70 @@
+- model: saveAPI.book
+ pk: 83
+ fields:
+ book_name: Modern Power System Analysis
+ author_name: D. P. Kothari And I. J. Nagrath
+ category: 15
+- model: saveAPI.book
+ pk: 154
+ fields:
+ book_name: Electric Circuits
+ author_name: M. Navhi And J. A. Edminister
+ category: 8
+- model: saveAPI.book
+ pk: 181
+ fields:
+ book_name: Basic Electronics
+ author_name: D. De
+ category: 10
+- model: saveAPI.book
+ pk: 215
+ fields:
+ book_name: Engineering Circuit Analysis
+ author_name: W. Hayt, J. Kemmerly And S. Durbin
+ category: 8
+- model: saveAPI.book
+ pk: 293
+ fields:
+ book_name: Electrical Engineering Fundamentals
+ author_name: V. Del Toro
+ category: 8
+- model: saveAPI.book
+ pk: 2048
+ fields:
+ book_name: Digital Control
+ author_name: K. M. Moudgalya
+ category: 2
+- model: saveAPI.book
+ pk: 2777
+ fields:
+ book_name: Electrical Machines
+ author_name: R. K. Srivastava
+ category: 8
+- model: saveAPI.book
+ pk: 3432
+ fields:
+ book_name: Feedback Control of Dynamic Systems
+ author_name: G. F. Franklin, J. D. Powell and A. Emami-Naeini
+ category: 2
+- model: saveAPI.book
+ pk: 3885
+ fields:
+ book_name: Control Systems
+ author_name: A Nagoor Kani
+ category: 2
+- model: saveAPI.bookcategory
+ pk: 2
+ fields:
+ category_name: Control Theory & Control Systems
+- model: saveAPI.bookcategory
+ pk: 8
+ fields:
+ category_name: Electrical Technology
+- model: saveAPI.bookcategory
+ pk: 10
+ fields:
+ category_name: Analog Electronics
+- model: saveAPI.bookcategory
+ pk: 15
+ fields:
+ category_name: Power Systems
diff --git a/blocks/saveAPI/admin.py b/blocks/saveAPI/admin.py
index 0d75ce4e..e333618c 100644
--- a/blocks/saveAPI/admin.py
+++ b/blocks/saveAPI/admin.py
@@ -1,5 +1,5 @@
from django.contrib import admin
-from saveAPI.models import Gallery, StateSave
+from saveAPI.models import Gallery, StateSave, BookCategory, Book
from django.forms import TextInput, Textarea
from django.db import models
@@ -20,3 +20,16 @@ class GalleryDiagrams(admin.ModelAdmin):
models.CharField: {'widget': TextInput(attrs={'size': '50'})},
models.TextField: {'widget': Textarea(attrs={'rows': 20, 'cols': 50})},
}
+
+
+@admin.register(BookCategory)
+class BookCategoryAdmin(admin.ModelAdmin):
+ list_display = ('id', 'category_name')
+ search_fields = ('category_name',)
+
+@admin.register(Book)
+class BookAdmin(admin.ModelAdmin):
+ list_display = ('id', 'book_name', 'category')
+ search_fields = ('book_name', 'category__category_name')
+ list_filter = ('category',)
+
diff --git a/blocks/saveAPI/models.py b/blocks/saveAPI/models.py
index 5736451e..2fbc97b5 100644
--- a/blocks/saveAPI/models.py
+++ b/blocks/saveAPI/models.py
@@ -58,3 +58,21 @@ class Gallery(models.Model):
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)
+
+ def __str__(self):
+ return self.book_name
diff --git a/blocks/saveAPI/serializers.py b/blocks/saveAPI/serializers.py
index 24f67c77..68936ac8 100644
--- a/blocks/saveAPI/serializers.py
+++ b/blocks/saveAPI/serializers.py
@@ -1,5 +1,5 @@
from rest_framework import serializers
-from saveAPI.models import StateSave, Gallery
+from saveAPI.models import StateSave, Gallery, BookCategory, Book
from django.core.files.base import ContentFile
import base64
import six
@@ -74,3 +74,14 @@ class GallerySerializer(serializers.ModelSerializer):
'media',
'shared',
)
+
+
+class BookCategorySerializer(serializers.ModelSerializer):
+ class Meta:
+ model = BookCategory
+ fields = ['id', 'category_name']
+
+class BookSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Book
+ fields = ['id', 'book_name', 'category']
diff --git a/blocks/saveAPI/urls.py b/blocks/saveAPI/urls.py
index 6b987052..002bc90a 100644
--- a/blocks/saveAPI/urls.py
+++ b/blocks/saveAPI/urls.py
@@ -23,6 +23,12 @@ urlpatterns = [
path("diagram/<uuid:save_id>", saveAPI_views.FetchSaveDiagram.as_view(),
name="getDiagram"),
+ path('categories', saveAPI_views.BookCategoryView.as_view(),
+ name='categories'),
+
+ path('books', saveAPI_views.BookView.as_view(),
+ name='books'),
+
]
urlpatterns += router.urls
diff --git a/blocks/saveAPI/views.py b/blocks/saveAPI/views.py
index a659665b..338dfa16 100644
--- a/blocks/saveAPI/views.py
+++ b/blocks/saveAPI/views.py
@@ -10,9 +10,11 @@ from rest_framework.response import Response
from rest_framework.views import APIView
import traceback
import uuid
-from .models import Gallery, StateSave
+from .models import Gallery, StateSave, BookCategory, Book
from .serializers import Base64ImageField, GallerySerializer, \
- SaveListSerializer, StateSaveSerializer
+ SaveListSerializer, StateSaveSerializer, BookCategorySerializer, \
+ BookSerializer
+
from django.db.models import OuterRef, Subquery
logger = logging.getLogger(__name__)
@@ -456,3 +458,29 @@ class GalleryFetchSaveDeleteView(APIView):
return Response({'done': True})
except Exception:
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+
+class BookCategoryView(APIView):
+ permission_classes = (AllowAny,)
+
+ @swagger_auto_schema(responses={200: BookCategorySerializer(many=True)})
+ def get(self, request):
+ categories = BookCategory.objects.all()
+ try:
+ serialized = BookCategorySerializer(categories, many=True)
+ return Response(serialized.data, status=status.HTTP_200_OK)
+ except Exception as e:
+ return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+
+
+class BookView(APIView):
+ permission_classes = (AllowAny,)
+
+ @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)
+ except Exception as e:
+ return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)