118 lines
3.8 KiB
Python
118 lines
3.8 KiB
Python
import random
|
|
import string
|
|
import factory
|
|
from uuid import uuid4
|
|
|
|
from atst.forms.data import SERVICE_BRANCHES
|
|
from atst.models.request import Request
|
|
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
|
|
from atst.models.pe_number import PENumber
|
|
from atst.models.task_order import TaskOrder
|
|
from atst.models.user import User
|
|
from atst.models.role import Role
|
|
from atst.models.workspace import Workspace
|
|
from atst.domain.roles import Roles
|
|
|
|
|
|
class RoleFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = Role
|
|
|
|
permissions = []
|
|
|
|
|
|
class UserFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = User
|
|
|
|
id = factory.Sequence(lambda x: uuid4())
|
|
email = factory.Faker("email")
|
|
first_name = factory.Faker("first_name")
|
|
last_name = factory.Faker("last_name")
|
|
atat_role = factory.SubFactory(RoleFactory)
|
|
dod_id = factory.LazyFunction(lambda: "".join(random.choices(string.digits, k=10)))
|
|
|
|
@classmethod
|
|
def from_atat_role(cls, atat_role_name, **kwargs):
|
|
role = Roles.get(atat_role_name)
|
|
return cls.create(atat_role=role, **kwargs)
|
|
|
|
class RequestStatusEventFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = RequestStatusEvent
|
|
|
|
id = factory.Sequence(lambda x: uuid4())
|
|
sequence = 1
|
|
|
|
|
|
class RequestFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = Request
|
|
|
|
id = factory.Sequence(lambda x: uuid4())
|
|
status_events = factory.RelatedFactory(
|
|
RequestStatusEventFactory, "request", new_status=RequestStatus.STARTED
|
|
)
|
|
creator = factory.SubFactory(UserFactory)
|
|
body = factory.LazyAttribute(lambda r: RequestFactory.build_request_body(r.creator))
|
|
|
|
@classmethod
|
|
def build_request_body(cls, user, dollar_value=1000000):
|
|
return {
|
|
"primary_poc": {
|
|
"am_poc": False,
|
|
"dodid_poc": user.dod_id,
|
|
"email_poc": user.email,
|
|
"fname_poc": user.first_name,
|
|
"lname_poc": user.last_name,
|
|
},
|
|
"details_of_use": {
|
|
"jedi_usage": "adf",
|
|
"start_date": "2018-08-08",
|
|
"cloud_native": "yes",
|
|
"dollar_value": dollar_value,
|
|
"dod_component": SERVICE_BRANCHES[2][1],
|
|
"data_transfers": "Less than 100GB",
|
|
"expected_completion_date": "Less than 1 month",
|
|
"jedi_migration": "yes",
|
|
"num_software_systems": 1,
|
|
"number_user_sessions": 2,
|
|
"average_daily_traffic": 1,
|
|
"engineering_assessment": "yes",
|
|
"technical_support_team": "yes",
|
|
"estimated_monthly_spend": 100,
|
|
"average_daily_traffic_gb": 4,
|
|
"rationalization_software_systems": "yes",
|
|
"organization_providing_assistance": "In-house staff",
|
|
},
|
|
"information_about_you": {
|
|
"citizenship": "United States",
|
|
"designation": "military",
|
|
"phone_number": "1234567890",
|
|
"email_request": user.email,
|
|
"fname_request": user.first_name,
|
|
"lname_request": user.last_name,
|
|
"service_branch": SERVICE_BRANCHES[1][1],
|
|
"date_latest_training": "2018-08-06",
|
|
},
|
|
}
|
|
|
|
|
|
class PENumberFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = PENumber
|
|
|
|
|
|
class TaskOrderFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = TaskOrder
|
|
|
|
|
|
class WorkspaceFactory(factory.alchemy.SQLAlchemyModelFactory):
|
|
class Meta:
|
|
model = Workspace
|
|
|
|
request = factory.SubFactory(RequestFactory)
|
|
# name it the same as the request ID by default
|
|
name = factory.LazyAttribute(lambda w: w.request.id)
|