Example #1
0
    def children_by_parent_id(Parent, parent_id, Child, sort_key):
        if not util.is_uuid(parent_id):
            return abort(404)

        parent = app.session.query(Parent).filter(
            Parent.id == parent_id).first()

        if parent == None:
            return abort(404)

        # Use pager per Child model

        filters = (getattr(Child, util.fk_column_name(Parent)) == parent_id)
        children_list_result = get_model_dict_list(Child, sort_key, filters)

        # util.singular(parent.__tablename__)
        child_key_prefix = util.singular_table_name(Child)
        return {
            util.singular_table_name(Parent): parent.to_dict(),
            # child_key_prefix + '_list': children_list_result['result_list'],
            # child_key_prefix + '_total': children_list_result['total'],
            # child_key_prefix + '_next_offset': children_list_result['next_offset'],
            'children_list': children_list_result['result_list'],
            'children_total': children_list_result['total'],
            'children_next_offset': children_list_result['next_offset']
        }
Example #2
0
        def list_quotes_by_book(book_id):
            if not util.is_uuid(book_id):
                return redirect(url_for('show_random_quote'))

            book = app.session.query(Book) \
                .filter_by(id=book_id).first()

            if book == None:
                return redirect(url_for('show_random_quote'))

            page = page = get_page()
            offset = get_offset(page)
            query_filter = (Quote.book_id == book_id)

            quotes = app.session.query(Quote) \
                .filter(query_filter) \
                .order_by(Quote.text) \
                .offset(offset) \
                .limit(PER_PAGE) \
                .all()

            pagination = get_pagenate(page, Quote, query_filter)
            return render_template('quote_list.html',
                                   book=book,
                                   quotes=quotes,
                                   pagination=pagination)
Example #3
0
        def list_fake_quotes_by_quote(quote_id):
            page = get_page()
            offset = get_offset(page)

            # When invalid id is passed, just redirect to random page
            if not util.is_uuid(quote_id):
                return redirect(url_for('show_random_quote'))

            quote = app.session.query(Quote) \
                .filter(Quote.id==quote_id) \
                .first()

            if quote == None:
                return redirect(url_for('show_random_quote'))

            query_filter = (FakeQuote.quote_id == quote_id)
            fake_quotes = app.session.query(FakeQuote) \
                .filter(query_filter) \
                .order_by(FakeQuote.text) \
                .offset(offset) \
                .limit(PER_PAGE) \
                .all()

            pagination = get_pagenate(page, FakeQuote, query_filter)

            return render_template('fake_quote_list.html',
                                   quote=quote,
                                   fake_quotes=fake_quotes,
                                   pagination=pagination)
Example #4
0
        def show_fake_quote(fake_quote_id):
            # When invalid id is passed, just redirect to random page
            if not util.is_uuid(fake_quote_id):
                return redirect(url_for('show_random_quote'))

            fake_quote = app.session.query(FakeQuote).filter(
                FakeQuote.id == fake_quote_id).first()
            if fake_quote == None:
                return redirect(url_for('show_random_quote'))

            return render_fake_quote_page(fake_quote)
Example #5
0
    def api_random_fake_quotes():
        query = app.session.query(FakeQuote.id)

        # If fake_quote_id is passed, get another one
        fake_quote_id = request.args.get('fake_quote_id', None)
        if fake_quote_id is not None and util.is_uuid(fake_quote_id):
            query = query.filter(FakeQuote.id != fake_quote_id)

        fake_quote = query.order_by(func.random()).first()
        print('fake_quote')
        print(fake_quote.id)
        return api_fake_quote_by_id(str(fake_quote.id))
Example #6
0
    def api_fake_quotes_random_id_list():
        order_field = func.random()

        # query = app.session.query(FakeQuote.id)

        # If fake_quote_id is passed, get another one
        filters = None
        fake_quote_id = request.args.get('fake_quote_id', None)
        if fake_quote_id is not None and util.is_uuid(fake_quote_id):
            # query = query.filter()
            filters = (FakeQuote.id != fake_quote_id)

        return json_res_id_list(FakeQuote, order_field, filters)
Example #7
0
    def api_fake_quote_by_id(fake_quote_id):
        # print(fake_quote_id)
        # print("fake_quote_id")
        if not util.is_uuid(fake_quote_id):
            return abort(404)

        fake_quote = app.session.query(FakeQuote).filter(
            FakeQuote.id == fake_quote_id).first()
        if fake_quote == None:
            return abort(404)

        quote = fake_quote.original_quote

        return jsonify(fake_quote=fake_quote.to_dict(),
                       fake_book=fake_quote.fake_book.to_dict(),
                       fake_author=fake_quote.fake_book.fake_author.to_dict(),
                       quote=quote.to_dict(),
                       book=quote.book.to_dict(),
                       author=quote.book.author.to_dict())