Fix task order creation

This commit is contained in:
richard-dds
2018-10-22 16:16:58 -04:00
parent a1735874e6
commit 39bbfb745a
6 changed files with 81 additions and 29 deletions

View File

@@ -5,17 +5,12 @@ from atst.models.request_revision import RequestRevision
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
from atst.models.request_review import RequestReview
from atst.models.request_internal_comment import RequestInternalComment
from atst.utils import deep_merge
from atst.utils import deep_merge, pick
from .query import RequestsQuery
from .authorization import RequestsAuthorization
def pick(keys, d):
_keys = set(keys)
return {k: v for (k, v) in d.items() if k in _keys}
def create_revision_from_request_body(body):
body = {k: v for p in body.values() for k, v in p.items()}
DATES = ["start_date", "date_latest_training"]
@@ -79,7 +74,10 @@ class Requests(object):
@classmethod
def update(cls, request_id, request_delta):
request = RequestsQuery.get_with_lock(request_id)
return Requests._update(request, request_delta)
@classmethod
def _update(cls, request, request_delta):
new_body = deep_merge(request_delta, request.body)
revision = create_revision_from_request_body(new_body)
request.revisions.append(revision)
@@ -183,7 +181,7 @@ class Requests(object):
if task_order:
request.task_order = task_order
request = Requests.update(request.id, {"financial_verification": delta})
request = Requests._update(request, {"financial_verification": delta})
return request

View File

@@ -5,6 +5,7 @@ from atst.database import db
from atst.models.task_order import TaskOrder, Source, FundingType
from atst.models.attachment import Attachment
from .exceptions import NotFoundError
from atst.utils import drop, update_obj
class TaskOrders(object):
@@ -38,7 +39,8 @@ class TaskOrders(object):
@classmethod
def create(cls, **kwargs):
task_order = TaskOrder(**kwargs)
to_data = drop(["source"], kwargs)
task_order = TaskOrder(source=Source.MANUAL, **to_data)
db.session.add(task_order)
db.session.commit()
@@ -75,3 +77,10 @@ class TaskOrders(object):
return TaskOrders.create(
**data, number=number, pdf=attachment, source=Source.MANUAL
)
@classmethod
def update(cls, task_order, dct):
updated = update_obj(task_order, dct)
db.session.add(updated)
db.session.commit()
return updated