Merge pull request #946 from Hestia-Homes/feature/hubspot_etl

add design type and surveyed date per request
This commit is contained in:
Jun-te Kim 2026-04-01 13:50:06 +01:00 committed by GitHub
commit 91ae897946
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 19 additions and 2 deletions

View file

@ -63,6 +63,8 @@ class HubspotDealData(SQLModel, table=True):
surveyor: Optional[str] = Field(default=None) surveyor: Optional[str] = Field(default=None)
confirmed_survey_date: Optional[datetime] = Field(default=None) confirmed_survey_date: Optional[datetime] = Field(default=None)
confirmed_survey_time: Optional[str] = Field(default=None) confirmed_survey_time: Optional[str] = Field(default=None)
surveyed_date: Optional[datetime] = Field(default=None)
design_type: Optional[str] = Field(default=None)
created_at: datetime = Field( created_at: datetime = Field(
sa_column=Column( sa_column=Column(

View file

@ -231,6 +231,8 @@ class HubspotClient:
"surveyor", "surveyor",
"confirmed_survey_date", "confirmed_survey_date",
"confirmed_survey_time", "confirmed_survey_time",
"surveyed_date",
"design_type",
], ],
) )

View file

@ -257,6 +257,14 @@ class HubspotDataToDb:
deal_in_db.confirmed_survey_time == hs_deal.get("confirmed_survey_time"), deal_in_db.confirmed_survey_time == hs_deal.get("confirmed_survey_time"),
"confirmed_survey_time mismatch", "confirmed_survey_time mismatch",
), ),
soft_assert(
deal_in_db.surveyed_date == self._parse_hs_date(hs_deal.get("surveyed_date")),
"surveyed_date mismatch",
),
soft_assert(
deal_in_db.design_type == hs_deal.get("design_type"),
"design_type mismatch",
),
] ]
# If discrepancies found, update from HubSpot # If discrepancies found, update from HubSpot
@ -380,6 +388,8 @@ class HubspotDataToDb:
"surveyor": deal_data.get("surveyor"), "surveyor": deal_data.get("surveyor"),
"confirmed_survey_date": self._parse_hs_date(deal_data.get("confirmed_survey_date")), "confirmed_survey_date": self._parse_hs_date(deal_data.get("confirmed_survey_date")),
"confirmed_survey_time": deal_data.get("confirmed_survey_time"), "confirmed_survey_time": deal_data.get("confirmed_survey_time"),
"surveyed_date": self._parse_hs_date(deal_data.get("surveyed_date")),
"design_type": deal_data.get("design_type"),
}.items(): }.items():
setattr(existing, attr, value or getattr(existing, attr)) setattr(existing, attr, value or getattr(existing, attr))
@ -462,6 +472,8 @@ class HubspotDataToDb:
surveyor=deal_data.get("surveyor"), surveyor=deal_data.get("surveyor"),
confirmed_survey_date=self._parse_hs_date(deal_data.get("confirmed_survey_date")), confirmed_survey_date=self._parse_hs_date(deal_data.get("confirmed_survey_date")),
confirmed_survey_time=deal_data.get("confirmed_survey_time"), confirmed_survey_time=deal_data.get("confirmed_survey_time"),
surveyed_date=self._parse_hs_date(deal_data.get("surveyed_date")),
design_type=deal_data.get("design_type"),
) )
# Handle upload at insert time # Handle upload at insert time

View file

@ -1,6 +1,7 @@
from etl.hubspot.hubspotClient import HubspotClient, Companies, Pipeline from etl.hubspot.hubspotClient import HubspotClient, Companies, Pipeline
from etl.hubspot.scripts.scraper.main import handler from etl.hubspot.scripts.scraper.main import handler
from tqdm import tqdm from tqdm import tqdm
import json
PIPELINE_ID = Pipeline.OPERATIONS_SOCIAL_HOUSING.value PIPELINE_ID = Pipeline.OPERATIONS_SOCIAL_HOUSING.value
@ -29,7 +30,7 @@ def bulk_load(companies: list[Companies] | None = None) -> None:
continue continue
deal_bar.set_postfix({"status": "uploading", "deal": deal_id}) deal_bar.set_postfix({"status": "uploading", "deal": deal_id})
handler({"hubspot_deal_id": deal_id}, context=None) handler({"Records": [{"body": json.dumps({"hubspot_deal_id": deal_id})}]}, context=None)
processed += 1 processed += 1
deal_bar.set_postfix({"status": "done", "deal": deal_id}) deal_bar.set_postfix({"status": "done", "deal": deal_id})

View file

@ -21,7 +21,7 @@ def handler(event: dict[str, Any], context: Any, local: bool = False) -> None:
{ {
"body": json.dumps( "body": json.dumps(
{ {
"hubspot_deal_id": "409487859944", "hubspot_deal_id": "483651713260",
} }
) )
} }