Example #1
0
def program_aktualne():
    t = times[::]
    t.insert(
        0, {
            'block_from':
            time(18, 0),
            'block_to':
            time(23, 59),
            'date':
            date(2016, 6, 3),
            'data':
            Markup(u'<a href="/' + app.config['YEAR'] +
                   u'/stranka/warm-up-social-event.html">Warm-up párty</a>')
        })
    actual_date = datetime.now().date()
    actual_time = datetime.now().time()
    next_times = []
    for event in t:
        if (event['date'] == actual_date and event['block_to'] >= actual_time)\
                or event['date'] > actual_date:
            next_times.append(event)
    return render_template(
        'aktualne.html',
        talks=get_talks_dict(),
        times=next_times,
        workshops=get_workshops_dict(),
    )
Example #2
0
def workshops_all():
    if stage_is_active(app.config['YEAR'], 'PROGRAM'):
        workshops = get_workshops_dict()
    else:
        workshops = get_workshops()

    return render_template(
        "workshops.html",
        times=times,
        workshops=workshops,
    )
Example #3
0
def workshops_all():
    if stage_is_active(app.config['YEAR'], 'WORKSHOPS-PROGRAM'):
        workshops = get_workshops_dict()
    else:
        workshops = get_workshops()

    return render_template(
        "workshops.html",
        times=times,
        workshops=workshops,
    )
Example #4
0
def program_aktualne():
    t = times[::]
    t.insert(0,
        {'block_from': time(18, 0), 'block_to': time(23, 59), 'date': date(2016, 6, 3),
            'data': Markup(u'<a href="/' + app.config['YEAR'] + u'/stranka/warm-up-social-event.html">Warm-up párty</a>')}
    )
    actual_date = datetime.now().date()
    actual_time = datetime.now().time()
    next_times = []
    for event in t:
        if (event['date'] == actual_date and event['block_to'] >= actual_time)\
                or event['date'] > actual_date:
            next_times.append(event)

    return render_template(
        'aktualne.html',
        talks=get_talks_dict(),
        times=next_times,
        workshops=get_workshops_dict(),
    )
Example #5
0
def service_speaker_mail():
    talk_hashed = get_talks_dict()
    talks = []
    for t in times:
        if type(t['data']) is dict:
            for room in ('d105', 'd0206', 'd0207', 'e112', 'e104', 'e105'):
                talk = talk_hashed.get(t['data'][room], None)
                if talk:
                    talks.append(talk)
    workshop_hashed = get_workshops_dict()
    workshops = []
    for t in times:
        if type(t['data']) is dict:
            for room in ('a112', 'a113', 'c228'):
                workshop = workshop_hashed.get(t['data'][room], None)
                if workshop:
                    workshops.append(workshop)

    output = io.BytesIO()
    writer = csv.writer(output, delimiter=";", dialect="excel", quotechar='"')
    for lecture in talks + workshops:
        writer.writerow([lecture['user']['email']])

    return Response(output.getvalue(), mimetype="text/plain")
Example #6
0
def service_speaker_mail():
    talk_hashed = get_talks_dict()
    talks = []
    for t in times:
        if type(t['data']) is dict:
            for room in ('d105', 'd0206', 'd0207', 'e112', 'e104', 'e105'):
                talk = talk_hashed.get(t['data'][room], None)
                if talk:
                    talks.append(talk)
    workshop_hashed = get_workshops_dict()
    workshops = []
    for t in times:
        if type(t['data']) is dict:
            for room in ('a112', 'a113', 'c228'):
                workshop = workshop_hashed.get(t['data'][room], None)
                if workshop:
                    workshops.append(workshop)

    output = io.BytesIO()
    writer = csv.writer(output, delimiter=";", dialect="excel", quotechar='"')
    for lecture in talks + workshops:
        writer.writerow([lecture['user']['email']])

    return Response(output.getvalue(), mimetype="text/plain")
Example #7
0
def fill_eventee_app():
    headers = app.eventee
    redis_key = KEYS['eventee']
    ids = {
        'breaks': [],
        'rooms': [],
        'talks': [],
        'speakers': [],
    }

    data = requests.get('https://eventee.co/api/public/all?date=2017-06-03',
                        headers=headers)
    data = data.json()

    for hall in data['halls'].values():
        ids['rooms'].append(hall['id'])
        if type(hall['lectures']) is dict:
            for lecture in hall['lectures'].values():
                ids['talks'].append(lecture['id'])

    for b in data['breaks'].values():
        ids['breaks'].append(b['id'])

    for lecturer in data['lecturers'].values():
        ids['speakers'].append(lecturer['id'])

    # sync rooms
    rooms = (
        ('d105', u'Prygl'),
        ('e112', u'Špilas'),
        ('d0206', u'Rola'),
        ('d0207', u'Šalina'),
        ('e104', u'Škopek'),
        ('e105', u'Čára'),
        ('a112', u'workshopy'),
        ('a113', u'workshopy'),
        ('c228', u'workshopy'),
    )

    for room, desc in rooms:
        room_key = 'room_%s' % room
        resource_id = app.redis.hget(redis_key, room_key)
        endpoint = ENDPOINT['room']
        if resource_id:
            ids['rooms'].remove(int(resource_id))
            endpoint = '{}/{}'.format(endpoint, resource_id)
        data = {'name': u'{} {}'.format(room.upper(), desc)}
        print(data['name'])
        response = requests.post(endpoint, json=data, headers=headers)
        status = response.json()
        app.redis.hset(redis_key, room_key, int(status['id']))

    for room_id in ids['rooms']:
        endpoint = "{}/{}".format(ENDPOINT['room'], room_id)
        requests.delete(endpoint, headers=headers)

    # sync breaks
    for t in times:
        if type(t['data']) is not dict:
            break_key = 'break_{}_{}'.format(t['date'], t['block_from'])
            endpoint = ENDPOINT['break']
            resource_id = app.redis.hget(redis_key, break_key)

            if resource_id:
                ids['breaks'].remove(int(resource_id))
                endpoint = "{}/{}".format(endpoint, resource_id)
            data = {
                'name':
                re.sub('<[^<]+?>', '', t['data']),
                'start':
                '{} {}'.format(t['date'].strftime('%Y-%m-%d'),
                               t['block_from']),
                'end':
                '{} {}'.format(t['date'].strftime('%Y-%m-%d'), t['block_to']),
            }

            print(data['name'])
            response = requests.post(endpoint, json=data, headers=headers)
            status = response.json()
            app.redis.hset(redis_key, break_key, int(status['id']))

    for break_id in ids['breaks']:
        endpoint = "{}/{}".format(ENDPOINT['break'], break_id)
        requests.delete(endpoint, headers=headers)

    # sync talks & speakers
    talk_rooms = ('d105', 'd0206', 'd0207', 'e112', 'e104', 'e105')
    workshop_rooms = ('a112', 'a113', 'c228')
    talks = get_talks_dict()
    workshops = get_workshops_dict()
    _shit_re = re.compile(r'[^\w .-/?!,()*\n\r]+', re.UNICODE)
    _spaces = re.compile(r'\s\s+')
    explode_speakers = ()

    def clear(s):
        s = _shit_re.sub('', s)
        s = _spaces.sub(' ', s)
        return s.strip()

    i = 0
    for t in times:
        if type(t['data']) is not dict:
            continue

        for room in talk_rooms + workshop_rooms:
            room_id = app.redis.hget(redis_key, 'room_%s' % room)
            hashes = t['data'].get(room, False)
            if not hashes:
                continue

            if type(hashes) == dict:
                # process lighning talks

                # speaker
                speaker_key = 'speaker_barcamp'
                resource_id = app.redis.hget(redis_key, speaker_key)
                speaker_ids = []
                if not resource_id:
                    print("Barcamp Brno")
                    endpoint = ENDPOINT['speaker']
                    data = {
                        'name': "Barcamp Brno",
                        'bio': '',
                    }
                    response = requests.post(endpoint,
                                             json=data,
                                             headers=headers)
                    status = response.json()
                    resource_id = int(status['id'])
                    app.redis.hset(redis_key, speaker_key, resource_id)
                speaker_ids.append(resource_id)

                #lightning talk
                talk_key = "talk_lightning_{}".format(hashes['category'])
                endpoint = ENDPOINT['talk']
                resource_id = app.redis.hget(redis_key, talk_key)

                if resource_id:
                    ids['talks'].remove(int(resource_id))
                    endpoint = "{}/{}".format(endpoint, resource_id)

                data = {
                    'name':
                    u"Lightning talky ({})".format(
                        translate_category(hashes['category'])),
                    'description':
                    "",
                    'start':
                    '{} {}'.format(t['date'].strftime('%Y-%m-%d'),
                                   t['block_from']),
                    'end':
                    '{} {}'.format(t['date'].strftime('%Y-%m-%d'),
                                   t['block_to']),
                    'speakers':
                    speaker_ids,
                    'hallId':
                    room_id,
                }

                print(data['name'])

                response = requests.post(endpoint, json=data, headers=headers)
                status = response.json()
                app.redis.hset(redis_key, talk_key, int(status['id']))

                continue

            if room not in talk_rooms:
                hashes = (hashes, )

            for i, h in enumerate(hashes):
                if room in talk_rooms:
                    lecture = talks.get(h, False)
                    hash_key = 'talk_hash'
                else:
                    lecture = workshops.get(h, False)
                    hash_key = 'workshop_hash'

                if not lecture:
                    print("missing {} {}".format(room, h))
                    continue

                speakers = [lecture['user']]

                if h in explode_speakers:
                    words = speakers[0]['name'].split(' ')
                    speaker1 = copy(speakers[0])
                    speaker1['name'] = ' '.join(words[0:2])
                    speaker1['user_hash'] += '_1'
                    speaker2 = copy(speakers[0])
                    speaker2['name'] = ' '.join(words[3:5])
                    speaker2['user_hash'] += '_2'
                    speakers = [speaker1, speaker2]

                speaker_ids = []

                for speaker in speakers:
                    speaker_key = 'speaker_{}'.format(speaker['user_hash'])
                    resource_id = app.redis.hget(redis_key, speaker_key)
                    print speaker['name']
                    if not resource_id:
                        endpoint = ENDPOINT['speaker']
                        data = {
                            'name': clear(speaker['name']),
                            'bio': '',
                        }
                        response = requests.post(endpoint,
                                                 json=data,
                                                 headers=headers)
                        status = response.json()
                        resource_id = int(status['id'])
                        app.redis.hset(redis_key, speaker_key, resource_id)
                    speaker_ids.append(resource_id)

                #talk
                talk_key = "talk_{}".format(lecture[hash_key])
                endpoint = ENDPOINT['talk']
                resource_id = app.redis.hget(redis_key, talk_key)

                if resource_id:
                    ids['talks'].remove(int(resource_id))
                    endpoint = "{}/{}".format(endpoint, resource_id)

                data = {
                    'name':
                    clear(lecture['title']),
                    'description':
                    clear(lecture['description']),
                    'start':
                    '{} {}'.format(t['date'].strftime('%Y-%m-%d'),
                                   t['block_from']),
                    'end':
                    '{} {}'.format(t['date'].strftime('%Y-%m-%d'),
                                   t['block_to']),
                    'speakers':
                    speaker_ids,
                    'hallId':
                    room_id,
                }

                print(data['name'])

                if room in workshop_rooms:
                    minutes = 45 if lecture['minutes'] <= 60 else 105
                    end = datetime.combine(
                        t['date'],
                        t['block_from']) + timedelta(minutes=minutes)
                    data['end'] = str(end)

                if len(hashes) > 1 and i == 0:
                    data['end'] = str(
                        datetime.combine(t['date'], t['block_to']) -
                        timedelta(minutes=22))
                if len(hashes) > 1 and i == 1:
                    data['start'] = str(
                        datetime.combine(t['date'], t['block_from']) +
                        timedelta(minutes=22))

                response = requests.post(endpoint, json=data, headers=headers)
                status = response.json()
                app.redis.hset(redis_key, talk_key, int(status['id']))

    for talk_id in ids['talks']:
        endpoint = "{}/{}".format(ENDPOINT['talk'], talk_id)
        requests.delete(endpoint, headers=headers)

    return Response("ok", mimetype="text/plain")
Example #8
0
def fill_eventee_app():
    headers = app.eventee
    redis_key = KEYS['eventee']
    ids = {
        'breaks': [],
        'rooms': [],
        'talks': [],
        'speakers': [],
    }

    data = requests.get('https://eventee.co/api/public/all?date=2016-06-04', headers=headers)
    data = data.json()

    for hall in data['halls'].values():
        ids['rooms'].append(hall['id'])
        if type(hall['lectures']) is dict:
            for lecture in hall['lectures'].values():
                ids['talks'].append(lecture['id'])

    for b in data['breaks'].values():
        ids['breaks'].append(b['id'])

    for lecturer in data['lecturers'].values():
        ids['speakers'].append(lecturer['id'])

    # sync rooms
    rooms = (
        ('d105', u'Prygl'),
        ('e112', u'Špilas'),
        ('d0206', u'Rola'),
        ('d0207', u'Šalina'),
        ('e104', u'Škopek'),
        ('e105', u'Čára'),
        ('a112', u'workshopy'),
        ('a113', u'workshopy'),
        ('c228', u'workshopy'),
        ('Hyde', 'Park'),
    )

    for room, desc in rooms:
        room_key = 'room_%s' % room
        resource_id = app.redis.hget(redis_key, room_key)
        endpoint = ENDPOINT['room']
        if resource_id:
            ids['rooms'].remove(int(resource_id))
            endpoint = '{}/{}'.format(endpoint, resource_id)
        data = {
            'name': u'{} {}'.format(room.upper(), desc)
        }
        response = requests.post(
            endpoint,
            json=data,
            headers=headers
        )
        status = response.json()
        app.redis.hset(redis_key, room_key, int(status['id']))

    for room_id in ids['rooms']:
        endpoint = "{}/{}".format(ENDPOINT['room'], room_id)
        requests.delete(endpoint, headers=headers)

    # sync breaks
    for t in times:
        if type(t['data']) is not dict:
            break_key = 'break_{}_{}'.format(t['date'], t['block_from'])
            endpoint = ENDPOINT['break']
            resource_id = app.redis.hget(redis_key, break_key)

            if resource_id:
                ids['breaks'].remove(int(resource_id))
                endpoint = "{}/{}".format(endpoint, resource_id)
            data = {
                'name': re.sub('<[^<]+?>', '', t['data']),
                'start': '{} {}'.format(t['date'].strftime('%Y-%m-%d'), t['block_from']),
                'end': '{} {}'.format(t['date'].strftime('%Y-%m-%d'), t['block_to']),
            }
            response = requests.post(
                endpoint,
                json=data,
                headers=headers
            )
            status = response.json()
            app.redis.hset(redis_key, break_key, int(status['id']))

    for break_id in ids['breaks']:
        endpoint = "{}/{}".format(ENDPOINT['break'], break_id)
        requests.delete(endpoint, headers=headers)


    # sync talks & speakers
    talk_rooms = ('d105', 'd0206', 'd0207', 'e112', 'e104', 'e105')
    workshop_rooms = ('a112', 'a113', 'c228')
    talks = get_talks_dict()
    workshops = get_workshops_dict()
    _shit_re = re.compile(r'[^\w .-/?!,()*\n\r]+', re.UNICODE)
    _spaces = re.compile(r'\s\s+')
    explode_speakers = ('bea84558', 'f89ae7e6')
    def clear(s):
        s = _shit_re.sub('', s)
        s = _spaces.sub(' ', s)
        return s.strip()

    i = 0
    for t in times:
        if type(t['data']) is not dict:
            continue

        for room in talk_rooms + workshop_rooms:
            room_id = app.redis.hget(redis_key, 'room_%s' % room)
            h = t['data'].get(room, False)
            if not h:
                continue

            if room in talk_rooms:
                lecture = talks.get(h, False)
                hash_key = 'talk_hash'
            else:
                lecture = workshops.get(h, False)
                hash_key = 'workshop_hash'

            if not lecture:
                continue

            speakers = [lecture['user']]

            if h in explode_speakers:
                words = speakers[0]['name'].split(' ')
                speaker1 = copy(speakers[0])
                speaker1['name'] = ' '.join(words[0:2])
                speaker1['user_hash'] += '_1'
                speaker2 = copy(speakers[0])
                speaker2['name'] = ' '.join(words[3:5])
                speaker2['user_hash'] += '_2'
                speakers = [speaker1, speaker2]

            speaker_ids = []

            for speaker in speakers:
                speaker_key = 'speaker_{}'.format(speaker['user_hash'])
                resource_id = app.redis.hget(redis_key, speaker_key)
                print speaker['name']
                if not resource_id:
                    endpoint = ENDPOINT['speaker']
                    data = {
                        'name': clear(speaker['name']),
                        'bio': '',
                    }
                    response = requests.post(
                        endpoint,
                        json=data,
                        headers=headers
                    )
                    status = response.json()
                    resource_id = int(status['id'])
                    app.redis.hset(redis_key, speaker_key, resource_id)
                speaker_ids.append(resource_id)

            #talk
            talk_key = "talk_{}".format(lecture[hash_key])
            endpoint = ENDPOINT['talk']
            resource_id = app.redis.hget(redis_key, talk_key)

            if resource_id:
                ids['talks'].remove(int(resource_id))
                endpoint = "{}/{}".format(endpoint, resource_id)

            data = {
                'name': clear(lecture['title']),
                'description': clear(lecture['description']),
                'start': '{} {}'.format(t['date'].strftime('%Y-%m-%d'), t['block_from']),
                'end': '{} {}'.format(t['date'].strftime('%Y-%m-%d'), t['block_to']),
                'speakers': speaker_ids,
                'hallId': room_id,
            }

            if room in workshop_rooms:
                minutes = 45 if lecture['minutes'] <= 60 else 105
                end = datetime.combine(t['date'], t['block_from']) + timedelta(minutes=minutes)
                data['end'] = str(end)

            response = requests.post(
                endpoint,
                json=data,
                headers=headers
            )
            status = response.json()
            app.redis.hset(redis_key, talk_key, int(status['id']))

    for talk_id in ids['talks']:
        endpoint = "{}/{}".format(ENDPOINT['talk'], talk_id)
        requests.delete(endpoint, headers=headers)

    return Response("ok", mimetype="text/plain")