diff options
author | Suchita Lad | 2025-01-23 12:40:50 +0530 |
---|---|---|
committer | Suchita Lad | 2025-01-23 12:49:15 +0530 |
commit | 58033bdb9f9cb3fe652f3204c1271db7e68622c8 (patch) | |
tree | b1d73d330dbc482a58d09a4206f8666eae89b5e8 | |
parent | 74ffab5c38046f0333c6991ca7fa4085317f54be (diff) | |
download | Common-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.yaml | 70 | ||||
-rw-r--r-- | blocks/saveAPI/admin.py | 15 | ||||
-rw-r--r-- | blocks/saveAPI/models.py | 18 | ||||
-rw-r--r-- | blocks/saveAPI/serializers.py | 13 | ||||
-rw-r--r-- | blocks/saveAPI/urls.py | 6 | ||||
-rw-r--r-- | blocks/saveAPI/views.py | 32 |
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) |