Source code for ace.centralize.models.lead
"""
Lead models for Centralize
Models for leads and opportunities.
Based on the Lead GraphQL schema (CreateLeadInput, UpdateLeadInput,
CreateOpportunityInput, UpdateOpportunityInput)
"""
from datetime import date
from typing import List, Optional
from ace.centralize.models.base import ModelBase
# ================================================== OPPORTUNITY =======================================================
[docs]
class CreateOpportunityInput(ModelBase):
"""Maps to CreateOpportunityInput in GraphQL schema."""
[docs]
def __init__(
self,
priority_id: int,
closed_date: Optional[date] = None,
description: Optional[str] = None,
estimated_value: Optional[float] = None,
expected_closed_date: Optional[date] = None,
identified_by: Optional[str] = None,
identified_date: Optional[date] = None,
lead_id: Optional[int] = None,
on_hold_date: Optional[date] = None,
opportunity_number: Optional[str] = None,
opportunity_type_id: Optional[int] = None,
reference_number: Optional[str] = None,
risk_level_id: Optional[int] = None,
start_date: Optional[date] = None,
status_change_date: Optional[date] = None,
status_id: Optional[int] = None,
sub_status_change_date: Optional[date] = None,
sub_status_id: Optional[int] = None,
win_date: Optional[date] = None,
):
self.priorityId = priority_id
if closed_date is not None:
self.closedDate = closed_date
if description is not None:
self.description = description
if estimated_value is not None:
self.estimatedValue = estimated_value
if expected_closed_date is not None:
self.expectedClosedDate = expected_closed_date
if identified_by is not None:
self.identifiedBy = identified_by
if identified_date is not None:
self.identifiedDate = identified_date
if lead_id is not None:
self.leadId = lead_id
if on_hold_date is not None:
self.onHoldDate = on_hold_date
if opportunity_number is not None:
self.opportunityNumber = opportunity_number
if opportunity_type_id is not None:
self.opportunityTypeId = opportunity_type_id
if reference_number is not None:
self.referenceNumber = reference_number
if risk_level_id is not None:
self.riskLevelId = risk_level_id
if start_date is not None:
self.startDate = start_date
if status_change_date is not None:
self.statusChangeDate = status_change_date
if status_id is not None:
self.statusId = status_id
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
if win_date is not None:
self.winDate = win_date
[docs]
class UpdateOpportunityInput(ModelBase):
"""Maps to UpdateOpportunityInput in GraphQL schema."""
[docs]
def __init__(
self,
opportunity_id: int,
closed_date: Optional[date] = None,
description: Optional[str] = None,
estimated_value: Optional[float] = None,
expected_closed_date: Optional[date] = None,
identified_by: Optional[str] = None,
identified_date: Optional[date] = None,
lead_id: Optional[int] = None,
on_hold_date: Optional[date] = None,
opportunity_number: Optional[str] = None,
opportunity_type_id: Optional[int] = None,
priority_id: Optional[int] = None,
reference_number: Optional[str] = None,
risk_level_id: Optional[int] = None,
start_date: Optional[date] = None,
status_change_date: Optional[date] = None,
status_id: Optional[int] = None,
sub_status_change_date: Optional[date] = None,
sub_status_id: Optional[int] = None,
win_date: Optional[date] = None,
):
self.opportunityId = opportunity_id
if closed_date is not None:
self.closedDate = closed_date
if description is not None:
self.description = description
if estimated_value is not None:
self.estimatedValue = estimated_value
if expected_closed_date is not None:
self.expectedClosedDate = expected_closed_date
if identified_by is not None:
self.identifiedBy = identified_by
if identified_date is not None:
self.identifiedDate = identified_date
if lead_id is not None:
self.leadId = lead_id
if on_hold_date is not None:
self.onHoldDate = on_hold_date
if opportunity_number is not None:
self.opportunityNumber = opportunity_number
if opportunity_type_id is not None:
self.opportunityTypeId = opportunity_type_id
if priority_id is not None:
self.priorityId = priority_id
if reference_number is not None:
self.referenceNumber = reference_number
if risk_level_id is not None:
self.riskLevelId = risk_level_id
if start_date is not None:
self.startDate = start_date
if status_change_date is not None:
self.statusChangeDate = status_change_date
if status_id is not None:
self.statusId = status_id
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
if win_date is not None:
self.winDate = win_date
# ===================================================== LEAD ==========================================================
[docs]
class CreateLeadInput(ModelBase):
"""Maps to CreateLeadInput in GraphQL schema."""
[docs]
def __init__(
self,
is_archived: bool,
lead_number: str,
name: str,
priority_id: int,
closed_date: Optional[date] = None,
contacted_date: Optional[date] = None,
converted_date: Optional[date] = None,
estimated_value: Optional[float] = None,
lead_type_id: Optional[int] = None,
opportunities: Optional[List[CreateOpportunityInput]] = None,
qualified_date: Optional[date] = None,
reference_number: Optional[str] = None,
referral_source_id: Optional[int] = None,
status_change_date: Optional[date] = None,
status_id: Optional[int] = None,
sub_status_change_date: Optional[date] = None,
sub_status_id: Optional[int] = None,
):
self.isArchived = is_archived
self.leadNumber = lead_number
self.name = name
self.priorityId = priority_id
if closed_date is not None:
self.closedDate = closed_date
if contacted_date is not None:
self.contactedDate = contacted_date
if converted_date is not None:
self.convertedDate = converted_date
if estimated_value is not None:
self.estimatedValue = estimated_value
if lead_type_id is not None:
self.leadTypeId = lead_type_id
if opportunities is not None:
self.opportunities = opportunities
if qualified_date is not None:
self.qualifiedDate = qualified_date
if reference_number is not None:
self.referenceNumber = reference_number
if referral_source_id is not None:
self.referralSourceId = referral_source_id
if status_change_date is not None:
self.statusChangeDate = status_change_date
if status_id is not None:
self.statusId = status_id
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
CreateLeadInputObject = CreateLeadInput
[docs]
class UpdateLeadInput(ModelBase):
"""Maps to UpdateLeadInput in GraphQL schema."""
[docs]
def __init__(
self,
lead_id: int,
closed_date: Optional[date] = None,
contacted_date: Optional[date] = None,
converted_date: Optional[date] = None,
estimated_value: Optional[float] = None,
is_archived: Optional[bool] = None,
lead_number: Optional[str] = None,
lead_type_id: Optional[int] = None,
name: Optional[str] = None,
opportunities: Optional[List[UpdateOpportunityInput]] = None,
priority_id: Optional[int] = None,
qualified_date: Optional[date] = None,
reference_number: Optional[str] = None,
referral_source_id: Optional[int] = None,
status_change_date: Optional[date] = None,
status_id: Optional[int] = None,
sub_status_change_date: Optional[date] = None,
sub_status_id: Optional[int] = None,
):
self.leadId = lead_id
if closed_date is not None:
self.closedDate = closed_date
if contacted_date is not None:
self.contactedDate = contacted_date
if converted_date is not None:
self.convertedDate = converted_date
if estimated_value is not None:
self.estimatedValue = estimated_value
if is_archived is not None:
self.isArchived = is_archived
if lead_number is not None:
self.leadNumber = lead_number
if lead_type_id is not None:
self.leadTypeId = lead_type_id
if name is not None:
self.name = name
if opportunities is not None:
self.opportunities = opportunities
if priority_id is not None:
self.priorityId = priority_id
if qualified_date is not None:
self.qualifiedDate = qualified_date
if reference_number is not None:
self.referenceNumber = reference_number
if referral_source_id is not None:
self.referralSourceId = referral_source_id
if status_change_date is not None:
self.statusChangeDate = status_change_date
if status_id is not None:
self.statusId = status_id
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
UpdateLeadInputObject = UpdateLeadInput