Merge pull request #222 from dod-ccpo/create-workspace-auto
Create a workspace automatically if TO is found in EDA
This commit is contained in:
commit
a85f003cf9
@ -99,9 +99,6 @@ class Requests(object):
|
||||
@classmethod
|
||||
def update(cls, request_id, request_delta):
|
||||
request = Requests._get_with_lock(request_id)
|
||||
if not request:
|
||||
return
|
||||
|
||||
request = Requests._merge_body(request, request_delta)
|
||||
|
||||
db.session.add(request)
|
||||
@ -122,7 +119,7 @@ class Requests(object):
|
||||
)
|
||||
|
||||
except NoResultFound:
|
||||
return
|
||||
raise NotFoundError()
|
||||
|
||||
@classmethod
|
||||
def _merge_body(cls, request, request_delta):
|
||||
@ -236,8 +233,6 @@ WHERE requests_with_status.status = :status
|
||||
@classmethod
|
||||
def update_financial_verification(cls, request_id, financial_data):
|
||||
request = Requests._get_with_lock(request_id)
|
||||
if not request:
|
||||
return
|
||||
|
||||
request_data = financial_data.copy()
|
||||
task_order_data = {
|
||||
@ -273,12 +268,10 @@ WHERE requests_with_status.status = :status
|
||||
return request
|
||||
|
||||
@classmethod
|
||||
def submit_financial_verification(cls, request_id):
|
||||
request = Requests._get_with_lock(request_id)
|
||||
if not request:
|
||||
return
|
||||
|
||||
def submit_financial_verification(cls, request):
|
||||
Requests.set_status(request, RequestStatus.PENDING_CCPO_APPROVAL)
|
||||
|
||||
db.session.add(request)
|
||||
db.session.commit()
|
||||
|
||||
return request
|
||||
|
@ -17,6 +17,8 @@ class Request(Base):
|
||||
"RequestStatusEvent", backref="request", order_by="RequestStatusEvent.sequence"
|
||||
)
|
||||
|
||||
workspace = relationship("Workspace", uselist=False, backref="request")
|
||||
|
||||
user_id = Column(ForeignKey("users.id"), nullable=False)
|
||||
creator = relationship("User")
|
||||
|
||||
@ -35,3 +37,13 @@ class Request(Base):
|
||||
def annual_spend(self):
|
||||
monthly = self.body.get("details_of_use", {}).get("estimated_monthly_spend", 0)
|
||||
return monthly * 12
|
||||
|
||||
@property
|
||||
def financial_verification(self):
|
||||
return self.body.get("financial_verification")
|
||||
|
||||
@property
|
||||
def is_financially_verified(self):
|
||||
if self.task_order:
|
||||
return self.task_order.verified
|
||||
return False
|
||||
|
@ -35,3 +35,7 @@ class TaskOrder(Base):
|
||||
|
||||
attachment_id = Column(ForeignKey("attachments.id"))
|
||||
pdf = relationship("Attachment")
|
||||
|
||||
@property
|
||||
def verified(self):
|
||||
return self.source == Source.EDA
|
||||
|
@ -43,7 +43,6 @@ class Workspace(Base, TimestampsMixin):
|
||||
id = Id()
|
||||
name = Column(String, unique=True)
|
||||
request_id = Column(ForeignKey("requests.id"), nullable=False)
|
||||
request = relationship("Request")
|
||||
projects = relationship("Project", back_populates="workspace")
|
||||
roles = relationship("WorkspaceRole")
|
||||
|
||||
|
@ -40,8 +40,9 @@ def update_financial_verification(request_id):
|
||||
)
|
||||
updated_request = Requests.update_financial_verification(request_id, form.data)
|
||||
if valid:
|
||||
Requests.submit_financial_verification(request_id)
|
||||
new_workspace = Requests.approve_and_create_workspace(updated_request)
|
||||
submitted_request = Requests.submit_financial_verification(updated_request)
|
||||
if submitted_request.is_financially_verified:
|
||||
new_workspace = Requests.approve_and_create_workspace(submitted_request)
|
||||
return redirect(
|
||||
url_for(
|
||||
"workspaces.new_project",
|
||||
@ -49,6 +50,12 @@ def update_financial_verification(request_id):
|
||||
newWorkspace=True,
|
||||
)
|
||||
)
|
||||
else:
|
||||
return redirect(
|
||||
url_for(
|
||||
"requests.requests_index", pendingFinancialVerification=True
|
||||
)
|
||||
)
|
||||
|
||||
else:
|
||||
form.reset()
|
||||
@ -59,8 +66,3 @@ def update_financial_verification(request_id):
|
||||
else:
|
||||
form.reset()
|
||||
return render_template("requests/financial_verification.html", **rerender_args)
|
||||
|
||||
|
||||
@requests_bp.route("/requests/financial_verification_submitted")
|
||||
def financial_verification_submitted():
|
||||
return render_template("requests/financial_verification_submitted.html")
|
||||
|
@ -22,6 +22,7 @@ def map_request(request):
|
||||
)
|
||||
|
||||
return {
|
||||
"workspace_id": request.workspace.id if request.workspace else None,
|
||||
"order_id": request.id,
|
||||
"is_new": is_new,
|
||||
"status": request.status_displayname,
|
||||
|
@ -116,7 +116,15 @@
|
||||
<td></td>
|
||||
{% endif %}
|
||||
<td>{{ r['annual_usage'] | dollars }}</td>
|
||||
<td>{{ r['status'] }}</td>
|
||||
<td>
|
||||
{% if r.status == 'Approved' %}
|
||||
<a href="{{ url_for('workspaces.workspace_projects', workspace_id=r.workspace_id) }}">
|
||||
{{ r.status }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ r.status }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
@ -128,7 +128,7 @@ class TestPENumberInForm:
|
||||
response = self.submit_data(client, data, extended=True)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert "/projects/new" in response.headers.get("Location")
|
||||
assert "/requests" in response.headers.get("Location")
|
||||
|
||||
def test_submit_invalid_extended_financial_form(
|
||||
self, monkeypatch, user_session, client, extended_financial_verification_data
|
||||
|
Loading…
x
Reference in New Issue
Block a user