def entity(request, entity_slug): results = get_list_or_404(NamedEntity, pref_label_slug=entity_slug) template = loader.get_template('dictionary/named_entity.html') published = Entry.objects.filter(publish=True).values_list('slug', flat=True) if len(results) > 0: entities = [] title = '' for entity in results: title = entity.pref_label if entity.entity_type == 'artist': return redirect('/artists/' + entity.pref_label_slug) if entity.entity_type == 'place': return redirect('/places/' + entity.pref_label_slug) entities.append({ 'name': entity.name, 'pref_label': entity.pref_label, 'senses': [{'sense': sense, 'examples': [build_example(example, published) for example in sense.examples.filter(features_entities=entity).order_by('release_date')]} for sense in entity.mentioned_at_senses.filter(publish=True).order_by('headword')] }) image_exx = entities[0]['senses'][0]['examples'] artist_slug, artist_name, image = assign_artist_image(image_exx) context = { 'title': title, 'entities': entities, 'image': image, 'artist_slug': artist_slug, 'artist_name': artist_name } return HttpResponse(template.render(context, request)) else: return HttpResponse("Whoa, what is {}?".format(entity_slug))
def rhyme(request, rhyme_slug): template = loader.get_template('dictionary/rhyme.html') published = Entry.objects.filter(publish=True).values_list('slug', flat=True) title = rhyme_slug rhyme_results = ExampleRhyme.objects.filter(Q(word_one_slug=rhyme_slug)|Q(word_two_slug=rhyme_slug)) rhymes_intermediate = {} image_exx = [] for r in rhyme_results: if r.word_one_slug == rhyme_slug: title = r.word_one rhyme = r.word_two slug = r.word_two_slug else: title = r.word_two rhyme = r.word_one slug = r.word_one_slug exx = [build_example(example, published) for example in r.parent_example.all()] if exx: image_exx.extend(exx) if slug in rhymes_intermediate: rhymes_intermediate[slug]['examples'].extend(exx) else: rhymes_intermediate[slug] = { 'rhyme': rhyme, 'examples': exx } dedupe_rhymes(rhymes_intermediate) rhymes_intermediate[slug]['examples'] = sorted(rhymes_intermediate[slug]['examples'], key=itemgetter('release_date')) artist_slug, artist_name, image = assign_artist_image(image_exx) rhymes = [ { 'slug': r, 'rhyme': rhymes_intermediate[r]['rhyme'], 'examples': rhymes_intermediate[r]['examples'] } for r in rhymes_intermediate ] context = { 'published_entries': published, 'rhyme': title, 'rhymes': rhymes, 'artist_slug': artist_slug, 'artist_name': artist_name, 'image': image } return HttpResponse(template.render(context, request))