from icalendar import Calendar from main.main_logging import get_logger from utils import find_thing from utils.nesting_exception import log_exception, log_exception_via from utils.parsing import local_tz, de_list from utils.url_load import url_opener import datetime import logging import models import re import sys logger = get_logger(__name__) def _standard_speaker_parser(component): for possible_speaker in de_list(component.get("X-OXTALKS-SPEAKER")): return str(possible_speaker) return None def load_ical(opener, raw_hacks=[], master_list=None, lists=[], url_for_logging="unknown", speaker_parser=_standard_speaker_parser): """ Utility method to load an ical file and yield the events within it """ with opener() as stream: text = stream.read() if text == "": logger.debug("ical file from %s was empty" % url_for_logging) # Stupid bug in Calendar parser, doesn't accept empty files. return for raw_hack in raw_hacks:
from optparse import OptionParser from oxtalks.oxtalks_api import OxTalksAPI, DeleteOutstanding, AddEvent from settings import load_settings from sources.ical_event_source import ICalEventSource from sources.oxford_university_whatson import WhatsOn from sources.source_factory import load_sources from utils.nesting_exception import log_exception import itertools import logging import threading import time # Until we load logging information from our configuration file logging.basicConfig() logger = get_logger("pull_events") def _load_talks_from_source(source, list_manager): started = time.time() succeeded = True new_instructions = [] try: logger.info("Loading events from %s" % source) for event in source(list_manager): new_instructions.append(AddEvent(event)) logger.info("Finished loading events from %s" % source) return new_instructions, True except Exception: log_exception(logger, "Failed to load from source %s" % source) succeeded = False # Return as many events as we were able to fetch. Maybe should return [] ?