diff --git a/ietf/api/urls_rpc.py b/ietf/api/urls_rpc.py index 11bbc49d50..b1a69882a4 100644 --- a/ietf/api/urls_rpc.py +++ b/ietf/api/urls_rpc.py @@ -1,8 +1,7 @@ -# Copyright The IETF Trust 2023-2025, All Rights Reserved -from django.conf import settings +# Copyright The IETF Trust 2023-2026, All Rights Reserved from django.urls import include, path -from ietf.api import views_rpc, views_rpc_demo +from ietf.api import views_rpc from ietf.api.routers import PrefixedDefaultRouter from ietf.utils.urls import url @@ -18,11 +17,6 @@ basename="rfc-authors", ) -if settings.SERVER_MODE not in {"production", "test"}: - # for non production demos - router.register(r"demo", views_rpc_demo.DemoViewSet, basename="demo") - - urlpatterns = [ url(r"^doc/drafts_by_names/", views_rpc.DraftsByNamesView.as_view()), url(r"^persons/search/", views_rpc.RpcPersonSearch.as_view()), diff --git a/ietf/api/views_rpc_demo.py b/ietf/api/views_rpc_demo.py deleted file mode 100644 index ad969b0832..0000000000 --- a/ietf/api/views_rpc_demo.py +++ /dev/null @@ -1,98 +0,0 @@ -# Copyright The IETF Trust 2023-2025, All Rights Reserved - -from drf_spectacular.utils import extend_schema_view, extend_schema -from rest_framework import serializers, viewsets -from rest_framework.decorators import action -from rest_framework.response import Response - -from ietf.doc.factories import WgDraftFactory -from ietf.doc.models import Document -from ietf.person.factories import PersonFactory -from ietf.person.models import Person - - -class DemoPersonCreateSerializer(serializers.Serializer): - name = serializers.CharField(max_length=255) - - -class DemoPersonSerializer(serializers.ModelSerializer): - person_pk = serializers.IntegerField(source="pk") - - class Meta: - model = Person - fields = ["user_id", "person_pk"] - - -class DemoDraftCreateSerializer(serializers.Serializer): - name = serializers.CharField(max_length=255, required=True) - stream_id = serializers.CharField(default="ietf") - rev = serializers.CharField(default=None) - states = serializers.DictField(child=serializers.CharField(), default=None) - - -class DemoDraftSerializer(serializers.ModelSerializer): - doc_id = serializers.IntegerField(source="pk") - - class Meta: - model = Document - fields = ["doc_id", "name"] - - -@extend_schema_view( - create_demo_person=extend_schema( - operation_id="create_demo_person", - summary="Build a datatracker Person for RPC demo purposes", - description="returns a datatracker User id for a person created with the given name", - request=DemoPersonCreateSerializer, - responses=DemoPersonSerializer, - ), - create_demo_draft=extend_schema( - operation_id="create_demo_draft", - summary="Build a datatracker WG draft for RPC demo purposes", - description="returns a datatracker document id for a draft created with the provided name and states. " - "The arguments, if present, are passed directly to the WgDraftFactory", - request=DemoDraftCreateSerializer, - responses=DemoDraftSerializer, - ), -) -class DemoViewSet(viewsets.ViewSet): - """SHOULD NOT MAKE IT INTO PRODUCTION""" - - api_key_endpoint = "ietf.api.views_rpc" - - @action(detail=False, methods=["post"]) - def create_demo_person(self, request): - """Helper for creating rpc demo objects - SHOULD NOT MAKE IT INTO PRODUCTION""" - request_params = DemoPersonCreateSerializer(request.data) - name = request_params.data["name"] - person = Person.objects.filter(name=name).first() or PersonFactory(name=name) - return Response(DemoPersonSerializer(person).data) - - @action(detail=False, methods=["post"]) - def create_demo_draft(self, request): - """Helper for creating rpc demo objects - SHOULD NOT MAKE IT INTO PRODUCTION""" - request_params = DemoDraftCreateSerializer(request.data) - name = request_params.data["name"] - rev = request_params.data["rev"] - stream_id = request_params.data["stream_id"] - states = request_params.data["states"] - doc = Document.objects.filter(name=name).first() - if not doc: - kwargs = {"name": name, "stream_id": stream_id} - if states: - kwargs["states"] = states - if rev: - kwargs["rev"] = rev - doc = WgDraftFactory( - **kwargs - ) # Yes, things may be a little strange if the stream isn't IETF, but until we need something different... - event_type = ( - "iesg_approved" if stream_id == "ietf" else "requested_publication" - ) - if not doc.docevent_set.filter( - type=event_type - ).exists(): # Not using get_or_create here on purpose - these are wobbly facades we're creating - doc.docevent_set.create( - type=event_type, by_id=1, desc="Sent off to the RPC" - ) - return Response(DemoDraftSerializer(doc).data)