def get_word(title): if not is_emoji(title): return jsonify({'error': 'Title must be a combination of up to 3 emoji'}) try: word = db.session.query(Word).\ options(joinedload('definitions')).\ filter_by(title=title).one() except NoResultFound as ex: word = Word() word.title = title db.session.add(word) db.session.commit() res_word = word.as_dict() def format_definition(definition): formatted = definition.as_dict() user = definition.user.as_dict() del user['oauth_token'] del user['oauth_token_secret'] formatted['user'] = user votes = definition.votes upvotes = 0 downvotes = 0 for vote in votes: if vote.vote is 1: upvotes += 1 else: downvotes += 1 formatted['upvotes'] = upvotes formatted['downvotes'] = downvotes return formatted definitions = [] for definition in word.definitions: formatted = format_definition(definition) definitions.append(formatted) def def_comp(definition): return definition['upvotes'] - definition['downvotes'] sorted_definitions = sorted(definitions, key=def_comp, reverse=True) res_word['definitions'] = sorted_definitions return jsonify({ 'word': res_word })