From 916caa1214f81bb15bd326f9b3ed6431440b0ffa Mon Sep 17 00:00:00 2001
From: "Janet L. Goldstein" <jgoldste@nrao.edu>
Date: Wed, 12 Jan 2022 16:45:41 -0700
Subject: [PATCH] WS-858: fix bugs in `create_follow_on_capability_request`.
 TODO next: fix unit test

---
 .../services/capability-request.service.ts    |  3 +-
 .../capability/views/capability_request.py    | 32 +++++++++++--------
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/apps/web/src/app/workspaces/services/capability-request.service.ts b/apps/web/src/app/workspaces/services/capability-request.service.ts
index e59f035d1..b9400abf4 100644
--- a/apps/web/src/app/workspaces/services/capability-request.service.ts
+++ b/apps/web/src/app/workspaces/services/capability-request.service.ts
@@ -113,8 +113,7 @@ export class CapabilityRequestService {
   }
 
   /**
-   * Add file to latest version of capability request
-   *
+   * Add file to selected capability request version
    * @param requestId  ID of request whose latest version will receive the file
    * @param filename  Name of file
    * @param content  Content of file
diff --git a/services/capability/capability/views/capability_request.py b/services/capability/capability/views/capability_request.py
index e14d93e77..e59e74d62 100644
--- a/services/capability/capability/views/capability_request.py
+++ b/services/capability/capability/views/capability_request.py
@@ -31,8 +31,6 @@ from pyramid.request import Request
 from pyramid.response import Response
 from pyramid.view import view_config
 
-from workspaces.capability.schema import CapabilityVersion
-
 
 @view_config(route_name="view_capability_request", renderer="json")
 def view_capability_request(request: Request) -> Response:
@@ -125,7 +123,7 @@ def create_capability_request(request: Request) -> Response:
 
 
 @view_config(route_name="create_follow_on_capability_request", renderer="json")
-def create_follow_on_capability_request(request: Request, version: CapabilityVersion) -> Response:
+def create_follow_on_capability_request(request: Request) -> Response:
     """
     Pyramid view that accepts a request to create a follow-on capability request from a previous request
     URL: capability/request/{request_id}/followon/{followon_type}
@@ -138,26 +136,32 @@ def create_follow_on_capability_request(request: Request, version: CapabilityVer
         requested
     """
 
-    request_id = request.matchdict["request_id"]
     followon_type = request.matchdict["followon_type"]
+    request_id = request.matchdict["request_id"]
+    capability_info = request.capability_info
+    capability_request = capability_info.lookup_capability_request(request_id)
 
-    previous_workflow_id = request_id
-
-    metadata_content = request.workflow_service.retrieve_file_content(previous_workflow_id, "metadata.json")
+    current_version = capability_request.current_version
+    parameters = current_version.parameters
+    user_email = parameters["user_email"]
+    version_number = request.matchdict["version"]
 
+    previous_workflow_id = current_version.current_execution.current_workflow_request_id
+    metadata_content = request.workflow_service.retrieve_file_content(
+        followon_type, previous_workflow_id, "metadata.json"
+    )
     metadata = json.loads(metadata_content)
     cms_path = metadata["destinationDirectory"] + "/working"
     sdm_id = metadata["fileSetIds"][0] if isinstance(metadata["fileSetIds"], list) else metadata["fileSetIds"]
 
     new_capability_request = request.capability_info.create_capability_request(
-        followon_type,
+        followon_type=followon_type,
         parameters={
-            "cms_path": cms_path,
-            "sdmId": sdm_id,
-            "user_email": "jgoldste@nrao.edu",
-            "version": version.version_number,
+            "user_email": user_email,
+            "version": version_number,
             "previous_workflow_request_id": previous_workflow_id,
-            "capability_name": version.capability_name,
+            "sdm_id": sdm_id,
+            "cms_path": cms_path,
         },
     )
     return Response(json_body=new_capability_request.__json__())
@@ -180,7 +184,7 @@ def edit_capability_request(request: Request) -> Response:
 @view_config(route_name="create_and_submit_capability_request", renderer="json")
 def create_and_submit_capability_request(request: Request) -> Response:
     """
-    Pyramid view to reate and submit a capability request
+    Pyramid view to create and submit a capability request
 
     :param request: dummy POST request
     :return:
-- 
GitLab