diff --git a/ietf/api/urls.py b/ietf/api/urls.py index 772cf59d09..f53bcdce5e 100644 --- a/ietf/api/urls.py +++ b/ietf/api/urls.py @@ -64,6 +64,7 @@ url(r'^rpc/persons/$', api_views.rpc_persons), url(r'^rpc/doc/submitted_to_rpc/$', api_views.submitted_to_rpc), url(r'^rpc/person/create_demo_person/$', api_views.create_demo_person), + url(r'^rpc/doc/create_demo_draft/$', api_views.create_demo_draft), ] diff --git a/ietf/api/views.py b/ietf/api/views.py index ea1aa5da33..825b469f52 100644 --- a/ietf/api/views.py +++ b/ietf/api/views.py @@ -31,11 +31,12 @@ import debug # pyflakes:ignore import ietf -from ietf.person.factories import PersonFactory +from ietf.person.factories import PersonFactory # DO NOT MERGE INTO MAIN from ietf.person.models import Person, Email from ietf.api import _api_list from ietf.api.serializer import JsonExportMixin from ietf.api.ietf_utils import is_valid_token +from ietf.doc.factories import WgDraftFactory # DO NOT MERGE INTO MAIN from ietf.doc.models import Document from ietf.doc.utils import fuzzy_find_documents from ietf.ietfauth.views import send_account_creation_email @@ -505,4 +506,34 @@ def create_demo_person(request): person = PersonFactory(name=name) - return JsonResponse({"user_id":person.user.pk,"person_pk":person.pk}, status=201) + return JsonResponse({"user_id":person.user.pk,"person_pk":person.pk}) + +@csrf_exempt +def create_demo_draft(request): + """ Helper for creating rpc demo objects - SHOULD NOT MAKE IT INTO PRODUCTION + + """ + authtoken = request.META.get("HTTP_X_API_KEY", None) + if authtoken is None or not is_valid_token("ietf.api.views.submitted_to_rpc", authtoken): + return HttpResponseForbidden() + if request.method != "POST": + return HttpResponseForbidden() + + request_params = json.loads(request.body) + name = request_params.get("name") + states = request_params.get("states") + exists = False + doc = None + if not name: + return HttpResponse(status=400, content="Name is required") + doc = Document.objects.filter(name=name).first() + if doc: + exists = True + else: + kwargs = {"name": name} + if states: + kwargs["states"] = states + doc = WgDraftFactory(**kwargs) + return JsonResponse({ "doc_id":doc.pk, "name":doc.name }) + + diff --git a/rpcapi.yaml b/rpcapi.yaml index f6a0db088b..383fdb6541 100644 --- a/rpcapi.yaml +++ b/rpcapi.yaml @@ -65,7 +65,7 @@ paths: name: type: string responses: - '201': + '200': description: OK content: application/json: @@ -77,6 +77,40 @@ paths: person_pk: type: integer + /doc/create_demo_draft/: + post: + operationId: create_demo_draft + summary: Build a datatraker 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 + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + states: + type: array + items: + type: array + items: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + properties: + doc_id: + type: integer + name: + type: string +s + /doc/submitted_to_rpc: get: operationId: submitted_to_rpc