Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ietf/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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),


]
Expand Down
35 changes: 33 additions & 2 deletions ietf/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 })


36 changes: 35 additions & 1 deletion rpcapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ paths:
name:
type: string
responses:
'201':
'200':
description: OK
content:
application/json:
Expand All @@ -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
Expand Down