示例#1
0
def topics():
	qb    = QueryBuilder(request.args)
	qb.setSortIfNone("date")
	query = qb.buildTopicQuery()

	tmp_q = ForumTopic.query
	if not qb.show_discarded:
		tmp_q = tmp_q.filter_by(discarded=False)
	total = tmp_q.count()
	topic_count = query.count()

	page  = get_int_or_abort(request.args.get("page"), 1)
	num   = get_int_or_abort(request.args.get("n"), 100)
	if num > 100 and not current_user.rank.atLeast(UserRank.EDITOR):
		num = 100

	query = query.paginate(page, num, True)
	next_url = url_for("todo.topics", page=query.next_num, query=qb.search, \
	 	show_discarded=qb.show_discarded, n=num, sort=qb.order_by) \
			if query.has_next else None
	prev_url = url_for("todo.topics", page=query.prev_num, query=qb.search, \
	 	show_discarded=qb.show_discarded, n=num, sort=qb.order_by) \
			if query.has_prev else None

	return render_template("todo/topics.html", topics=query.items, total=total, \
			topic_count=topic_count, query=qb.search, show_discarded=qb.show_discarded, \
			next_url=next_url, prev_url=prev_url, page=page, page_max=query.pages, \
			n=num, sort_by=qb.order_by)
示例#2
0
def list_reviews():
    page = get_int_or_abort(request.args.get("page"), 1)
    num = min(40, get_int_or_abort(request.args.get("n"), 100))

    pagination = PackageReview.query.order_by(db.desc(
        PackageReview.created_at)).paginate(page, num, True)
    return render_template("packages/reviews_list.html",
                           pagination=pagination,
                           reviews=pagination.items)
示例#3
0
def audit():
    page = get_int_or_abort(request.args.get("page"), 1)
    num = min(40, get_int_or_abort(request.args.get("n"), 100))

    query = AuditLogEntry.query.order_by(db.desc(AuditLogEntry.created_at))

    if "username" in request.args:
        user = User.query.filter_by(
            username=request.args.get("username")).first()
        if not user:
            abort(404)
        query = query.filter_by(causer=user)

    pagination = query.paginate(page, num, True)
    return render_template("admin/audit.html",
                           log=pagination.items,
                           pagination=pagination)
示例#4
0
def list_all():
    query = Thread.query
    if not Permission.SEE_THREAD.check(current_user):
        query = query.filter_by(private=False)

    pid = request.args.get("pid")
    if pid:
        pid = get_int_or_abort(pid)
        query = query.filter_by(package_id=pid)

    return render_template("threads/list.html", threads=query.all())
示例#5
0
def versions():
    protocol_version = request.args.get("protocol_version")
    engine_version = request.args.get("engine_version")
    if protocol_version or engine_version:
        rel = MinetestRelease.get(engine_version,
                                  get_int_or_abort(protocol_version))
        if rel is None:
            error(404, "No releases found")

        return jsonify(rel.getAsDictionary())

    return jsonify([rel.getAsDictionary() \
      for rel in MinetestRelease.query.all() if rel.getActual() is not None])
示例#6
0
def list_all():
    query = Thread.query
    if not Permission.SEE_THREAD.check(current_user):
        query = query.filter_by(private=False)

    pid = request.args.get("pid")
    if pid:
        pid = get_int_or_abort(pid)
        query = query.filter_by(package_id=pid)

    query = query.filter_by(review_id=None)

    query = query.order_by(db.desc(Thread.created_at))

    page = get_int_or_abort(request.args.get("page"), 1)
    num = min(40, get_int_or_abort(request.args.get("n"), 100))

    pagination = query.paginate(page, num, True)

    return render_template("threads/list.html",
                           pagination=pagination,
                           threads=pagination.items)