diff --git a/alembic/versions/ea8b5681b37c_make_user_id_nullable_for_request_review.py b/alembic/versions/ea8b5681b37c_make_user_id_nullable_for_request_review.py new file mode 100644 index 00000000..4d204355 --- /dev/null +++ b/alembic/versions/ea8b5681b37c_make_user_id_nullable_for_request_review.py @@ -0,0 +1,32 @@ +"""make user_id nullable for request_review + +Revision ID: ea8b5681b37c +Revises: e1081cf01780 +Create Date: 2018-11-05 14:42:42.175939 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = 'ea8b5681b37c' +down_revision = 'e1081cf01780' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('request_reviews', 'user_id', + existing_type=postgresql.UUID(), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('request_reviews', 'user_id', + existing_type=postgresql.UUID(), + nullable=False) + # ### end Alembic commands ### diff --git a/atst/domain/requests/requests.py b/atst/domain/requests/requests.py index 4f8ed46e..65322a2b 100644 --- a/atst/domain/requests/requests.py +++ b/atst/domain/requests/requests.py @@ -62,13 +62,12 @@ class Requests(object): def submit(cls, request): request = Requests.set_status(request, RequestStatus.SUBMITTED) - new_status = None if Requests.should_auto_approve(request): - new_status = RequestStatus.PENDING_FINANCIAL_VERIFICATION + request = Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION) + Requests._add_review(None, request, {"comment": "Auto-approval for dollar value below {}".format(Requests.AUTO_APPROVE_THRESHOLD)}) else: - new_status = RequestStatus.PENDING_CCPO_ACCEPTANCE + request = Requests.set_status(request, RequestStatus.PENDING_CCPO_ACCEPTANCE) - request = Requests.set_status(request, new_status) request = RequestsQuery.add_and_commit(request) return request diff --git a/atst/models/request_review.py b/atst/models/request_review.py index 2bc7587c..4354aae6 100644 --- a/atst/models/request_review.py +++ b/atst/models/request_review.py @@ -10,7 +10,7 @@ class RequestReview(Base, mixins.TimestampsMixin, mixins.AuditableMixin): id = types.Id() status = relationship("RequestStatusEvent", uselist=False, back_populates="review") - user_id = Column(ForeignKey("users.id"), nullable=False) + user_id = Column(ForeignKey("users.id")) reviewer = relationship("User") comment = Column(String) @@ -23,7 +23,10 @@ class RequestReview(Base, mixins.TimestampsMixin, mixins.AuditableMixin): @property def full_name_reviewer(self): - return self.reviewer.full_name + if self.reviewer: + return self.reviewer.full_name + else: + return "System" @property def full_name_mao(self): diff --git a/tests/domain/test_requests.py b/tests/domain/test_requests.py index 23e2122e..aeb01ff0 100644 --- a/tests/domain/test_requests.py +++ b/tests/domain/test_requests.py @@ -44,6 +44,8 @@ def test_auto_approve_less_than_1m(): request = Requests.submit(new_request) assert request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION + assert request.reviews + assert request.reviews[0].full_name_reviewer == "System" def test_dont_auto_approve_if_dollar_value_is_1m_or_above():