use python dates for request revisions, plus some cleanup

This commit is contained in:
dandds 2018-08-31 12:05:16 -04:00
parent cc7ddd9468
commit 326d330a40
4 changed files with 7 additions and 13 deletions

View File

@ -2,9 +2,8 @@ from enum import Enum
from sqlalchemy import exists, and_, exc from sqlalchemy import exists, and_, exc
from sqlalchemy.sql import text from sqlalchemy.sql import text
from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.orm.exc import NoResultFound
from sqlalchemy.orm.attributes import flag_modified
from werkzeug.datastructures import FileStorage from werkzeug.datastructures import FileStorage
import pendulum import dateutil
from atst.database import db from atst.database import db
from atst.domain.authz import Authorization from atst.domain.authz import Authorization
@ -20,11 +19,11 @@ from .exceptions import NotFoundError, UnauthorizedError
def create_revision_from_request_body(body): def create_revision_from_request_body(body):
body = {k: v for p in body.values() for k, v in p.items()} body = {k: v for p in body.values() for k, v in p.items()}
TIMESTAMPS = ["start_date", "date_latest_training"] DATES = ["start_date", "date_latest_training"]
coerced_timestamps = { coerced_timestamps = {
k: pendulum.parse(v) k: dateutil.parser.parse(v)
for k, v in body.items() for k, v in body.items()
if k in TIMESTAMPS and isinstance(v, str) if k in DATES and isinstance(v, str)
} }
body = {**body, **coerced_timestamps} body = {**body, **coerced_timestamps}
return RequestRevision(**body) return RequestRevision(**body)

View File

@ -8,6 +8,7 @@ from atst.models import Base
from atst.models.types import Id from atst.models.types import Id
from atst.models.request_status_event import RequestStatus from atst.models.request_status_event import RequestStatus
from atst.utils import deep_merge, first_or_none from atst.utils import deep_merge, first_or_none
from atst.models.request_revision import RequestRevision
def map_properties_to_dict(properties, instance): def map_properties_to_dict(properties, instance):

View File

@ -1,7 +1,5 @@
import pendulum
from sqlalchemy import ( from sqlalchemy import (
Column, Column,
func,
ForeignKey, ForeignKey,
String, String,
Boolean, Boolean,
@ -10,8 +8,6 @@ from sqlalchemy import (
BigInteger, BigInteger,
Sequence, Sequence,
) )
from sqlalchemy.types import DateTime
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from atst.models import Base from atst.models import Base

View File

@ -77,7 +77,7 @@ class RequestFactory(factory.alchemy.SQLAlchemyModelFactory):
fname_poc=user.first_name, fname_poc=user.first_name,
lname_poc=user.last_name, lname_poc=user.last_name,
jedi_usage="adf", jedi_usage="adf",
start_date=datetime.datetime(2018, 8, 8, tzinfo=datetime.timezone.utc), start_date=datetime.date(2018, 8, 8),
cloud_native="yes", cloud_native="yes",
dollar_value=dollar_value, dollar_value=dollar_value,
dod_component=SERVICE_BRANCHES[2][1], dod_component=SERVICE_BRANCHES[2][1],
@ -100,9 +100,7 @@ class RequestFactory(factory.alchemy.SQLAlchemyModelFactory):
fname_request=user.first_name, fname_request=user.first_name,
lname_request=user.last_name, lname_request=user.last_name,
service_branch=SERVICE_BRANCHES[1][1], service_branch=SERVICE_BRANCHES[1][1],
date_latest_training=datetime.datetime( date_latest_training=datetime.date(2018, 8, 6),
2018, 8, 6, tzinfo=datetime.timezone.utc
),
) )
data = ( data = (