Пример #1
0
def setup_tables():
    """
    Creates the tables for the Arrested Development database.
    """
    db.connect()
    Joke.create_table()
    Episode.create_table()
    EpisodeJoke.create_table()
    JokeConnection.create_table()
Пример #2
0
def setup_tables():
    """
    Creates the tables for the Arrested Development database.
    """
    db.connect()
    Joke.create_table()
    Episode.create_table()
    EpisodeJoke.create_table()
    JokeConnection.create_table()
Пример #3
0
def _admin_jokeconnections(episode_code):
    from flask import request

    if request.method == 'POST':
        pass

    if request.method == 'PUT':
        payload = {}

        ej = EpisodeJoke.get(id=int(request.form.get('episode_joke_id')))
        payload['joke1'] = ej.joke
        payload['joke2'] = Joke.get(code=int(request.form.get('joke_code')))
        payload['episode'] = ej.episode

        j = JokeConnection(**payload)
        j.save()

        return("""
            <br/>
            <a class="related kill-related" href="#" data-jc-id="%s">&times;</a>
            <a class="related" href="#joke-%s">%s &rarr;</a>""" % (j.id, j.joke2.code, j.joke2.text))
Пример #4
0
def _admin_jokeconnections(episode_code):
    from flask import request

    if request.method == 'POST':
        pass

    if request.method == 'PUT':
        payload = {}

        ej = EpisodeJoke.get(id=int(request.form.get('episode_joke_id')))
        payload['joke1'] = ej.joke
        payload['joke2'] = Joke.get(code=int(request.form.get('joke_code')))
        payload['episode'] = ej.episode

        j = JokeConnection(**payload)
        j.save()

        return ("""
            <br/>
            <a class="related kill-related" href="#" data-jc-id="%s">&times;</a>
            <a class="related" href="#joke-%s">%s &rarr;</a>""" %
                (j.id, j.joke2.code, j.joke2.text))
Пример #5
0
def build_connections():
    for episode_joke in EpisodeJoke.select():
        if episode_joke.connection:
            joke1 = episode_joke.joke
            joke2 = Joke.get(Joke.text == episode_joke.connection.strip())
            episode = episode_joke.episode

            if joke2.code < joke1.code:
                tmp = joke2
                joke2 = joke1
                joke1 = tmp

            JokeConnection(joke1=joke1, joke2=joke2, episode=episode).save()
Пример #6
0
def _admin_jokeconnection_delete(episode_code, joke_connection_id):
    from flask import request
    if request.method == 'DELETE':
        JokeConnection.delete().where(
            JokeConnection.id == int(joke_connection_id)).execute()
        return joke_connection_id
Пример #7
0
def write_jokes_json():
    """
    Writes the JSON for @onyxfish and @alykat's viz.
    Produces a list of jokes and within that a list of episodejokes
    where the joke appears, sorted by episode index number.
    """
    payload = {
        'group_order': app_config.PRIMARY_CHARACTER_LIST,
        'jokes': {},
        'connections': [],
        'episodes': {}
    }

    for joke in Joke.select().order_by(Joke.primary_character):
        if joke.primary_character not in payload['group_order']:
            joke.primary_character = 'Miscellaneous'

        if joke.primary_character not in payload['jokes']:
            payload['jokes'][joke.primary_character] = []

        joke_dict = joke.__dict__['_data']

        del joke_dict['id']
        del joke_dict['blurb']

        joke_dict['episodejokes'] = []

        for ej in EpisodeJoke.select().join(Joke).where(Joke.code == joke.code):
            episode_dict = ej.__dict__['_data']
            episode_dict['episode_number'] = ej.episode.number

            for k in ['episode', 'joke', 'id', 'origin']:
                del episode_dict[k]

            joke_dict['episodejokes'].append(episode_dict)

        joke_dict['episodejokes'] = sorted(joke_dict['episodejokes'], key=lambda ej: ej['episode_number'])

        payload['jokes'][joke.primary_character].append(joke_dict)

    if app_config.IMPORT_NEW_SEASON is True:
        episodes = Episode().select().order_by(Episode.number)
    else:
        episodes = Episode().select().where(Episode.season != 4).order_by(Episode.number)

    for episode in episodes:
        episode_dict = episode.__dict__['_data']
        episode_dict['run_date'] = episode_dict['run_date'].strftime('%Y-%m-%d')

        for k in ['blurb', 'id', 'production_code', 'rating', 'tvdb_image']:
            del episode_dict[k]

        payload['episodes'][episode.number] = episode_dict

    for primary_character, jokes in payload['jokes'].items():
        payload['jokes'][primary_character] = sorted(jokes, key=lambda j: j['episodejokes'][0]['episode_number'])

    for connection in JokeConnection.select():
        payload['connections'].append({
            'joke1_code': connection.joke1.code,
            'joke2_code': connection.joke2.code,
            'episode_number': connection.episode.number
        })

    payload['connections'] = sorted(payload['connections'], key=lambda c: c['joke1_code'])

    with open('www/live-data/jokes.json', 'wb') as jokefile:
        jokefile.write(json.dumps(payload))
Пример #8
0
def _admin_jokeconnection_delete(episode_code, joke_connection_id):
    from flask import request
    if request.method == 'DELETE':
        JokeConnection.delete().where(JokeConnection.id == int(joke_connection_id)).execute()
        return joke_connection_id
Пример #9
0
def write_jokes_json():
    """
    Writes the JSON for @onyxfish and @alykat's viz.
    Produces a list of jokes and within that a list of episodejokes
    where the joke appears, sorted by episode index number.
    """
    payload = {
        'group_order': app_config.PRIMARY_CHARACTER_LIST,
        'jokes': {},
        'connections': [],
        'episodes': {}
    }

    for joke in Joke.select().order_by(Joke.primary_character):
        if joke.primary_character not in payload['group_order']:
            joke.primary_character = 'Miscellaneous'

        if joke.primary_character not in payload['jokes']:
            payload['jokes'][joke.primary_character] = []

        joke_dict = joke.__dict__['_data']

        del joke_dict['id']
        del joke_dict['blurb']

        joke_dict['episodejokes'] = []

        for ej in EpisodeJoke.select().join(Joke).where(
                Joke.code == joke.code):
            episode_dict = ej.__dict__['_data']
            episode_dict['episode_number'] = ej.episode.number

            for k in ['episode', 'joke', 'id', 'origin']:
                del episode_dict[k]

            joke_dict['episodejokes'].append(episode_dict)

        joke_dict['episodejokes'] = sorted(joke_dict['episodejokes'],
                                           key=lambda ej: ej['episode_number'])

        payload['jokes'][joke.primary_character].append(joke_dict)

    if app_config.IMPORT_NEW_SEASON is True:
        episodes = Episode().select().order_by(Episode.number)
    else:
        episodes = Episode().select().where(Episode.season != 4).order_by(
            Episode.number)

    for episode in episodes:
        episode_dict = episode.__dict__['_data']
        episode_dict['run_date'] = episode_dict['run_date'].strftime(
            '%Y-%m-%d')

        for k in ['blurb', 'id', 'production_code', 'rating', 'tvdb_image']:
            del episode_dict[k]

        payload['episodes'][episode.number] = episode_dict

    for primary_character, jokes in payload['jokes'].items():
        payload['jokes'][primary_character] = sorted(
            jokes, key=lambda j: j['episodejokes'][0]['episode_number'])

    for connection in JokeConnection.select():
        payload['connections'].append({
            'joke1_code':
            connection.joke1.code,
            'joke2_code':
            connection.joke2.code,
            'episode_number':
            connection.episode.number
        })

    payload['connections'] = sorted(payload['connections'],
                                    key=lambda c: c['joke1_code'])

    with open('www/live-data/jokes.json', 'wb') as jokefile:
        jokefile.write(json.dumps(payload))