[32788f42] Fix Calendly pagination missing events bug
This commit is contained in:
@@ -51,11 +51,11 @@ def get_calendly_events_raw(api_token: str, start_time: str = None, end_time: st
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
# Defaults: now to +180 days
|
||||
# Defaults: 2024 to +2 years (broad range to ensure we capture all relevant upcoming)
|
||||
if not start_time:
|
||||
start_time = datetime.datetime.utcnow().isoformat() + "Z"
|
||||
start_time = "2024-01-01T00:00:00Z"
|
||||
if not end_time:
|
||||
end_time = (datetime.datetime.utcnow() + datetime.timedelta(days=180)).isoformat() + "Z"
|
||||
end_time = (datetime.datetime.utcnow() + datetime.timedelta(days=730)).isoformat() + "Z"
|
||||
|
||||
# 1. Get current user info to get the user URI
|
||||
user_url = "https://api.calendly.com/users/me"
|
||||
@@ -70,22 +70,34 @@ def get_calendly_events_raw(api_token: str, start_time: str = None, end_time: st
|
||||
events_url = "https://api.calendly.com/scheduled_events"
|
||||
params = {
|
||||
'user': user_uri,
|
||||
'status': 'active',
|
||||
'min_start_time': start_time,
|
||||
'max_start_time': end_time,
|
||||
'status': 'active'
|
||||
'count': 100
|
||||
}
|
||||
|
||||
events_response = requests.get(events_url, headers=headers, params=params)
|
||||
if not events_response.ok:
|
||||
raise Exception(f"Calendly API Error: {events_response.status_code}")
|
||||
all_events = []
|
||||
url = events_url
|
||||
while url:
|
||||
response = requests.get(url, headers=headers, params=params)
|
||||
if not response.ok:
|
||||
raise Exception(f"Calendly API Error: {response.status_code}")
|
||||
|
||||
data = response.json()
|
||||
all_events.extend(data.get('collection', []))
|
||||
|
||||
events_data = events_response.json()
|
||||
events = events_data['collection']
|
||||
pagination = data.get('pagination', {})
|
||||
next_page_token = pagination.get('next_page_token')
|
||||
|
||||
if next_page_token:
|
||||
params = {'user': user_uri, 'count': 100, 'page_token': next_page_token, 'status': 'active'}
|
||||
else:
|
||||
url = None
|
||||
|
||||
raw_results = []
|
||||
|
||||
# 3. Get invitees
|
||||
for event in events:
|
||||
for event in all_events:
|
||||
event_name = event.get('name', '')
|
||||
# Filter by event type if provided
|
||||
if event_type_name and event_type_name.lower() not in event_name.lower():
|
||||
|
||||
Reference in New Issue
Block a user