def _admin_output(): output = {} output['joke_main'] = '' output['joke_details'] = '' output['joke_connections'] = '' for joke in Joke.select(): for episode in Episode.select().where(Episode.season == 4).order_by( Episode.number): try: ej = EpisodeJoke.get(episode=episode, joke=joke) output['joke_main'] += '%s\t' % ej.joke_type output['joke_details'] += '\'%s\t' % ej.details if ej.connections(): output['joke_connections'] += '\'%s\t' % ej.connections( )[0]['text'] else: output['joke_connections'] += '\t' except EpisodeJoke.DoesNotExist: output['joke_main'] += '\t' output['joke_details'] += '\t' output['joke_connections'] += '\t' output['joke_main'] += '\n' output['joke_details'] += '\n' output['joke_connections'] += '\n' return render_template('_output.html', **output)
def _admin_episodes(episode_code): from flask import request if request.method == 'GET': context = {} context['episode'] = Episode.get(code=episode_code) context['episodejokes'] = EpisodeJoke.select().join(Episode).where(Episode.code == episode_code) context['jokes'] = Joke.select().order_by(Joke.primary_character) context['seasons'] = _all_seasons() try: context['next'] = Episode.get(number=context['episode'].number + 1) except Episode.DoesNotExist: context['next'] = None try: context['prev'] = Episode.get(number=context['episode'].number - 1) except Episode.DoesNotExist: context['prev'] = None return render_template('admin_episode_detail.html', **context) if request.method == 'PUT': e = Episode.get(code=episode_code) e.blurb = request.form.get('blurb', None) e.save() return '%s' % e.id
def _admin_episodes(episode_code): from flask import request if request.method == 'GET': context = {} context['episode'] = Episode.get(code=episode_code) context['episodejokes'] = EpisodeJoke.select().join(Episode).where( Episode.code == episode_code) context['jokes'] = Joke.select().order_by(Joke.primary_character) context['seasons'] = _all_seasons() try: context['next'] = Episode.get(number=context['episode'].number + 1) except Episode.DoesNotExist: context['next'] = None try: context['prev'] = Episode.get(number=context['episode'].number - 1) except Episode.DoesNotExist: context['prev'] = None return render_template('admin_episode_detail.html', **context) if request.method == 'PUT': e = Episode.get(code=episode_code) e.blurb = request.form.get('blurb', None) e.save() return '%s' % e.id
def index(): context = make_context() context['jokes'] = [] for joke in Joke.select(): context['jokes'].append(joke) context['jokes'] = sorted(context['jokes'], key=lambda joke: joke.code) context['seasons'] = _all_seasons() with open('www/live-data/jokes.json') as f: data = json.load(f) context['group_order'] = Markup(json.dumps(data['group_order'])) context['joke_data'] = Markup(json.dumps(data['jokes'])) context['connection_data'] = Markup(json.dumps(data['connections'])) context['episodes'] = Markup(json.dumps(data['episodes'])) return render_template('viz.html', **context)
def _admin_output(): output = {} output['joke_main'] = '' output['joke_details'] = '' output['joke_connections'] = '' for joke in Joke.select(): for episode in Episode.select().where(Episode.season == 4).order_by(Episode.number): try: ej = EpisodeJoke.get(episode=episode, joke=joke) output['joke_main'] += '%s\t' % ej.joke_type output['joke_details'] += '\'%s\t' % ej.details if ej.connections(): output['joke_connections'] += '\'%s\t' % ej.connections()[0]['text'] else: output['joke_connections'] += '\t' except EpisodeJoke.DoesNotExist: output['joke_main'] += '\t' output['joke_details'] += '\t' output['joke_connections'] += '\t' output['joke_main'] += '\n' output['joke_details'] += '\n' output['joke_connections'] += '\n' return render_template('_output.html', **output)
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))
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))
def render_pages(): render() local('rm -rf www/episode*.html') local('rm -rf www/joke*.html') _render_iterable(Joke.select(), 'joke', 'code') _render_iterable(Episode.select(), 'episode', 'code')