new request statues events should be associated with latest revision
This commit is contained in:
parent
59fdad8554
commit
1e0523ebf6
@ -0,0 +1,30 @@
|
||||
"""add relationship between revision and status event
|
||||
|
||||
Revision ID: e66a49285f23
|
||||
Revises: 090e1bd0d7ce
|
||||
Create Date: 2018-09-04 14:01:31.548665
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'e66a49285f23'
|
||||
down_revision = '090e1bd0d7ce'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.add_column('request_status_events', sa.Column('request_revision_id', postgresql.UUID(as_uuid=True), nullable=False))
|
||||
op.create_foreign_key(None, 'request_status_events', 'request_revisions', ['request_revision_id'], ['id'])
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'request_status_events', type_='foreignkey')
|
||||
op.drop_column('request_status_events', 'request_revision_id')
|
||||
# ### end Alembic commands ###
|
@ -143,7 +143,9 @@ class Requests(object):
|
||||
|
||||
@classmethod
|
||||
def set_status(cls, request: Request, status: RequestStatus):
|
||||
status_event = RequestStatusEvent(new_status=status)
|
||||
status_event = RequestStatusEvent(
|
||||
new_status=status, revision=request.latest_revision
|
||||
)
|
||||
request.status_events.append(status_event)
|
||||
return request
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
from enum import Enum
|
||||
from sqlalchemy import Column, func, ForeignKey, Enum as SQLAEnum
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.types import DateTime, BigInteger
|
||||
from sqlalchemy.schema import Sequence
|
||||
from sqlalchemy.dialects.postgresql import UUID
|
||||
@ -31,6 +32,8 @@ class RequestStatusEvent(Base):
|
||||
sequence = Column(
|
||||
BigInteger, Sequence("request_status_events_sequence_seq"), nullable=False
|
||||
)
|
||||
request_revision_id = Column(ForeignKey("request_revisions.id"), nullable=False)
|
||||
revision = relationship("RequestRevision")
|
||||
|
||||
@property
|
||||
def displayname(self):
|
||||
|
@ -66,7 +66,9 @@ def test_should_allow_submission():
|
||||
assert Requests.should_allow_submission(new_request)
|
||||
|
||||
RequestStatusEventFactory.create(
|
||||
request=new_request, new_status=RequestStatus.CHANGES_REQUESTED
|
||||
request=new_request,
|
||||
new_status=RequestStatus.CHANGES_REQUESTED,
|
||||
revision=new_request.latest_revision,
|
||||
)
|
||||
assert Requests.should_allow_submission(new_request)
|
||||
|
||||
@ -101,6 +103,7 @@ def test_status_count(session):
|
||||
RequestStatusEventFactory.create(
|
||||
sequence=2,
|
||||
request_id=request2.id,
|
||||
revision=request2.latest_revision,
|
||||
new_status=RequestStatus.PENDING_FINANCIAL_VERIFICATION,
|
||||
)
|
||||
|
||||
@ -169,3 +172,9 @@ def test_update_financial_verification_with_invalid_task_order():
|
||||
request.body["financial_verification"]["task_order_number"]
|
||||
== request_financial_data["task_order_number"]
|
||||
)
|
||||
|
||||
|
||||
def test_set_status_sets_revision():
|
||||
request = RequestFactory.create()
|
||||
Requests.set_status(request, RequestStatus.APPROVED)
|
||||
assert request.latest_revision == request.status_events[-1].revision
|
||||
|
@ -56,17 +56,28 @@ class RequestFactory(factory.alchemy.SQLAlchemyModelFactory):
|
||||
model = Request
|
||||
|
||||
id = factory.Sequence(lambda x: uuid4())
|
||||
status_events = factory.RelatedFactory(
|
||||
RequestStatusEventFactory, "request", new_status=RequestStatus.STARTED
|
||||
)
|
||||
creator = factory.SubFactory(UserFactory)
|
||||
revisions = factory.LazyAttribute(
|
||||
lambda r: [RequestFactory.create_initial_revision(r)]
|
||||
)
|
||||
status_events = factory.RelatedFactory(
|
||||
RequestStatusEventFactory,
|
||||
"request",
|
||||
new_status=RequestStatus.STARTED,
|
||||
revision=factory.LazyAttribute(lambda se: se.factory_parent.revisions[-1]),
|
||||
)
|
||||
|
||||
class Params:
|
||||
initial_revision = None
|
||||
|
||||
@classmethod
|
||||
def create_initial_status_event(cls, request):
|
||||
return RequestStatusEventFactory(
|
||||
request=request,
|
||||
new_status=RequestStatus.STARTED,
|
||||
revision=request.revisions,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def create_initial_revision(cls, request, dollar_value=1000000):
|
||||
user = request.creator
|
||||
|
Loading…
x
Reference in New Issue
Block a user