From 4484de910eb7220516e69227a1df52c4a8bcf83a Mon Sep 17 00:00:00 2001 From: rellisreal Date: Mon, 1 Dec 2025 16:40:34 +0800 Subject: [PATCH] Created serializer + viewset, also fixed up permission settings (Next step is setting up cookies) --- API/API/settings.py | 5 ++++- API/API/urls.py | 7 ++++++ API/back_api/serializers.py | 43 +++++++++++++++++++++++++++++++++++++ API/back_api/views.py | 25 +++++++++++++++++++-- 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 API/back_api/serializers.py diff --git a/API/API/settings.py b/API/API/settings.py index 85d2432..1c3487a 100644 --- a/API/API/settings.py +++ b/API/API/settings.py @@ -113,8 +113,11 @@ REST_FRAMEWORK = { "DEFAULT_PERMISSION_CLASSES": [ + "rest_framework.permissions.IsAuthenticated", + ], + "DEFAULT_AUTHENTICATION_CLASSES": ( "rest_framework_simplejwt.authentication.JWTAuthentication", - ] + ), } # Internationalization # https://docs.djangoproject.com/en/5.1/topics/i18n/ diff --git a/API/API/urls.py b/API/API/urls.py index a2f4f5b..12f65a2 100644 --- a/API/API/urls.py +++ b/API/API/urls.py @@ -14,12 +14,19 @@ 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ +from back_api.views import AgentTypeViewSet from django.contrib import admin from django.urls import path +from rest_framework.routers import DefaultRouter from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView +router = DefaultRouter() +router.register(r"agents", AgentTypeViewSet, basename="agent") + urlpatterns = [ path("admin/", admin.site.urls), path("api/token/", TokenObtainPairView.as_view(), name="token_obtain_pair"), path("api/token/refresh/", TokenRefreshView.as_view(), name="token_refresh"), ] + +urlpatterns += router.urls diff --git a/API/back_api/serializers.py b/API/back_api/serializers.py new file mode 100644 index 0000000..55ddb85 --- /dev/null +++ b/API/back_api/serializers.py @@ -0,0 +1,43 @@ +from back_api.models import AgentType, OSINTQuery +from rest_framework import serializers +from user_model.models import CustomUserClass + + +class AgentTypeSerializer(serializers.Serializer): + vendor_name = serializers.CharField(max_length=30) + vendor_description = serializers.CharField(max_length=200) + vendor_api = serializers.CharField(max_length=100) + + def create(self, validated_data): + return AgentType(**validated_data) + + def update(self, instance, validated_data): + instance.name = validated_data.get("vendor_name", instance.name) + instance.description = validated_data.get( + "vendor_description", instance.description + ) + instance.api = validated_data.get("vendor_api", instance.api) + return instance + + +class OSINTQuerySerializer(serializers.Serializer): + osint_agent = serializers.DjangoModelField(AgentType) + osint_result = serializers.DictField() + created_by = serializers.DjangoModelField(CustomUserClass) + created_date = serializers.DateTimeField() + updated_date = serializers.DateTimeField() + + def create(self, validated_data): + return OSINTQuery(**validated_data) + + def update(self, instance, validated_data): + instance.agent = validated_data.get("osint_agent", instance.agent) + instance.result = validated_data.get("osint_result", instance.result) + instance.created_by = validated_data.get("created_by", instance.created_by) + instance.created_date = validated_data.get( + "created_date", instance.created_date + ) + instance.updated_date = validated_data.get( + "updated_date", instance.updated_date + ) + return instance diff --git a/API/back_api/views.py b/API/back_api/views.py index fd0e044..db1ee64 100644 --- a/API/back_api/views.py +++ b/API/back_api/views.py @@ -1,3 +1,24 @@ -# from django.shortcuts import render +from back_api.models import AgentType +from back_api.serializers import AgentTypeSerializer +from django.shortcuts import get_object_or_404 +from rest_framework import viewsets +from rest_framework.response import Response -# Create your views here. +# from user_model.models import CustomUserClass + + +class AgentTypeViewSet(viewsets.ViewSet): + """ + A ViewSet for listing or retrieving different agents. + """ + + def list(self, request): + queryset = AgentType.objects.all() + serializer = AgentTypeSerializer(queryset, many=True) + return Response(serializer.data) + + def retrieve(self, request, pk=None): + queryset = AgentType.objects.all() + agent = get_object_or_404(queryset, pk=pk) + serializer = AgentTypeSerializer(agent) + return Response(serializer.data)