maisaedu-utilities-prefect 1.2.68__tar.gz → 1.2.70__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/PKG-INFO +1 -1
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/deals.py +115 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/one_drive/document_handling.py +3 -3
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect.egg-info/PKG-INFO +1 -1
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/setup.py +1 -1
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/LICENSE +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/azure_blob_service/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/azure_blob_service/azureBlobService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/constants/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/constants/env.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/constants/notification.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/constants/redshift.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/constants/selenium.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/database/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/database/athena.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/database/postgres.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/dw.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/googlesheet/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/googlesheet/gspread.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/associations.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/company.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/contacts.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/contacts_lists.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/email_events.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/form_submission_events.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/forms.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/forms_submissions.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/landing_pages.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/lineItems.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/marketing_emails.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/objects.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/owners.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/pipelines.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/tickets.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/hubspot/users.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/llm/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/llm/service/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/llm/service/llm_service.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/notification.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/one_drive/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/one_drive/extractor.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/models/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/models/adminGroupModel.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/models/datasetDatasourceModel.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/models/datasetRefreshScheduleModel.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/models/datasourceModel.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/models/gatewayModel.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/activityLogsService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/adminGroupsService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/client.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/datasetService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/datasourceService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/gatewayService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/powerbi_api/services/userService.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/prefect_api/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/prefect_api/flows.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/scripts/flow-mem-limit +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/scripts/refresh-secrets +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/secrets.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/selenium/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/selenium/service/__init__.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/tunnel.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect/utils.py +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect.egg-info/SOURCES.txt +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect.egg-info/dependency_links.txt +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect.egg-info/requires.txt +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/maisaedu_utilities_prefect.egg-info/top_level.txt +0 -0
- {maisaedu_utilities_prefect-1.2.68 → maisaedu_utilities_prefect-1.2.70}/setup.cfg +0 -0
|
@@ -141,3 +141,118 @@ def get_all_deals_v1_recent_modified(
|
|
|
141
141
|
prefect.get_run_logger().error(resp)
|
|
142
142
|
raise Exception(e)
|
|
143
143
|
return data
|
|
144
|
+
|
|
145
|
+
def get_deal_v3_with_history(
|
|
146
|
+
app_private_token,
|
|
147
|
+
deal_id,
|
|
148
|
+
properties_with_history,
|
|
149
|
+
tries=5,
|
|
150
|
+
):
|
|
151
|
+
logger = prefect.get_run_logger()
|
|
152
|
+
base_url = f"https://api.hubapi.com/crm/v3/objects/deals/{deal_id}"
|
|
153
|
+
|
|
154
|
+
params = {}
|
|
155
|
+
|
|
156
|
+
if properties_with_history:
|
|
157
|
+
params["propertiesWithHistory"] = ",".join(properties_with_history)
|
|
158
|
+
|
|
159
|
+
headers = {
|
|
160
|
+
"content-type": "application/json",
|
|
161
|
+
"cache-control": "no-cache",
|
|
162
|
+
"Authorization": f"Bearer {app_private_token}",
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
for i in range(tries):
|
|
166
|
+
try:
|
|
167
|
+
r = requests.get(url=base_url, headers=headers, params=params)
|
|
168
|
+
r.raise_for_status()
|
|
169
|
+
response_dict = r.json()
|
|
170
|
+
return response_dict
|
|
171
|
+
except Exception as e:
|
|
172
|
+
logger.error(f"Error to fetch deal v3 with history (attempt {i+1}/{tries}): {e}")
|
|
173
|
+
if i == tries - 1:
|
|
174
|
+
raise
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def chunk_list(values, chunk_size):
|
|
178
|
+
values = list(values)
|
|
179
|
+
for i in range(0, len(values), chunk_size):
|
|
180
|
+
yield values[i:i + chunk_size]
|
|
181
|
+
|
|
182
|
+
def get_deals_v3_batch_with_history(
|
|
183
|
+
app_private_token,
|
|
184
|
+
deal_ids,
|
|
185
|
+
properties_with_history=None,
|
|
186
|
+
properties=None,
|
|
187
|
+
batch_size=50,
|
|
188
|
+
tries=5,
|
|
189
|
+
):
|
|
190
|
+
"""
|
|
191
|
+
Lê deals em lote na API v3 usando:
|
|
192
|
+
POST /crm/v3/objects/deals/batch/read
|
|
193
|
+
|
|
194
|
+
- deal_ids: iterável de IDs de deals
|
|
195
|
+
- properties_with_history: lista de propriedades com histórico
|
|
196
|
+
- properties: lista de propriedades atuais
|
|
197
|
+
- batch_size: máximo 50 por causa da API da HubSpot
|
|
198
|
+
|
|
199
|
+
Retorna: dict {deal_id: payload_json_completo}
|
|
200
|
+
"""
|
|
201
|
+
logger = prefect.get_run_logger()
|
|
202
|
+
url = "https://api.hubapi.com/crm/v3/objects/deals/batch/read"
|
|
203
|
+
|
|
204
|
+
# garantia extra: nunca passa de 50
|
|
205
|
+
if batch_size > 50:
|
|
206
|
+
batch_size = 50
|
|
207
|
+
|
|
208
|
+
headers = {
|
|
209
|
+
"content-type": "application/json",
|
|
210
|
+
"cache-control": "no-cache",
|
|
211
|
+
"Authorization": f"Bearer {app_private_token}",
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
results_by_id = {}
|
|
215
|
+
|
|
216
|
+
# garante lista de strings
|
|
217
|
+
deal_ids = [str(d) for d in deal_ids]
|
|
218
|
+
|
|
219
|
+
for ids_chunk in chunk_list(deal_ids, batch_size):
|
|
220
|
+
if not ids_chunk:
|
|
221
|
+
continue
|
|
222
|
+
|
|
223
|
+
# LOG para você ver o tamanho do chunk
|
|
224
|
+
logger.info(f"Chamando batch/read para {len(ids_chunk)} deals "
|
|
225
|
+
f"({ids_chunk[0]} .. {ids_chunk[-1]})")
|
|
226
|
+
|
|
227
|
+
body = {
|
|
228
|
+
"inputs": [{"id": did} for did in ids_chunk]
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if properties:
|
|
232
|
+
body["properties"] = list(properties)
|
|
233
|
+
|
|
234
|
+
if properties_with_history:
|
|
235
|
+
body["propertiesWithHistory"] = list(properties_with_history)
|
|
236
|
+
|
|
237
|
+
for attempt in range(tries):
|
|
238
|
+
try:
|
|
239
|
+
r = requests.post(url, headers=headers, json=body, timeout=30)
|
|
240
|
+
r.raise_for_status()
|
|
241
|
+
resp = r.json()
|
|
242
|
+
|
|
243
|
+
for deal in resp.get("results", []):
|
|
244
|
+
deal_id = deal.get("id")
|
|
245
|
+
if deal_id is not None:
|
|
246
|
+
results_by_id[deal_id] = deal
|
|
247
|
+
|
|
248
|
+
break # deu certo, sai do retry
|
|
249
|
+
except Exception as e:
|
|
250
|
+
logger.error(
|
|
251
|
+
f"Erro ao buscar deals v3 em batch "
|
|
252
|
+
f"(chunk {ids_chunk[0]}..{ids_chunk[-1]}) "
|
|
253
|
+
f"(tentativa {attempt+1}/{tries}): {e}"
|
|
254
|
+
)
|
|
255
|
+
if attempt == tries - 1:
|
|
256
|
+
raise
|
|
257
|
+
|
|
258
|
+
return results_by_id
|
|
@@ -65,9 +65,9 @@ def get_shared_documents_by_query_search(query_string):
|
|
|
65
65
|
|
|
66
66
|
for value in values:
|
|
67
67
|
shared_documents.append({
|
|
68
|
-
"id": value["resource"]["sharepointIds"]["listItemUniqueId"],
|
|
69
|
-
"name": value["name"],
|
|
70
|
-
"url": value["webUrl"]
|
|
68
|
+
"id": value["resource"]["parentReference"]["sharepointIds"]["listItemUniqueId"],
|
|
69
|
+
"name": value["resource"]["name"],
|
|
70
|
+
"url": value["resource"]["webUrl"]
|
|
71
71
|
})
|
|
72
72
|
|
|
73
73
|
return shared_documents
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|