Allow adding an internal comment on a request
This commit is contained in:
parent
99a745904f
commit
e0e51d8c35
@ -1,5 +1,5 @@
|
|||||||
from wtforms.fields import TextAreaField
|
from wtforms.fields import TextAreaField
|
||||||
from wtforms.validators import Optional
|
from wtforms.validators import InputRequired
|
||||||
|
|
||||||
from .forms import ValidatedForm
|
from .forms import ValidatedForm
|
||||||
|
|
||||||
@ -7,6 +7,7 @@ from .forms import ValidatedForm
|
|||||||
class InternalCommentForm(ValidatedForm):
|
class InternalCommentForm(ValidatedForm):
|
||||||
text = TextAreaField(
|
text = TextAreaField(
|
||||||
"CCPO Internal Notes",
|
"CCPO Internal Notes",
|
||||||
|
default="",
|
||||||
description="Add comments or notes for internal CCPO reference and follow-up here.<strong>These comments <em>will not</em> be visible to the person making the JEDI request.</strong>",
|
description="Add comments or notes for internal CCPO reference and follow-up here.<strong>These comments <em>will not</em> be visible to the person making the JEDI request.</strong>",
|
||||||
validators=[Optional()],
|
validators=[InputRequired()],
|
||||||
)
|
)
|
||||||
|
@ -14,3 +14,4 @@ class RequestInternalComment(Base, mixins.TimestampsMixin):
|
|||||||
user = relationship("User")
|
user = relationship("User")
|
||||||
|
|
||||||
request_id = Column(ForeignKey("requests.id", ondelete="CASCADE"), nullable=False)
|
request_id = Column(ForeignKey("requests.id", ondelete="CASCADE"), nullable=False)
|
||||||
|
request = relationship("Request")
|
||||||
|
@ -30,7 +30,7 @@ def render_approval(request, form=None):
|
|||||||
mo_data = map_ccpo_authorizing(g.current_user)
|
mo_data = map_ccpo_authorizing(g.current_user)
|
||||||
form = CCPOReviewForm(data=mo_data)
|
form = CCPOReviewForm(data=mo_data)
|
||||||
|
|
||||||
internal_comment_form = InternalCommentForm(text=request.internal_comments_text)
|
internal_comment_form = InternalCommentForm()
|
||||||
|
|
||||||
# Dummy internal comments
|
# Dummy internal comments
|
||||||
comments = [
|
comments = [
|
||||||
@ -54,7 +54,7 @@ def render_approval(request, form=None):
|
|||||||
current_status=request.status.value,
|
current_status=request.status.value,
|
||||||
f=form or CCPOReviewForm(),
|
f=form or CCPOReviewForm(),
|
||||||
internal_comment_form=internal_comment_form,
|
internal_comment_form=internal_comment_form,
|
||||||
comments=comments,
|
comments=request.internal_comments,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -101,10 +101,10 @@ def task_order_pdf_download(request_id):
|
|||||||
|
|
||||||
@requests_bp.route("/requests/internal_comments/<string:request_id>", methods=["POST"])
|
@requests_bp.route("/requests/internal_comments/<string:request_id>", methods=["POST"])
|
||||||
def create_internal_comment(request_id):
|
def create_internal_comment(request_id):
|
||||||
# form = InternalCommentForm(http_request.form)
|
form = InternalCommentForm(http_request.form)
|
||||||
# if form.validate():
|
if form.validate():
|
||||||
# request = Requests.get(g.current_user, request_id)
|
request = Requests.get(g.current_user, request_id)
|
||||||
# Requests.update_internal_comments(g.current_user, request, form.data["text"])
|
Requests.add_internal_comment(g.current_user, request, form.data.get("text"))
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for("requests.approval", request_id=request_id, _anchor="ccpo-notes")
|
url_for("requests.approval", request_id=request_id, _anchor="ccpo-notes")
|
||||||
)
|
)
|
||||||
|
@ -51,8 +51,8 @@
|
|||||||
<li>
|
<li>
|
||||||
<article class='comment-log__log-item'>
|
<article class='comment-log__log-item'>
|
||||||
<div>
|
<div>
|
||||||
<h3 class='comment-log__log-item__header'>{{ comment.full_name_commenter }}</h3>
|
<h3 class='comment-log__log-item__header'>{{ comment.user.full_name }}</h3>
|
||||||
<p>{{ comment.message }}</p>
|
<p>{{ comment.text }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% set timestamp=comment.time_created | formattedDate("%Y-%m-%d %H:%M:%S %Z") %}
|
{% set timestamp=comment.time_created | formattedDate("%Y-%m-%d %H:%M:%S %Z") %}
|
||||||
<footer class='comment-log__log-item__timestamp'>
|
<footer class='comment-log__log-item__timestamp'>
|
||||||
|
@ -108,3 +108,39 @@ def test_can_submit_request_denial(client, user_session):
|
|||||||
)
|
)
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
assert request.status == RequestStatus.CHANGES_REQUESTED
|
assert request.status == RequestStatus.CHANGES_REQUESTED
|
||||||
|
|
||||||
|
|
||||||
|
def test_ccpo_user_can_comment_on_request(client, user_session):
|
||||||
|
user = UserFactory.from_atat_role("ccpo")
|
||||||
|
user_session(user)
|
||||||
|
request = RequestFactory.create_with_status(
|
||||||
|
status=RequestStatus.PENDING_CCPO_ACCEPTANCE
|
||||||
|
)
|
||||||
|
assert len(request.internal_comments) == 0
|
||||||
|
|
||||||
|
comment_text = "This is the greatest request in the history of requests"
|
||||||
|
comment_form_data = {"text": comment_text}
|
||||||
|
response = client.post(
|
||||||
|
url_for("requests.create_internal_comment", request_id=request.id),
|
||||||
|
data=comment_form_data,
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
assert len(request.internal_comments) == 1
|
||||||
|
assert request.internal_comments[0].text == comment_text
|
||||||
|
|
||||||
|
|
||||||
|
def test_other_user_cannot_comment_on_request(client, user_session):
|
||||||
|
user = UserFactory.create()
|
||||||
|
user_session(user)
|
||||||
|
request = RequestFactory.create_with_status(
|
||||||
|
status=RequestStatus.PENDING_CCPO_ACCEPTANCE
|
||||||
|
)
|
||||||
|
|
||||||
|
comment_text = "What is this even"
|
||||||
|
comment_form_data = {"text": comment_text}
|
||||||
|
response = client.post(
|
||||||
|
url_for("requests.create_internal_comment", request_id=request.id),
|
||||||
|
data=comment_form_data,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 404
|
||||||
|
Loading…
x
Reference in New Issue
Block a user