Source code for ace.centralize.models.requirement

"""
    Requirement models for Centralize

    Models for requirement info and entity links.

    Based on the Requirement GraphQL schema (CreateRequirementInfoInput,
    UpdateRequirementInfoInput) and the Lead schema (EntityLinkCreateParamsInput).
"""
from datetime import date
from typing import List, Optional

from ace.centralize.models.base import ModelBase


# ============================================= REQUIREMENT INFO =======================================================

[docs] class CreateRequirementInfoInput(ModelBase): """Maps to CreateRequirementInfoInput in GraphQL schema."""
[docs] def __init__( self, priority_id: int, requirement_id: int, status_id: int, applies_to_party_id: Optional[int] = None, cancelled_date: Optional[date] = None, completed_date: Optional[date] = None, due_date: Optional[date] = None, entity_id: Optional[int] = None, entity_type_id: Optional[str] = None, fulfilled_date: Optional[date] = None, fulfiller_party_id: Optional[int] = None, hold_date: Optional[date] = None, internal_reference_number: Optional[str] = None, received_date: Optional[date] = None, requested_date: Optional[date] = None, requester_party_id: Optional[int] = None, requirement_description: Optional[str] = None, source_party_id: Optional[int] = None, source_reference_number: Optional[str] = None, status_change_date: Optional[date] = None, status_reason_description: Optional[str] = None, sub_status_change_date: Optional[date] = None, sub_status_id: Optional[int] = None, ): self.priorityId = priority_id self.requirementId = requirement_id self.statusId = status_id if applies_to_party_id is not None: self.appliesToPartyId = applies_to_party_id if cancelled_date is not None: self.cancelledDate = cancelled_date if completed_date is not None: self.completedDate = completed_date if due_date is not None: self.dueDate = due_date if entity_id is not None: self.entityId = entity_id if entity_type_id is not None: self.entityTypeId = entity_type_id if fulfilled_date is not None: self.fulfilledDate = fulfilled_date if fulfiller_party_id is not None: self.fulfillerPartyId = fulfiller_party_id if hold_date is not None: self.holdDate = hold_date if internal_reference_number is not None: self.internalReferenceNumber = internal_reference_number if received_date is not None: self.receivedDate = received_date if requested_date is not None: self.requestedDate = requested_date if requester_party_id is not None: self.requesterPartyId = requester_party_id if requirement_description is not None: self.requirementDescription = requirement_description if source_party_id is not None: self.sourcePartyId = source_party_id if source_reference_number is not None: self.sourceReferenceNumber = source_reference_number if status_change_date is not None: self.statusChangeDate = status_change_date if status_reason_description is not None: self.statusReasonDescription = status_reason_description if sub_status_change_date is not None: self.subStatusChangeDate = sub_status_change_date if sub_status_id is not None: self.subStatusId = sub_status_id
# Backward-compatible alias CreateRequirementInfoObject = CreateRequirementInfoInput
[docs] class UpdateRequirementInfoInput(ModelBase): """Maps to UpdateRequirementInfoInput in GraphQL schema."""
[docs] def __init__( self, requirement_info_id: int, applies_to_party_id: Optional[int] = None, cancelled_date: Optional[date] = None, completed_date: Optional[date] = None, due_date: Optional[date] = None, entity_id: Optional[int] = None, entity_type_id: Optional[str] = None, fulfilled_date: Optional[date] = None, fulfiller_party_id: Optional[int] = None, hold_date: Optional[date] = None, internal_reference_number: Optional[str] = None, priority_id: Optional[int] = None, received_date: Optional[date] = None, requested_date: Optional[date] = None, requester_party_id: Optional[int] = None, requirement_description: Optional[str] = None, requirement_id: Optional[int] = None, source_party_id: Optional[int] = None, source_reference_number: Optional[str] = None, status_change_date: Optional[date] = None, status_id: Optional[int] = None, status_reason_description: Optional[str] = None, sub_status_change_date: Optional[date] = None, sub_status_id: Optional[int] = None, ): self.requirementInfoId = requirement_info_id if applies_to_party_id is not None: self.appliesToPartyId = applies_to_party_id if cancelled_date is not None: self.cancelledDate = cancelled_date if completed_date is not None: self.completedDate = completed_date if due_date is not None: self.dueDate = due_date if entity_id is not None: self.entityId = entity_id if entity_type_id is not None: self.entityTypeId = entity_type_id if fulfilled_date is not None: self.fulfilledDate = fulfilled_date if fulfiller_party_id is not None: self.fulfillerPartyId = fulfiller_party_id if hold_date is not None: self.holdDate = hold_date if internal_reference_number is not None: self.internalReferenceNumber = internal_reference_number if priority_id is not None: self.priorityId = priority_id if received_date is not None: self.receivedDate = received_date if requested_date is not None: self.requestedDate = requested_date if requester_party_id is not None: self.requesterPartyId = requester_party_id if requirement_description is not None: self.requirementDescription = requirement_description if requirement_id is not None: self.requirementId = requirement_id if source_party_id is not None: self.sourcePartyId = source_party_id if source_reference_number is not None: self.sourceReferenceNumber = source_reference_number if status_change_date is not None: self.statusChangeDate = status_change_date if status_id is not None: self.statusId = status_id if status_reason_description is not None: self.statusReasonDescription = status_reason_description if sub_status_change_date is not None: self.subStatusChangeDate = sub_status_change_date if sub_status_id is not None: self.subStatusId = sub_status_id
# Backward-compatible alias UpdateRequirementInfoObject = UpdateRequirementInfoInput # ============================================== ENTITY LINKS ========================================================== # Note: EntityLink types are used by the Lead schema, not the Requirement schema, # but are kept here as they were originally in this module.
[docs] class EntityLinkCreateParamsInput(ModelBase): """Maps to EntityLinkCreateParamsInput in GraphQL schema (Lead subgraph)."""
[docs] def __init__( self, related_entity_type_id: str, related_entity_id: int, entity_type_name: Optional[str] = None, is_original: Optional[bool] = None, relation_role_id: int = 1, shared_percent: Optional[float] = None, effective_date: Optional[date] = None, expiration_date: Optional[date] = None, status_id: Optional[int] = None, ): self.relatedEntityTypeId = related_entity_type_id self.relatedEntityId = related_entity_id if entity_type_name is not None: self.entityTypeName = entity_type_name if is_original is not None: self.isOriginal = is_original if relation_role_id is not None: self.relationRoleId = relation_role_id if shared_percent is not None: self.sharedPercent = shared_percent if effective_date is not None: self.effectiveDate = effective_date if expiration_date is not None: self.expirationDate = expiration_date if status_id is not None: self.statusId = status_id
[docs] class UpdateEntityLinkParamsInput(ModelBase): """Maps to EntityLinksUpdateParamsInput in GraphQL schema (Lead subgraph)."""
[docs] def __init__( self, entity_link_to_add: Optional[List[EntityLinkCreateParamsInput]] = None, ): if entity_link_to_add is not None: self.entityLinksToAdd = entity_link_to_add