Esempio n. 1
0
def populate_conference_days(conference):
    """ Populate conference with day instances """
    # check parameter type
    if not isinstance(conference, Conference):
        raise TypeError("parameter conference should a Conference instance")

    if not isinstance(conference.days, int):
        raise TypeError("conference.days should be an integer")

    if not isinstance(conference.start, datetime):
        raise TypeError("conference.start should be a datetime instance")

    for i in range(0, conference.days):
        tmp_date = conference.start + timedelta(days=i)
        tmp_date_string = tmp_date.strftime("%Y-%m-%d")
        tmp_day = Day(tmp_date, tmp_date_string)
        conference.add_day(tmp_day)
Esempio n. 2
0
    def export(event_id):
        """Takes an event id and returns the event in pentabarf XML format"""
        event = EventModel.query.get(event_id)
        diff = event.ends_at - event.starts_at

        conference = Conference(
            title=event.name,
            start=event.starts_at,
            end=event.ends_at,
            days=diff.days if diff.days > 0 else 1,
            day_change="00:00",
            timeslot_duration="00:15",
            venue=event.location_name,
        )
        dates = (
            db.session.query(func.date(Session.starts_at,
                                       type_=Date))  # type_ needed for sqlite
            .filter_by(event_id=event_id).filter_by(state='accepted').filter(
                Session.deleted_at.is_(None)).order_by(
                    asc(func.date(Session.starts_at))).distinct().all())

        for date in dates:
            date = date[0]

            if date is None:
                continue  # Cannot continue if date is missing

            day = Day(date=date)
            microlocation_ids = list(
                db.session.query(Session.microlocation_id).filter(
                    func.date(Session.starts_at) == date).filter_by(
                        state='accepted').filter(
                            Session.deleted_at.is_(None)).order_by(
                                asc(Session.microlocation_id)).distinct())

            for microlocation_tuple in microlocation_ids:
                microlocation_id = microlocation_tuple[0]
                if microlocation_id:
                    microlocation = Microlocation.query.get(microlocation_id)
                    sessions = (Session.query.filter_by(
                        microlocation_id=microlocation_id).filter(
                            func.date(Session.starts_at) == date).filter_by(
                                state='accepted').filter(
                                    Session.deleted_at.is_(None)).order_by(
                                        asc(Session.starts_at)).all())

                    room = Room(name=microlocation.name)
                    for session in sessions:

                        if session.ends_at is None or session.starts_at is None:
                            duration = ""
                        else:
                            duration = format_timedelta(session.ends_at -
                                                        session.starts_at)
                        session_event = Event(
                            id=session.id,
                            date=session.starts_at,
                            start=session.starts_at.strftime('%H:%M'),
                            duration=duration,
                            track=session.track.name,
                            abstract=session.short_abstract,
                            title=session.title,
                            type='Talk',
                            description=session.long_abstract,
                            conf_url=url_for('v1.event_list',
                                             identifier=event.identifier),
                            full_conf_url=url_for(
                                'v1.event_list',
                                identifier=event.identifier,
                                _external=True,
                            ),
                            released="True"
                            if event.schedule_published_on else "False",
                        )

                        for speaker in session.speakers:
                            person = Person(id=speaker.id, name=speaker.name)
                            session_event.add_person(person)

                        room.add_event(session_event)
                    day.add_room(room)
            conference.add_day(day)

        return conference.generate("Generated by " +
                                   get_settings()['app_name'])
Esempio n. 3
0
                        city="Hannover")

twitterHandles = {}
if Path('cache/twitterhandles.json').is_file():
    with open('cache/twitterhandles.json') as twitterFile:
        twitterData = json.load(twitterFile)
        for user in twitterData:
            if user["name"] in twitterHandles:
                print("WARNING: Found another twitter user with the same name",
                      user["name"])
            twitterHandles[user["name"]] = user["screen_name"]

with open("cache/bibtag20-index.json") as file:
    data = json.load(file)
    for timestamp in sorted(data['groups']):
        day = Day(date=date.fromtimestamp(int(timestamp)))

        rooms = [
            "Kuppelsaal", "Eilenriedehalle B", "Niedersachsenhalle A",
            "Niedersachsenhalle B", "Leibniz Saal", "Blauer Saal",
            "Roter Saal", "Konferenzraum 27/28", "Bonatz Saal",
            "Future Meeting Space A", "Future Meeting Space B",
            "Konferenzraum 07/09", "Konferenzraum 08/10",
            "Konferenzraum 11/13", "Konferenzraum 12/14", "Konferenzraum 15",
            "Konferenzraum 16", "Konferenzraum 17", "Konferenzraum 18",
            "Konferenzraum 19", "Konferenzraum 20", "Konferenzraum 21",
            "Konferenzraum 22", "Podium der Verbände", "Stand der Verbände",
            "Foyers", "Ausserhalb"
        ]
        differentRooms = [
            x['room'] for x in data['sessions'][timestamp]
    def export(event_id):
        """Takes an event id and returns the event in pentabarf XML format"""
        event = EventModel.query.get(event_id)
        diff = (event.ends_at - event.starts_at)

        conference = Conference(title=event.name, start=event.starts_at, end=event.ends_at,
                                days=diff.days if diff.days > 0 else 1,
                                day_change="00:00", timeslot_duration="00:15",
                                venue=event.location_name)
        dates = (db.session.query(cast(Session.starts_at, DATE))
                 .filter_by(event_id=event_id)
                 .filter_by(state='accepted')
                 .filter(Session.deleted_at.is_(None))
                 .order_by(asc(Session.starts_at)).distinct().all())

        for date in dates:
            date = date[0]
            day = Day(date=date)
            microlocation_ids = list(db.session.query(Session.microlocation_id)
                                     .filter(func.date(Session.starts_at) == date)
                                     .filter_by(state='accepted')
                                     .filter(Session.deleted_at.is_(None))
                                     .order_by(asc(Session.microlocation_id)).distinct())

            for microlocation_tuple in microlocation_ids:
                microlocation_id = microlocation_tuple[0]
                if microlocation_id:
                    microlocation = Microlocation.query.get(microlocation_id)
                    sessions = Session.query.filter_by(microlocation_id=microlocation_id) \
                        .filter(func.date(Session.starts_at) == date) \
                        .filter_by(state='accepted') \
                        .filter(Session.deleted_at.is_(None)) \
                        .order_by(asc(Session.starts_at)).all()

                    room = Room(name=microlocation.name)
                    for session in sessions:

                        session_event = Event(id=session.id,
                                              date=session.starts_at,
                                              start=session.starts_at,
                                              duration=str(session.ends_at - session.starts_at) + "00:00",
                                              track=session.track.name,
                                              abstract=session.short_abstract,
                                              title=session.title,
                                              type='Talk',
                                              description=session.long_abstract,
                                              conf_url=url_for('v1.event_list',
                                                               identifier=event.identifier),
                                              full_conf_url=url_for('v1.event_list',
                                                                    identifier=event.identifier, _external=True),
                                              released="True" if event.schedule_published_on else "False")

                        for speaker in session.speakers:
                            person = Person(id=speaker.id, name=speaker.name)
                            session_event.add_person(person)

                        room.add_event(session_event)
                    day.add_room(room)
            conference.add_day(day)

        return conference.generate("Generated by " + get_settings()['app_name'])
Esempio n. 5
0
    def export(event_id):
        event = DataGetter.get_event(event_id)
        diff = (event.end_time - event.start_time)

        tz = event.timezone or 'UTC'
        tz = pytz.timezone(tz)

        conference = Conference(title=event.name,
                                start=tz.localize(event.start_time),
                                end=tz.localize(event.end_time),
                                days=diff.days if diff.days > 0 else 1,
                                day_change="00:00",
                                timeslot_duration="00:15",
                                venue=event.location_name)
        dates = (db.session.query(cast(Session.start_time, DATE)).filter_by(
            event_id=event_id).filter_by(state='accepted').filter(
                Session.deleted_at.is_(None)).order_by(asc(
                    Session.start_time)).distinct().all())

        for date in dates:
            date = date[0]
            day = Day(date=date)
            microlocation_ids = list(
                db.session.query(Session.microlocation_id).filter(
                    func.date(Session.start_time) == date).filter_by(
                        state='accepted').filter(
                            Session.deleted_at.is_(None)).order_by(
                                asc(Session.microlocation_id)).distinct())
            for microlocation_id in microlocation_ids:
                microlocation_id = microlocation_id[0]
                microlocation = DataGetter.get_microlocation(microlocation_id)
                sessions = Session.query.filter_by(microlocation_id=microlocation_id) \
                    .filter(func.date(Session.start_time) == date) \
                    .filter_by(state='accepted') \
                    .filter(Session.deleted_at.is_(None)) \
                    .order_by(asc(Session.start_time)).all()

                room = Room(name=microlocation.name)
                for session in sessions:

                    session_event = Event(
                        id=session.id,
                        date=tz.localize(session.start_time),
                        start=tz.localize(
                            session.start_time).strftime("%H:%M"),
                        duration=format_timedelta(session.end_time -
                                                  session.start_time),
                        track=session.track.name,
                        abstract=session.short_abstract,
                        title=session.title,
                        type='Talk',
                        description=session.long_abstract,
                        conf_url=url_for(
                            'event_detail.display_event_detail_home',
                            identifier=event.identifier),
                        full_conf_url=url_for(
                            'event_detail.display_event_detail_home',
                            identifier=event.identifier,
                            _external=True),
                        released="True"
                        if event.schedule_published_on else "False")

                    for speaker in session.speakers:
                        person = Person(id=speaker.id, name=speaker.name)
                        session_event.add_person(person)

                    room.add_event(session_event)
                day.add_room(room)
            conference.add_day(day)

        return conference.generate("Generated by " +
                                   get_settings()['app_name'])
    def parse(string):
        root = ET.fromstring(string)

        conference_element = root.find('conference')

        conference = Conference(
            title=conference_element.find('title').text,
            start=datetime.strptime(conference_element.find('start').text, '%Y-%m-%d'),
            end=datetime.strptime(conference_element.find('end').text, '%Y-%m-%d'),
            days=int(conference_element.find('days').text),
            day_change=conference_element.find('day_change').text,
            city=conference_element.find('city').text,
            timeslot_duration=conference_element.find('timeslot_duration').text,
            venue=conference_element.find('venue').text,
        )

        for day_element in root.findall('day'):
            day = Day(
                date=datetime.strptime(day_element.get('date'), '%Y-%m-%d'),
                index=int(day_element.get('index'))
            )

            for room_element in day_element.findall('room'):
                room = Room(name=room_element.get('name'))

                for event_element in room_element.findall('event'):
                    event = Event(
                        id=int(event_element.get('id')),
                        date=day.date,
                        start=get_text(event_element, 'start'),
                        duration=get_text(event_element, 'duration'),
                        track=get_text(event_element, 'track'),
                        abstract=get_text(event_element, 'abstract'),
                        title=get_text(event_element, 'title'),
                        type=get_text(event_element, 'type'),
                        description=get_text(event_element, 'description'),
                        conf_url=get_text(event_element, 'conf_url'),
                        full_conf_url=get_text(event_element, 'conf_url'),
                        level=get_text(event_element, 'level')
                    )

                    persons_element = event_element.find('persons')
                    for person_element in persons_element.findall('person'):
                        person = Person(
                            id=int(person_element.get('id')),
                            name=person_element.text,
                        )
                        event.add_person(person)

                    links_element = event_element.find('links')
                    if links_element:
                        for link_element in links_element.findall('link'):
                            link_url = link_element.get('href')
                            if not event.video_url and ('mp4' in link_url
                                                        or 'webm' in link_url
                                                        or 'youtube' in link_url
                                                        or 'avi' in link_url):
                                event.video_url = link_url
                            if not event.audio_url and ('mp3' in link_url or 'wav' in link_url or 'soundcloud' in link_url):
                                event.audio_url = link_url
                            if not event.slides_url and ('ppt' in link_url or 'pptx' in link_url or 'slide' in link_url):
                                event.slides_url = link_url

                    room.add_event(event)
                day.add_room(room)
            conference.add_day(day)
        return conference
    def parse(string):
        root = ET.fromstring(string)

        conference_element = root.find('conference')

        conference = Conference(
            title=conference_element.find('title').text,
            start=datetime.strptime(
                conference_element.find('start').text, '%Y-%m-%d'),
            end=datetime.strptime(
                conference_element.find('end').text, '%Y-%m-%d'),
            days=int(conference_element.find('days').text),
            day_change=conference_element.find('day_change').text,
            city=conference_element.find('city').text,
            timeslot_duration=conference_element.find(
                'timeslot_duration').text,
            venue=conference_element.find('venue').text,
        )

        for day_element in root.findall('day'):
            day = Day(date=datetime.strptime(day_element.get('date'),
                                             '%Y-%m-%d'),
                      index=int(day_element.get('index')))

            for room_element in day_element.findall('room'):
                room = Room(name=room_element.get('name'))

                for event_element in room_element.findall('event'):
                    event = Event(id=int(event_element.get('id')),
                                  date=day.date,
                                  start=get_text(event_element, 'start'),
                                  duration=get_text(event_element, 'duration'),
                                  track=get_text(event_element, 'track'),
                                  abstract=get_text(event_element, 'abstract'),
                                  title=get_text(event_element, 'title'),
                                  type=get_text(event_element, 'type'),
                                  description=get_text(event_element,
                                                       'description'),
                                  conf_url=get_text(event_element, 'conf_url'),
                                  full_conf_url=get_text(
                                      event_element, 'conf_url'),
                                  level=get_text(event_element, 'level'))

                    persons_element = event_element.find('persons')
                    for person_element in persons_element.findall('person'):
                        person = Person(
                            id=int(person_element.get('id')),
                            name=person_element.text,
                        )
                        event.add_person(person)

                    links_element = event_element.find('links')
                    if links_element:
                        for link_element in links_element.findall('link'):
                            link_url = link_element.get('href')
                            if not event.video_url and (
                                    'mp4' in link_url or 'webm' in link_url
                                    or 'youtube' in link_url
                                    or 'avi' in link_url):
                                event.video_url = link_url
                            if not event.audio_url and (
                                    'mp3' in link_url or 'wav' in link_url
                                    or 'soundcloud' in link_url):
                                event.audio_url = link_url
                            if not event.slides_url and (
                                    'ppt' in link_url or 'pptx' in link_url
                                    or 'slide' in link_url):
                                event.slides_url = link_url

                    room.add_event(event)
                day.add_room(room)
            conference.add_day(day)
        return conference
    def export(event_id):
        event = DataGetter.get_event(event_id)
        diff = (event.end_time - event.start_time)

        tz = event.timezone or 'UTC'
        tz = pytz.timezone(tz)

        conference = Conference(title=event.name, start=tz.localize(event.start_time), end=tz.localize(event.end_time),
                                days=diff.days if diff.days > 0 else 1,
                                day_change="00:00", timeslot_duration="00:15",
                                venue=event.location_name)
        dates = (db.session.query(cast(Session.start_time, DATE))
                 .filter_by(event_id=event_id)
                 .filter_by(state='accepted')
                 .filter(Session.deleted_at.is_(None))
                 .order_by(asc(Session.start_time)).distinct().all())

        for date in dates:
            date = date[0]
            day = Day(date=date)
            microlocation_ids = list(db.session.query(Session.microlocation_id)
                                     .filter(func.date(Session.start_time) == date)
                                     .filter_by(state='accepted')
                                     .filter(Session.deleted_at.is_(None))
                                     .order_by(asc(Session.microlocation_id)).distinct())
            for microlocation_id in microlocation_ids:
                microlocation_id = microlocation_id[0]
                microlocation = DataGetter.get_microlocation(microlocation_id)
                sessions = Session.query.filter_by(microlocation_id=microlocation_id) \
                    .filter(func.date(Session.start_time) == date) \
                    .filter_by(state='accepted') \
                    .filter(Session.deleted_at.is_(None)) \
                    .order_by(asc(Session.start_time)).all()

                room = Room(name=microlocation.name)
                for session in sessions:

                    session_event = Event(id=session.id,
                                          date=tz.localize(session.start_time),
                                          start=tz.localize(session.start_time).strftime("%H:%M"),
                                          duration=format_timedelta(session.end_time - session.start_time),
                                          track=session.track.name,
                                          abstract=session.short_abstract,
                                          title=session.title,
                                          type='Talk',
                                          description=session.long_abstract,
                                          conf_url=url_for('event_detail.display_event_detail_home',
                                                           identifier=event.identifier),
                                          full_conf_url=url_for('event_detail.display_event_detail_home',
                                                                identifier=event.identifier, _external=True),
                                          released="True" if event.schedule_published_on else "False")

                    for speaker in session.speakers:
                        person = Person(id=speaker.id, name=speaker.name)
                        session_event.add_person(person)

                    room.add_event(session_event)
                day.add_room(room)
            conference.add_day(day)

        return conference.generate("Generated by " + get_settings()['app_name'])