Ejemplo n.º 1
0
    def ideas():
        if not request.data:
            return make_response(jsonify(error="Missing parameters."), 400)

        if request.method == "POST":
            token = str(request.json.get('id', ''))
            user = User.query.filter_by(token=token)
            action = Action.query.filter_by(
                action=str(request.json.get('action', '')))
            idea = Idea.query.filter_by(
                response=str(request.json.get('idea', '')))
            categories = request.json.get('categories', '')

            if str(request.json.get('isGenius', '')) == 'True':
                is_genius = True
            if str(request.json.get('isGenius', '')) == 'False':
                is_genius = False

            if user.count() <= 0:
                return make_response(jsonify(error="User not found."), 404)
            elif idea.count() > 0:
                return make_response(
                    jsonify(
                        error=
                        "{0} idea already exists in the database for {1} {2}.".
                        format(action[0].action, user[0].first_name,
                               user[0].last_name)), 400)
            else:
                idea = Idea(response=str(request.json.get('idea', '')),
                            random_word=str(request.json.get(
                                'random_word', '')),
                            user_id=user[0].id,
                            action_id=action[0].id,
                            is_genius=is_genius,
                            question=str(request.json.get('question', '')))
                idea.save()

                for category in categories:
                    found_cat = Category.query.filter_by(name=category['name'])
                    new_idea_categories = idea_categories.insert().values(
                        idea_id=idea.id, category_id=found_cat[0].id)
                    db.session.execute(new_idea_categories)
                    db.session.commit()

                return make_response(
                    jsonify(
                        success=
                        "{0} idea for {1} {2} has been successfully created!".
                        format(action[0].action, user[0].first_name,
                               user[0].last_name)), 200)

        if request.method == "DELETE":
            token = str(request.json.get('token', ''))
            user = User.query.filter_by(token=token)
            idea_id = str(request.json.get('idea_id', ''))

            if user.count() <= 0:
                return make_response(jsonify(error="User not found."), 404)
            else:
                idea = Idea.query.filter_by(id=idea_id, user_id=user[0].id)

                if idea.count() <= 0:
                    return make_response(jsonify(error="Idea not found."), 404)
                else:
                    idea_name = idea[0].question
                    Idea.delete(idea[0])
                    return make_response('', 204)