mirror of
https://github.com/minetest/contentdb.git
synced 2025-01-03 11:47:28 +01:00
Add New Thread button to threads list
This commit is contained in:
parent
f3ff44203c
commit
c7d251b206
@ -36,10 +36,12 @@ def list_all():
|
|||||||
if not Permission.SEE_THREAD.check(current_user):
|
if not Permission.SEE_THREAD.check(current_user):
|
||||||
query = query.filter_by(private=False)
|
query = query.filter_by(private=False)
|
||||||
|
|
||||||
|
package = None
|
||||||
pid = request.args.get("pid")
|
pid = request.args.get("pid")
|
||||||
if pid:
|
if pid:
|
||||||
pid = get_int_or_abort(pid)
|
pid = get_int_or_abort(pid)
|
||||||
query = query.filter_by(package_id=pid)
|
package = Package.query.get(pid)
|
||||||
|
query = query.filter_by(package=package)
|
||||||
|
|
||||||
query = query.filter_by(review_id=None)
|
query = query.filter_by(review_id=None)
|
||||||
|
|
||||||
@ -50,7 +52,7 @@ def list_all():
|
|||||||
|
|
||||||
pagination = query.paginate(page, num, True)
|
pagination = query.paginate(page, num, True)
|
||||||
|
|
||||||
return render_template("threads/list.html", pagination=pagination, threads=pagination.items)
|
return render_template("threads/list.html", pagination=pagination, threads=pagination.items, package=package)
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/threads/<int:id>/subscribe/", methods=["POST"])
|
@bp.route("/threads/<int:id>/subscribe/", methods=["POST"])
|
||||||
@ -279,20 +281,17 @@ def new():
|
|||||||
if "pid" in request.args:
|
if "pid" in request.args:
|
||||||
package = Package.query.get(int(request.args.get("pid")))
|
package = Package.query.get(int(request.args.get("pid")))
|
||||||
if package is None:
|
if package is None:
|
||||||
flash(gettext("Unable to find that package!"), "danger")
|
abort(404)
|
||||||
|
|
||||||
# Don't allow making orphan threads on approved packages for now
|
def_is_private = request.args.get("private") or False
|
||||||
if package is None:
|
if package is None and not current_user.rank.atLeast(UserRank.APPROVER):
|
||||||
abort(403)
|
abort(404)
|
||||||
|
|
||||||
def_is_private = request.args.get("private") or False
|
allow_change = package and package.approved
|
||||||
if package is None:
|
|
||||||
def_is_private = True
|
|
||||||
allow_change = package and package.approved
|
|
||||||
is_review_thread = package and not package.approved
|
is_review_thread = package and not package.approved
|
||||||
|
|
||||||
# Check that user can make the thread
|
# Check that user can make the thread
|
||||||
if not package.checkPerm(current_user, Permission.CREATE_THREAD):
|
if package and not package.checkPerm(current_user, Permission.CREATE_THREAD):
|
||||||
flash(gettext("Unable to create thread!"), "danger")
|
flash(gettext("Unable to create thread!"), "danger")
|
||||||
return redirect(url_for("homepage.home"))
|
return redirect(url_for("homepage.home"))
|
||||||
|
|
||||||
@ -325,7 +324,7 @@ def new():
|
|||||||
db.session.add(thread)
|
db.session.add(thread)
|
||||||
|
|
||||||
thread.watchers.append(current_user)
|
thread.watchers.append(current_user)
|
||||||
if package is not None and package.author != current_user:
|
if package and package.author != current_user:
|
||||||
thread.watchers.append(package.author)
|
thread.watchers.append(package.author)
|
||||||
|
|
||||||
reply = ThreadReply()
|
reply = ThreadReply()
|
||||||
@ -350,6 +349,8 @@ def new():
|
|||||||
addNotification(mentioned, current_user, NotificationType.NEW_THREAD,
|
addNotification(mentioned, current_user, NotificationType.NEW_THREAD,
|
||||||
msg, thread.getViewURL(), thread.package)
|
msg, thread.getViewURL(), thread.package)
|
||||||
|
|
||||||
|
thread.watchers.append(mentioned)
|
||||||
|
|
||||||
notif_msg = "New thread '{}'".format(thread.title)
|
notif_msg = "New thread '{}'".format(thread.title)
|
||||||
if package is not None:
|
if package is not None:
|
||||||
addNotification(package.maintainers, current_user, NotificationType.NEW_THREAD, notif_msg, thread.getViewURL(), package)
|
addNotification(package.maintainers, current_user, NotificationType.NEW_THREAD, notif_msg, thread.getViewURL(), package)
|
||||||
@ -357,7 +358,6 @@ def new():
|
|||||||
approvers = User.query.filter(User.rank >= UserRank.APPROVER).all()
|
approvers = User.query.filter(User.rank >= UserRank.APPROVER).all()
|
||||||
addNotification(approvers, current_user, NotificationType.EDITOR_MISC, notif_msg, thread.getViewURL(), package)
|
addNotification(approvers, current_user, NotificationType.EDITOR_MISC, notif_msg, thread.getViewURL(), package)
|
||||||
|
|
||||||
|
|
||||||
if is_review_thread:
|
if is_review_thread:
|
||||||
post_discord_webhook.delay(current_user.username,
|
post_discord_webhook.delay(current_user.username,
|
||||||
"Opened approval thread: {}".format(thread.getViewURL(absolute=True)), True)
|
"Opened approval thread: {}".format(thread.getViewURL(absolute=True)), True)
|
||||||
|
@ -2,9 +2,15 @@
|
|||||||
|
|
||||||
{% block title %}
|
{% block title %}
|
||||||
{{ _("Threads") }}
|
{{ _("Threads") }}
|
||||||
|
{% if package %}
|
||||||
|
- {{ package.title }}
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% if current_user.is_authenticated and package %}
|
||||||
|
<a href="{{ url_for('threads.new', pid=package and package.id) }}" class="btn btn-primary float-right">{{ _("New Thread") }}</a>
|
||||||
|
{% endif %}
|
||||||
<h1>{{ self.title() }}</h1>
|
<h1>{{ self.title() }}</h1>
|
||||||
|
|
||||||
{% from "macros/pagination.html" import render_pagination %}
|
{% from "macros/pagination.html" import render_pagination %}
|
||||||
|
Loading…
Reference in New Issue
Block a user