Пример #1
0
Файл: routes.py Проект: x89/qdb
def home():
	query = db_session.query(Quote) \
		.filter(Quote.approved == True)

	order = request.args.get('order', 'desc').lower()
	if order == 'asc':
		query = query.order_by(Quote.submitted_at.asc()) \
			.order_by(Quote.id.asc())
	else:
		query = query.order_by(Quote.submitted_at.desc()) \
			.order_by(Quote.id.desc())

	search = request.args.get('s')
	if search:
		query = query.filter(Quote.body.ilike('%'+search+'%'))

	page = int(request.args.get('p', 1))
	if page < 1:
		page = 1
	paginator = Paginator(query, page, request.url)
	quotes = paginator.items

	if request.headers.get('Accept') == 'application/json':
		return jsonify(quotes=paginator)

	return render_template('list.html.jinja', quotes=quotes, paginator=paginator)
Пример #2
0
def jinja_globals():
	context = dict()

	if session.get('logged_in'):
		context['pending_count'] = db_session.query(Quote) \
			.filter(Quote.approved == False) \
			.count()

	# cache busting URLs
	if not app.debug:
		url_cache = {}

		def dated_url_for(endpoint, **values):
			if endpoint == 'static':
				filename = values.get('filename')
				if filename:
					if filename not in url_cache:
						file_path = os.path.join(app.static_folder, filename)
						if os.path.isfile(file_path):
							timestamp = int(os.stat(file_path).st_mtime)
							directory, filename = os.path.split(filename)
							filename, extension = filename.split('.', 1)
							filename = '{}.{}.{}'.format(filename, timestamp, extension)
							url_cache[filename] = os.path.join(directory, filename)
						else:
							url_cache[filename] = filename
					values['filename'] = url_cache[filename]
			return url_for(endpoint, **values)

		context['url_for'] = dated_url_for

	return context
Пример #3
0
def show(quote_id):
    quote = db_session.query(Quote).filter(Quote.id == quote_id).first()

    if not quote:
        return abort(404)

    if request.method in ("GET", "HEAD"):
        if request.headers.get("Accept") == "application/json":
            return jsonify(quote=quote)
        return render_template("show.html.jinja", quote=quote)

    if not session.get("logged_in"):
        return abort(401)

    if request.method == "DELETE":
        db_session.delete(quote)
        db_session.commit()
        return "OK"

    quote.body = prepare_quote(
        request.form["body"],
        strip_timestamps=bool(request.form.get("strip_timestamps")),
    )
    db_session.add(quote)
    db_session.commit()
    return "OK"
Пример #4
0
def home():
    query = db_session.query(Quote).filter(Quote.approved == True)

    order = request.args.get("order", "desc").lower()
    if order == "asc":
        query = query.order_by(Quote.submitted_at.asc()).order_by(
            Quote.id.asc())
    else:
        query = query.order_by(Quote.submitted_at.desc()).order_by(
            Quote.id.desc())

    search = request.args.get("s")
    if search:
        query = query.filter(Quote.body.ilike("%" + search + "%"))

    try:
        page = int(request.args.get("p", 1))
    except ValueError:
        resp = jsonify(error="invalid page number")
        resp.status_code = 400
        return resp

    if page < 1:
        page = 1
    paginator = Paginator(query, page, request.url)
    quotes = paginator.items

    if request.headers.get("Accept") == "application/json":
        return jsonify(quotes=paginator)

    return render_template("list.html.jinja",
                           quotes=quotes,
                           paginator=paginator)
Пример #5
0
Файл: routes.py Проект: x89/qdb
def show(quote_id):
	quote = db_session.query(Quote) \
		.filter(Quote.id == quote_id) \
		.first()

	if not quote:
		return abort(404)

	if request.method == 'GET' or request.method == 'HEAD':
		if request.headers.get('Accept') == 'application/json':
			return jsonify(quote=quote)
		return render_template('show.html.jinja', quote=quote)

	if not session.get('logged_in'):
		return abort(401)

	if request.method == 'DELETE':
		db_session.delete(quote)
		db_session.commit()
		return 'OK'

	body = Quote.prepare(request.form['body'])
	quote.body = body
	db_session.add(quote)
	db_session.commit()
	return 'OK'
Пример #6
0
Файл: routes.py Проект: x89/qdb
def show(quote_id):
    quote = db_session.query(Quote) \
     .filter(Quote.id == quote_id) \
     .first()

    if not quote:
        return abort(404)

    if request.method == 'GET' or request.method == 'HEAD':
        if request.headers.get('Accept') == 'application/json':
            return jsonify(quote=quote)
        return render_template('show.html.jinja', quote=quote)

    if not session.get('logged_in'):
        return abort(401)

    if request.method == 'DELETE':
        db_session.delete(quote)
        db_session.commit()
        return 'OK'

    body = Quote.prepare(request.form['body'])
    quote.body = body
    db_session.add(quote)
    db_session.commit()
    return 'OK'
Пример #7
0
Файл: routes.py Проект: x89/qdb
def home():
    query = db_session.query(Quote) \
     .filter(Quote.approved == True)

    order = request.args.get('order', 'desc').lower()
    if order == 'asc':
        query = query.order_by(Quote.submitted_at.asc()) \
         .order_by(Quote.id.asc())
    else:
        query = query.order_by(Quote.submitted_at.desc()) \
         .order_by(Quote.id.desc())

    search = request.args.get('s')
    if search:
        query = query.filter(Quote.body.ilike('%' + search + '%'))

    page = int(request.args.get('p', 1))
    if page < 1:
        page = 1
    paginator = Paginator(query, page, request.url)
    quotes = paginator.items

    if request.headers.get('Accept') == 'application/json':
        return jsonify(quotes=paginator)

    return render_template('list.html.jinja',
                           quotes=quotes,
                           paginator=paginator)
Пример #8
0
def jinja_globals():
	context = dict()

	if session.get('logged_in'):
		context['pending_count'] = db_session.query(Quote) \
			.filter(Quote.approved == False) \
			.count()

	return context
Пример #9
0
def jinja_globals():
    context = dict()

    if session.get('logged_in'):
        context['pending_count'] = db_session.query(Quote) \
         .filter(Quote.approved == False) \
         .count()

    return context
Пример #10
0
def reject(quote_id):
    if not session.get("logged_in"):
        return abort(401)

    quote = db_session.query(Quote).filter(Quote.id == quote_id).first()

    if not quote:
        return abort(404)

    quote.approved = False
    db_session.add(quote)
    db_session.commit()

    return "OK"
Пример #11
0
def pending():
    if not session.get("logged_in"):
        flash("You must be logged in to do that!")
        return redirect(url_for("home"))

    query = (db_session.query(Quote).filter(Quote.approved == None).order_by(
        Quote.submitted_at.desc()))

    quotes = query.all()

    if request.headers.get("Accept") == "application/json":
        return jsonify(quotes=quotes)

    return render_template("list.html.jinja", quotes=quotes)
Пример #12
0
Файл: routes.py Проект: x89/qdb
def pending():
	if not session.get('logged_in'):
		flash('You must be logged in to do that!')
		return redirect(url_for('home'))

	query = db_session.query(Quote) \
		.filter(Quote.approved == False) \
		.order_by(Quote.submitted_at.desc())

	quotes = query.all()

	if request.headers.get('Accept') == 'application/json':
		return jsonify(quotes=quotes)

	return render_template('list.html.jinja', quotes=quotes)
Пример #13
0
Файл: routes.py Проект: x89/qdb
def pending():
    if not session.get('logged_in'):
        flash('You must be logged in to do that!')
        return redirect(url_for('home'))

    query = db_session.query(Quote) \
     .filter(Quote.approved == False) \
     .order_by(Quote.submitted_at.desc())

    quotes = query.all()

    if request.headers.get('Accept') == 'application/json':
        return jsonify(quotes=quotes)

    return render_template('list.html.jinja', quotes=quotes)
Пример #14
0
def random():
    query = db_session.query(Quote)

    search = request.args.get("s")
    if search:
        query = query.filter(Quote.body.ilike("%" + search + "%"))

    query = query.filter(Quote.approved == True).order_by(
        func.random()).limit(10)

    quotes = query.all()

    if request.headers.get("Accept") == "application/json":
        return jsonify(quotes=quotes)

    return render_template("list.html.jinja", quotes=quotes)
Пример #15
0
def get_all():
    query = db_session.query(Quote).filter(Quote.approved == True)

    order = request.args.get("order", "desc").lower()
    if order == "asc":
        query = query.order_by(Quote.submitted_at.asc()).order_by(
            Quote.id.asc())
    else:
        query = query.order_by(Quote.submitted_at.desc()).order_by(
            Quote.id.desc())

    quotes = query.all()

    if request.headers.get("Accept") == "application/json":
        return jsonify(quotes=quotes)

    return render_template("list.html.jinja", quotes=quotes)
Пример #16
0
def approve(quote_id):
    if not session.get("logged_in"):
        return abort(401)

    quote = db_session.query(Quote).filter(Quote.id == quote_id).first()

    if not quote:
        return abort(404)

    quote.approved = True
    db_session.add(quote)
    db_session.commit()

    if app.config.get("ENABLE_IRCBOT_WEBHOOKS"):
        ircbot.notify_bot(quote)

    return "OK"
Пример #17
0
Файл: routes.py Проект: x89/qdb
def random():
    query = db_session.query(Quote)

    search = request.args.get('s')
    if search:
        query = query.filter(Quote.body.ilike('%' + search + '%'))

    query = query.filter(Quote.approved == True) \
     .order_by(func.random()) \
     .limit(10)

    quotes = query.all()

    if request.headers.get('Accept') == 'application/json':
        return jsonify(quotes=quotes)

    return render_template('list.html.jinja', quotes=quotes)
Пример #18
0
Файл: routes.py Проект: x89/qdb
def random():
	query = db_session.query(Quote)

	search = request.args.get('s')
	if search:
		query = query.filter(Quote.body.ilike('%'+search+'%'))

	query = query.filter(Quote.approved == True) \
		.order_by(func.random()) \
		.limit(10)

	quotes = query.all()

	if request.headers.get('Accept') == 'application/json':
		return jsonify(quotes=quotes)

	return render_template('list.html.jinja', quotes=quotes)
Пример #19
0
Файл: routes.py Проект: x89/qdb
def get_all():
	query = db_session.query(Quote) \
		.filter(Quote.approved == True)

	order = request.args.get('order', 'desc').lower()
	if order == 'asc':
		query = query.order_by(Quote.submitted_at.asc()) \
			.order_by(Quote.id.asc())
	else:
		query = query.order_by(Quote.submitted_at.desc()) \
			.order_by(Quote.id.desc())

	quotes = query.all()

	if request.headers.get('Accept') == 'application/json':
		return jsonify(quotes=quotes)

	return render_template('list.html.jinja', quotes=quotes)
Пример #20
0
Файл: routes.py Проект: x89/qdb
def get_all():
    query = db_session.query(Quote) \
     .filter(Quote.approved == True)

    order = request.args.get('order', 'desc').lower()
    if order == 'asc':
        query = query.order_by(Quote.submitted_at.asc()) \
         .order_by(Quote.id.asc())
    else:
        query = query.order_by(Quote.submitted_at.desc()) \
         .order_by(Quote.id.desc())

    quotes = query.all()

    if request.headers.get('Accept') == 'application/json':
        return jsonify(quotes=quotes)

    return render_template('list.html.jinja', quotes=quotes)
Пример #21
0
Файл: routes.py Проект: x89/qdb
def approve(quote_id):
	if not session.get('logged_in'):
		return abort(401)

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

	if not quote:
		return abort(404)

	quote.approved = True
	db_session.add(quote)
	db_session.commit()

	if app.config.get('ENABLE_IRCBOT_WEBHOOKS'):
		ircbot.notify_bot(quote)

	return 'OK'
Пример #22
0
def jinja_globals():
    # inject global jinja variables
    from qdb.database import db_session
    from qdb.models import Quote

    context = dict()

    if session.get('logged_in'):
        context['pending_count'] = db_session.query(Quote) \
         .filter(Quote.approved == None) \
         .count()

    # cache busting URLs
    if not app.debug:
        url_cache = {}

        def dated_url_for(endpoint, **values):
            if endpoint == 'static':
                filename = values.get('filename')
                if filename:
                    if filename not in url_cache:
                        file_path = os.path.join(app.static_folder, filename)
                        if os.path.isfile(file_path):
                            timestamp = int(os.stat(file_path).st_mtime)
                            directory, filename = os.path.split(filename)
                            filename, extension = filename.split('.', 1)
                            filename = '{}.{}.{}'.format(
                                filename, timestamp, extension)
                            url_cache[filename] = os.path.join(
                                directory, filename)
                        else:
                            url_cache[filename] = filename
                    values['filename'] = url_cache[filename]
            return url_for(endpoint, **values)

        context['url_for'] = dated_url_for

    return context
Пример #23
0
def rejected():
    query = db_session.query(Quote).filter(Quote.approved == False)

    order = request.args.get("order", "desc").lower()
    if order == "asc":
        query = query.order_by(Quote.submitted_at.asc()).order_by(
            Quote.id.asc())
    else:
        query = query.order_by(Quote.submitted_at.desc()).order_by(
            Quote.id.desc())

    page = int(request.args.get("p", 1))
    if page < 1:
        page = 1
    paginator = Paginator(query, page, request.url)
    quotes = paginator.items

    if request.headers.get("Accept") == "application/json":
        return jsonify(quotes=paginator)

    return render_template("list.html.jinja",
                           quotes=quotes,
                           paginator=paginator)