Skip to content

Commit

Permalink
Break event processing into its own method
Browse files Browse the repository at this point in the history
  • Loading branch information
hancush committed Jan 30, 2025
1 parent 8781cbf commit aa525d3
Showing 1 changed file with 35 additions and 28 deletions.
63 changes: 35 additions & 28 deletions legistar/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,39 +238,46 @@ def api_events(self, since_datetime=None):
params=params,
item_key="EventId")

def events(self, since_datetime=None, api_events=None):

for api_event in api_events or self.api_events(since_datetime=since_datetime):

time_str = api_event['EventTime']
if not time_str: # If we don't have an event time, skip it
continue

try:
# Start times are entered manually. Sometimes, they don't
# conform to this format. Log events with invalid start times,
# but don't interrupt the scrape for them.
start_time = time.strptime(time_str, self.time_string_format)
except ValueError:
event_url = '{0}/events/{1}'.format(self.BASE_URL, api_event['EventId'])
self.logger.error('API event has invalid start time "{0}": {1}'.format(time_str, event_url))
continue
def events(self, since_datetime=None):
for api_event in self.api_events(since_datetime=since_datetime):
if event := self.event(api_event):
yield event

def event(self, api_event):
time_str = api_event["EventTime"]
if not time_str: # If we don't have an event time, skip it
return
try:
# Start times are entered manually. Sometimes, they don't
# conform to this format. Log events with invalid start times,
# but don't interrupt the scrape for them.
start_time = time.strptime(time_str, self.time_string_format)
except ValueError:
event_url = "{0}/events/{1}".format(self.BASE_URL, api_event["EventId"])
self.logger.error(
'API event has invalid start time "{0}": {1}'.format(
time_str, event_url
)
)
return

start = self.toTime(api_event['EventDate'])
api_event['start'] = start.replace(hour=start_time.tm_hour,
minute=start_time.tm_min)
start = self.toTime(api_event["EventDate"])
api_event["start"] = start.replace(
hour=start_time.tm_hour, minute=start_time.tm_min
)

api_event['status'] = self._event_status(api_event)
api_event["status"] = self._event_status(api_event)

web_event = self._get_web_event(api_event)
web_event = self._get_web_event(api_event)

if web_event:
yield api_event, web_event
if web_event:
return api_event, web_event

else:
event_url = '{0}/events/{1}'.format(self.BASE_URL, api_event['EventId'])
self.warning('API event could not be found in web interface: {0}'.format(event_url))
continue
else:
event_url = "{0}/events/{1}".format(self.BASE_URL, api_event["EventId"])
self.warning(
"API event could not be found in web interface: {0}".format(event_url)
)

def agenda(self, event):
agenda_url = (self.BASE_URL +
Expand Down

0 comments on commit aa525d3

Please sign in to comment.