generated from mwc/lab_server
78 lines
3.2 KiB
Python
78 lines
3.2 KiB
Python
from banjo.urls import route_get, route_post
|
|
from banjo.http import BadRequest, NotFound
|
|
from app.models import Line, Poem, Rhyme
|
|
from random import choice, sample
|
|
|
|
@route_get('lines/random', args={})
|
|
def get_random_line(params):
|
|
try:
|
|
return {'line': Line.objects.random().text}
|
|
except Line.DoesNotExist:
|
|
raise NotFound("Line not found")
|
|
|
|
|
|
@route_get('lines/about', args={'topic': str})
|
|
def get_about_line(params):
|
|
try:
|
|
topic=params['topic']
|
|
return {'line': Line.objects.filter(clean_text__contains=topic).random().text, 'topic':topic}
|
|
except Line.DoesNotExist:
|
|
raise NotFound("Line not found")
|
|
|
|
|
|
@route_get('lines/rhyme', args={'word': str})
|
|
def get_rhyme_line(params):
|
|
try:
|
|
word=params['word']
|
|
return {'rhyme': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text, 'word':word}
|
|
except Rhyme.DoesNotExist:
|
|
raise NotFound("Rhyme not found")
|
|
|
|
|
|
@route_get('couplets/random', args={})
|
|
def get_random_couplets(params):
|
|
line = Line.objects.random().text
|
|
word=line.split()[-1]
|
|
try:
|
|
if {'First Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text} != {'Second Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text}:
|
|
return {'First Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text, 'Second Line':line}
|
|
else:
|
|
return()
|
|
except Rhyme.DoesNotExist:
|
|
raise NotFound("Rhyme not found")
|
|
|
|
@route_get('couplets/about', args={'topic': str})
|
|
def get_about_couplets(params):
|
|
topic=params['topic']
|
|
line=Line.objects.filter(clean_text__contains=topic).random().text
|
|
word=line.split()[-1]
|
|
try:
|
|
if {'First Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text} != {'Second Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text}:
|
|
return {'First Line': line, 'Second Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text}
|
|
else:
|
|
return()
|
|
except Rhyme.DoesNotExist:
|
|
raise NotFound("Rhyme not found")
|
|
|
|
@route_get('couplets/rhyme', args={'word': str})
|
|
def get_rhyme_couplets(params):
|
|
word=params['word']
|
|
try:
|
|
if {'First Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text} != {'Second Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text}:
|
|
return {'First Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text, 'Second Line': Rhyme.get_rhyme_for_word(word).lines.exclude(clean_text__endswith
|
|
= " " + word).random().text}
|
|
else:
|
|
return()
|
|
except Rhyme.DoesNotExist:
|
|
raise NotFound("Rhyme not found")
|