mirror of
https://github.com/minetest/contentdb.git
synced 2024-09-20 04:48:30 +02:00
Add admin function to import foreign release URLs
This commit is contained in:
parent
3fbc5f7751
commit
aa6892da82
@ -21,7 +21,7 @@ import flask_menu as menu
|
|||||||
from . import bp
|
from . import bp
|
||||||
from app.models import *
|
from app.models import *
|
||||||
from celery import uuid, group
|
from celery import uuid, group
|
||||||
from app.tasks.importtasks import importRepoScreenshot, makeVCSRelease, checkZipRelease, updateMetaFromRelease
|
from app.tasks.importtasks import importRepoScreenshot, makeVCSRelease, checkZipRelease, updateMetaFromRelease, importForeignDownloads
|
||||||
from app.tasks.forumtasks import importTopicList, checkAllForumAccounts
|
from app.tasks.forumtasks import importTopicList, checkAllForumAccounts
|
||||||
from flask_wtf import FlaskForm
|
from flask_wtf import FlaskForm
|
||||||
from wtforms import *
|
from wtforms import *
|
||||||
@ -71,6 +71,21 @@ def admin_page():
|
|||||||
|
|
||||||
return redirect(url_for("todo.view"))
|
return redirect(url_for("todo.view"))
|
||||||
|
|
||||||
|
elif action == "importforeign":
|
||||||
|
releases = PackageRelease.query.filter(PackageRelease.url.like("http%")).all()
|
||||||
|
|
||||||
|
tasks = []
|
||||||
|
for release in releases:
|
||||||
|
tasks.append(importForeignDownloads.s(release.id))
|
||||||
|
|
||||||
|
result = group(tasks).apply_async()
|
||||||
|
|
||||||
|
while not result.ready():
|
||||||
|
import time
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
return redirect(url_for("todo.view"))
|
||||||
|
|
||||||
elif action == "importmodlist":
|
elif action == "importmodlist":
|
||||||
task = importTopicList.delay()
|
task = importTopicList.delay()
|
||||||
return redirect(url_for("tasks.check", id=task.id, r=url_for("todo.topics")))
|
return redirect(url_for("tasks.check", id=task.id, r=url_for("todo.topics")))
|
||||||
|
@ -27,7 +27,7 @@ from zipfile import ZipFile
|
|||||||
from app import app
|
from app import app
|
||||||
from app.models import *
|
from app.models import *
|
||||||
from app.tasks import celery, TaskError
|
from app.tasks import celery, TaskError
|
||||||
from app.utils import randomString
|
from app.utils import randomString, getExtension
|
||||||
from .minetestcheck import build_tree, MinetestCheckError, ContentType
|
from .minetestcheck import build_tree, MinetestCheckError, ContentType
|
||||||
from .minetestcheck.config import parse_conf
|
from .minetestcheck.config import parse_conf
|
||||||
|
|
||||||
@ -341,3 +341,27 @@ def importRepoScreenshot(id):
|
|||||||
|
|
||||||
print("screenshot.png does not exist")
|
print("screenshot.png does not exist")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@celery.task(bind=True)
|
||||||
|
def importForeignDownloads(self, id):
|
||||||
|
release = PackageRelease.query.get(id)
|
||||||
|
if release is None:
|
||||||
|
raise TaskError("No such release!")
|
||||||
|
elif release.package is None:
|
||||||
|
raise TaskError("No package attached to release")
|
||||||
|
elif not release.url.startswith("http"):
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
ext = getExtension(release.url)
|
||||||
|
filename = randomString(10) + "." + ext
|
||||||
|
filepath = os.path.join(app.config["UPLOAD_DIR"], filename)
|
||||||
|
urllib.request.urlretrieve(release.url, filepath)
|
||||||
|
|
||||||
|
release.url = "/uploads/" + filename
|
||||||
|
db.session.commit()
|
||||||
|
except urllib.error.URLError:
|
||||||
|
release.task_id = self.request.id
|
||||||
|
release.approved = False
|
||||||
|
db.session.commit()
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
<option value="checkreleases">Validate all Zip releases</option>
|
<option value="checkreleases">Validate all Zip releases</option>
|
||||||
<option value="reimportpackages">Reimport meta</option>
|
<option value="reimportpackages">Reimport meta</option>
|
||||||
<option value="importmodlist">Import forum topics</option>
|
<option value="importmodlist">Import forum topics</option>
|
||||||
|
<option value="importforeign">Import foreign release downloads</option>
|
||||||
<option value="recalcscores">Recalculate package scores</option>
|
<option value="recalcscores">Recalculate package scores</option>
|
||||||
<option value="checkusers">Check forum users</option>
|
<option value="checkusers">Check forum users</option>
|
||||||
<option value="importscreenshots">Import screenshots from VCS</option>
|
<option value="importscreenshots">Import screenshots from VCS</option>
|
||||||
|
Loading…
Reference in New Issue
Block a user