コード例 #1
0
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:
コード例 #2
0
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 [] ?