mirror of
https://github.com/minetest/contentdb.git
synced 2024-12-22 14:02:24 +01:00
Add mismatched topics editor page
This commit is contained in:
parent
aeca6cbbdb
commit
12545c69ac
@ -82,7 +82,7 @@ def list_all():
|
|||||||
|
|
||||||
topic = qb.build_topic_query().first()
|
topic = qb.build_topic_query().first()
|
||||||
if qb.search and topic:
|
if qb.search and topic:
|
||||||
return redirect("https://forum.minetest.net/viewtopic.php?t=" + str(topic.topic_id))
|
return redirect(topic.url)
|
||||||
|
|
||||||
page = get_int_or_abort(request.args.get("page"), 1)
|
page = get_int_or_abort(request.args.get("page"), 1)
|
||||||
num = min(40, get_int_or_abort(request.args.get("n"), 100))
|
num = min(40, get_int_or_abort(request.args.get("n"), 100))
|
||||||
|
@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
from flask import redirect, url_for, abort, render_template, request
|
from flask import redirect, url_for, abort, render_template, request
|
||||||
from flask_login import current_user, login_required
|
from flask_login import current_user, login_required
|
||||||
from sqlalchemy import or_
|
from sqlalchemy import or_, and_
|
||||||
|
|
||||||
from app.models import Package, PackageState, PackageScreenshot, PackageUpdateConfig, ForumTopic, db, \
|
from app.models import Package, PackageState, PackageScreenshot, PackageUpdateConfig, ForumTopic, db, \
|
||||||
PackageRelease, Permission, UserRank, License, MetaPackage, Dependency, AuditLogEntry, Tag, MinetestRelease
|
PackageRelease, Permission, UserRank, License, MetaPackage, Dependency, AuditLogEntry, Tag, MinetestRelease
|
||||||
from app.querybuilder import QueryBuilder
|
from app.querybuilder import QueryBuilder
|
||||||
from app.utils import get_int_or_abort, is_yes
|
from app.utils import get_int_or_abort, is_yes, rank_required
|
||||||
from . import bp
|
from . import bp
|
||||||
|
|
||||||
|
|
||||||
@ -188,3 +188,28 @@ def mtver_support():
|
|||||||
|
|
||||||
return render_template("todo/mtver_support.html", current_tab="screenshots",
|
return render_template("todo/mtver_support.html", current_tab="screenshots",
|
||||||
packages=query.all(), sort_by=sort_by, is_mtm_only=is_mtm_only, current_stable=current_stable)
|
packages=query.all(), sort_by=sort_by, is_mtm_only=is_mtm_only, current_stable=current_stable)
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/todo/topics/mismatch/")
|
||||||
|
@rank_required(UserRank.EDITOR)
|
||||||
|
def topics_mismatch():
|
||||||
|
missing_topics = Package.query.filter(Package.forums.is_not(None)) .filter(~ForumTopic.query.filter(ForumTopic.topic_id == Package.forums).exists()).all()
|
||||||
|
|
||||||
|
packages_bad_author = (
|
||||||
|
db.session.query(Package, ForumTopic)
|
||||||
|
.select_from(Package)
|
||||||
|
.join(ForumTopic, Package.forums == ForumTopic.topic_id)
|
||||||
|
.filter(Package.author_id != ForumTopic.author_id)
|
||||||
|
.all())
|
||||||
|
|
||||||
|
packages_bad_title = (
|
||||||
|
db.session.query(Package, ForumTopic)
|
||||||
|
.select_from(Package)
|
||||||
|
.join(ForumTopic, Package.forums == ForumTopic.topic_id)
|
||||||
|
.filter(and_(ForumTopic.name != Package.name, ~ForumTopic.title.ilike("%" + Package.title + "%"), ~ForumTopic.title.ilike("%" + Package.name + "%")))
|
||||||
|
.all())
|
||||||
|
|
||||||
|
return render_template("todo/topics_mismatch.html",
|
||||||
|
missing_topics=missing_topics,
|
||||||
|
packages_bad_author=packages_bad_author,
|
||||||
|
packages_bad_title=packages_bad_title)
|
||||||
|
@ -156,6 +156,10 @@ class ForumTopic(db.Model):
|
|||||||
|
|
||||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow)
|
created_at = db.Column(db.DateTime, nullable=False, default=datetime.datetime.utcnow)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def url(self):
|
||||||
|
return "https://forum.minetest.net/viewtopic.php?t=" + str(self.topic_id)
|
||||||
|
|
||||||
def get_repo_url(self):
|
def get_repo_url(self):
|
||||||
if self.link is None:
|
if self.link is None:
|
||||||
return None
|
return None
|
||||||
|
69
app/templates/todo/topics_mismatch.html
Normal file
69
app/templates/todo/topics_mismatch.html
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
Mismatched Topics
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% macro render_topics(pairs) %}
|
||||||
|
<ul class="list-group">
|
||||||
|
{% for pair in pairs %}
|
||||||
|
{% set package = pair[0] %}
|
||||||
|
{% set topic = pair[1] %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<div class="row">
|
||||||
|
<a class="col-sm-3 text-muted" style="min-width: 200px;" href="{{ package.get_url('packages.view') }}">
|
||||||
|
<img
|
||||||
|
class="img-fluid"
|
||||||
|
style="max-height: 22px; max-width: 22px;"
|
||||||
|
src="{{ package.get_thumb_or_placeholder() }}" />
|
||||||
|
<span class="ps-2">
|
||||||
|
{{ package.title }} by {{ package.author.display_name }}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="col-sm-3" href="{{ topic.url }}">
|
||||||
|
{{ topic.title }} by {{ topic.author.display_name }}
|
||||||
|
</a>
|
||||||
|
<div class="col-sm"></div>
|
||||||
|
<div class="col-sm-auto">
|
||||||
|
<a class="btn btn-secondary me-2" href="{{ package.get_url('packages.create_edit') }}">Edit</a>
|
||||||
|
<a class="btn btn-secondary">Unlink</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>{{ self.title() }}</h1>
|
||||||
|
|
||||||
|
<h2>Missing topics</h2>
|
||||||
|
<ul class="list-group">
|
||||||
|
{% for package in missing_topics %}
|
||||||
|
<li class="list-group-item">
|
||||||
|
<div class="row">
|
||||||
|
<a class="col-sm-3 text-muted" style="min-width: 200px;" href="{{ package.get_url('packages.view') }}">
|
||||||
|
<img
|
||||||
|
class="img-fluid"
|
||||||
|
style="max-height: 22px; max-width: 22px;"
|
||||||
|
src="{{ package.get_thumb_or_placeholder() }}" />
|
||||||
|
<span class="ps-2">
|
||||||
|
{{ package.title }} by {{ package.author.display_name }}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<div class="col-sm"></div>
|
||||||
|
<div class="col-sm-auto">
|
||||||
|
<a class="btn btn-secondary me-2" href="{{ package.get_url('packages.create_edit') }}">Edit</a>
|
||||||
|
<a class="btn btn-secondary me-2" href="https://forum.minetest.net/viewtopic.php?t={{ package.forums }}">Forums</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Mismatched authors</h2>
|
||||||
|
{{ render_topics(packages_bad_author) }}
|
||||||
|
|
||||||
|
<h2>Mismatched titles</h2>
|
||||||
|
{{ render_topics(packages_bad_title) }}
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user