Refactor package URL generation
This commit is contained in:
parent
187202d363
commit
4e83adc032
|
@ -29,22 +29,22 @@ def get_package_tabs(user: User, package: Package):
|
||||||
{
|
{
|
||||||
"id": "edit",
|
"id": "edit",
|
||||||
"title": "Edit Details",
|
"title": "Edit Details",
|
||||||
"url": package.getEditURL()
|
"url": package.getURL("packages.create_edit")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "releases",
|
"id": "releases",
|
||||||
"title": "Releases",
|
"title": "Releases",
|
||||||
"url": package.getReleaseListURL()
|
"url": package.getURL("packages.list_releases")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "screenshots",
|
"id": "screenshots",
|
||||||
"title": "Screenshots",
|
"title": "Screenshots",
|
||||||
"url": package.getEditScreenshotsURL()
|
"url": package.getURL("packages.screenshots")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "maintainers",
|
"id": "maintainers",
|
||||||
"title": "Maintainers",
|
"title": "Maintainers",
|
||||||
"url": package.getEditMaintainersURL()
|
"url": package.getURL("packages.edit_maintainers")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "audit",
|
"id": "audit",
|
||||||
|
@ -59,7 +59,7 @@ def get_package_tabs(user: User, package: Package):
|
||||||
{
|
{
|
||||||
"id": "remove",
|
"id": "remove",
|
||||||
"title": "Remove",
|
"title": "Remove",
|
||||||
"url": package.getRemoveURL()
|
"url": package.getURL("packages.remove")
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ def list_all():
|
||||||
if qb.lucky:
|
if qb.lucky:
|
||||||
package = query.first()
|
package = query.first()
|
||||||
if package:
|
if package:
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
topic = qb.buildTopicQuery().first()
|
topic = qb.buildTopicQuery().first()
|
||||||
if qb.search and topic:
|
if qb.search and topic:
|
||||||
|
@ -206,7 +206,7 @@ def download(package):
|
||||||
return "", 204
|
return "", 204
|
||||||
else:
|
else:
|
||||||
flash("No download available.", "danger")
|
flash("No download available.", "danger")
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
else:
|
else:
|
||||||
return redirect(release.getDownloadURL())
|
return redirect(release.getDownloadURL())
|
||||||
|
|
||||||
|
@ -263,7 +263,7 @@ def create_edit(author=None, name=None):
|
||||||
if package is None:
|
if package is None:
|
||||||
abort(404)
|
abort(404)
|
||||||
if not package.checkPerm(current_user, Permission.EDIT_PACKAGE):
|
if not package.checkPerm(current_user, Permission.EDIT_PACKAGE):
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
author = package.author
|
author = package.author
|
||||||
|
|
||||||
|
@ -321,11 +321,11 @@ def create_edit(author=None, name=None):
|
||||||
if wasNew and package.repo is not None:
|
if wasNew and package.repo is not None:
|
||||||
importRepoScreenshot.delay(package.id)
|
importRepoScreenshot.delay(package.id)
|
||||||
|
|
||||||
next_url = package.getDetailsURL()
|
next_url = package.getURL("packages.view")
|
||||||
if wasNew and ("WTFPL" in package.license.name or "WTFPL" in package.media_license.name):
|
if wasNew and ("WTFPL" in package.license.name or "WTFPL" in package.media_license.name):
|
||||||
next_url = url_for("flatpage", path="help/wtfpl", r=next_url)
|
next_url = url_for("flatpage", path="help/wtfpl", r=next_url)
|
||||||
elif wasNew:
|
elif wasNew:
|
||||||
next_url = package.getSetupReleasesURL()
|
next_url = package.getURL("packages.setup_releases")
|
||||||
|
|
||||||
return redirect(next_url)
|
return redirect(next_url)
|
||||||
except LogicError as e:
|
except LogicError as e:
|
||||||
|
@ -353,7 +353,7 @@ def move_to_state(package):
|
||||||
|
|
||||||
if not package.canMoveToState(current_user, state):
|
if not package.canMoveToState(current_user, state):
|
||||||
flash("You don't have permission to do that", "danger")
|
flash("You don't have permission to do that", "danger")
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
package.state = state
|
package.state = state
|
||||||
msg = "Marked {} as {}".format(package.title, state.value)
|
msg = "Marked {} as {}".format(package.title, state.value)
|
||||||
|
@ -368,9 +368,9 @@ def move_to_state(package):
|
||||||
|
|
||||||
msg = "Approved {}".format(package.title)
|
msg = "Approved {}".format(package.title)
|
||||||
|
|
||||||
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_APPROVAL, msg, package.getDetailsURL(), package)
|
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_APPROVAL, msg, package.getURL("packages.view"), package)
|
||||||
severity = AuditSeverity.NORMAL if current_user in package.maintainers else AuditSeverity.EDITOR
|
severity = AuditSeverity.NORMAL if current_user in package.maintainers else AuditSeverity.EDITOR
|
||||||
addAuditLog(severity, current_user, msg, package.getDetailsURL(), package)
|
addAuditLog(severity, current_user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ def move_to_state(package):
|
||||||
else:
|
else:
|
||||||
return redirect(url_for('threads.new', pid=package.id, title='Package approval comments'))
|
return redirect(url_for('threads.new', pid=package.id, title='Package approval comments'))
|
||||||
|
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/packages/<author>/<name>/remove/", methods=["GET", "POST"])
|
@bp.route("/packages/<author>/<name>/remove/", methods=["GET", "POST"])
|
||||||
|
@ -395,7 +395,7 @@ def remove(package):
|
||||||
if "delete" in request.form:
|
if "delete" in request.form:
|
||||||
if not package.checkPerm(current_user, Permission.DELETE_PACKAGE):
|
if not package.checkPerm(current_user, Permission.DELETE_PACKAGE):
|
||||||
flash("You don't have permission to do that.", "danger")
|
flash("You don't have permission to do that.", "danger")
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
package.state = PackageState.DELETED
|
package.state = PackageState.DELETED
|
||||||
|
|
||||||
|
@ -411,19 +411,19 @@ def remove(package):
|
||||||
elif "unapprove" in request.form:
|
elif "unapprove" in request.form:
|
||||||
if not package.checkPerm(current_user, Permission.UNAPPROVE_PACKAGE):
|
if not package.checkPerm(current_user, Permission.UNAPPROVE_PACKAGE):
|
||||||
flash("You don't have permission to do that.", "danger")
|
flash("You don't have permission to do that.", "danger")
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
package.state = PackageState.WIP
|
package.state = PackageState.WIP
|
||||||
|
|
||||||
msg = "Unapproved {}".format(package.title)
|
msg = "Unapproved {}".format(package.title)
|
||||||
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_APPROVAL, msg, package.getDetailsURL(), package)
|
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_APPROVAL, msg, package.getURL("packages.view"), package)
|
||||||
addAuditLog(AuditSeverity.EDITOR, current_user, msg, package.getDetailsURL(), package)
|
addAuditLog(AuditSeverity.EDITOR, current_user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
flash("Unapproved package", "success")
|
flash("Unapproved package", "success")
|
||||||
|
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
else:
|
else:
|
||||||
abort(400)
|
abort(400)
|
||||||
|
|
||||||
|
@ -440,7 +440,7 @@ class PackageMaintainersForm(FlaskForm):
|
||||||
def edit_maintainers(package):
|
def edit_maintainers(package):
|
||||||
if not package.checkPerm(current_user, Permission.EDIT_MAINTAINERS):
|
if not package.checkPerm(current_user, Permission.EDIT_MAINTAINERS):
|
||||||
flash("You do not have permission to edit maintainers", "danger")
|
flash("You do not have permission to edit maintainers", "danger")
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
form = PackageMaintainersForm(formdata=request.form)
|
form = PackageMaintainersForm(formdata=request.form)
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
@ -457,12 +457,12 @@ def edit_maintainers(package):
|
||||||
if thread:
|
if thread:
|
||||||
thread.watchers.append(user)
|
thread.watchers.append(user)
|
||||||
addNotification(user, current_user, NotificationType.MAINTAINER,
|
addNotification(user, current_user, NotificationType.MAINTAINER,
|
||||||
"Added you as a maintainer of {}".format(package.title), package.getDetailsURL(), package)
|
"Added you as a maintainer of {}".format(package.title), package.getURL("packages.view"), package)
|
||||||
|
|
||||||
for user in package.maintainers:
|
for user in package.maintainers:
|
||||||
if user != package.author and not user in users:
|
if user != package.author and not user in users:
|
||||||
addNotification(user, current_user, NotificationType.MAINTAINER,
|
addNotification(user, current_user, NotificationType.MAINTAINER,
|
||||||
"Removed you as a maintainer of {}".format(package.title), package.getDetailsURL(), package)
|
"Removed you as a maintainer of {}".format(package.title), package.getURL("packages.view"), package)
|
||||||
|
|
||||||
package.maintainers.clear()
|
package.maintainers.clear()
|
||||||
package.maintainers.extend(users)
|
package.maintainers.extend(users)
|
||||||
|
@ -470,13 +470,13 @@ def edit_maintainers(package):
|
||||||
package.maintainers.append(package.author)
|
package.maintainers.append(package.author)
|
||||||
|
|
||||||
msg = "Edited {} maintainers".format(package.title)
|
msg = "Edited {} maintainers".format(package.title)
|
||||||
addNotification(package.author, current_user, NotificationType.MAINTAINER, msg, package.getDetailsURL(), package)
|
addNotification(package.author, current_user, NotificationType.MAINTAINER, msg, package.getURL("packages.view"), package)
|
||||||
severity = AuditSeverity.NORMAL if current_user == package.author else AuditSeverity.MODERATION
|
severity = AuditSeverity.NORMAL if current_user == package.author else AuditSeverity.MODERATION
|
||||||
addAuditLog(severity, current_user, msg, package.getDetailsURL(), package)
|
addAuditLog(severity, current_user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
users = User.query.filter(User.rank >= UserRank.NEW_MEMBER).order_by(db.asc(User.username)).all()
|
users = User.query.filter(User.rank >= UserRank.NEW_MEMBER).order_by(db.asc(User.username)).all()
|
||||||
|
|
||||||
|
@ -498,11 +498,11 @@ def remove_self_maintainers(package):
|
||||||
package.maintainers.remove(current_user)
|
package.maintainers.remove(current_user)
|
||||||
|
|
||||||
addNotification(package.author, current_user, NotificationType.MAINTAINER,
|
addNotification(package.author, current_user, NotificationType.MAINTAINER,
|
||||||
"Removed themself as a maintainer of {}".format(package.title), package.getDetailsURL(), package)
|
"Removed themself as a maintainer of {}".format(package.title), package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/packages/<author>/<name>/audit/")
|
@bp.route("/packages/<author>/<name>/audit/")
|
||||||
|
@ -556,7 +556,7 @@ def alias_create_edit(package: Package, alias_id: int = None):
|
||||||
form.populate_obj(alias)
|
form.populate_obj(alias)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getAliasListURL())
|
return redirect(package.getURL("packages.alias_list"))
|
||||||
|
|
||||||
return render_template("packages/alias_create_edit.html", package=package, form=form)
|
return render_template("packages/alias_create_edit.html", package=package, form=form)
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ class EditPackageReleaseForm(FlaskForm):
|
||||||
@is_package_page
|
@is_package_page
|
||||||
def create_release(package):
|
def create_release(package):
|
||||||
if not package.checkPerm(current_user, Permission.MAKE_RELEASE):
|
if not package.checkPerm(current_user, Permission.MAKE_RELEASE):
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
# Initial form class from post data and default data
|
# Initial form class from post data and default data
|
||||||
form = CreatePackageReleaseForm()
|
form = CreatePackageReleaseForm()
|
||||||
|
@ -144,7 +144,7 @@ def edit_release(package, id):
|
||||||
canEdit = package.checkPerm(current_user, Permission.MAKE_RELEASE)
|
canEdit = package.checkPerm(current_user, Permission.MAKE_RELEASE)
|
||||||
canApprove = release.checkPerm(current_user, Permission.APPROVE_RELEASE)
|
canApprove = release.checkPerm(current_user, Permission.APPROVE_RELEASE)
|
||||||
if not (canEdit or canApprove):
|
if not (canEdit or canApprove):
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
# Initial form class from post data and default data
|
# Initial form class from post data and default data
|
||||||
form = EditPackageReleaseForm(formdata=request.form, obj=release)
|
form = EditPackageReleaseForm(formdata=request.form, obj=release)
|
||||||
|
@ -171,7 +171,7 @@ def edit_release(package, id):
|
||||||
release.approved = False
|
release.approved = False
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect(package.getReleaseListURL())
|
return redirect(package.getURL("packages.list_releases"))
|
||||||
|
|
||||||
return render_template("packages/release_edit.html", package=package, release=release, form=form)
|
return render_template("packages/release_edit.html", package=package, release=release, form=form)
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ class BulkReleaseForm(FlaskForm):
|
||||||
@is_package_page
|
@is_package_page
|
||||||
def bulk_change_release(package):
|
def bulk_change_release(package):
|
||||||
if not package.checkPerm(current_user, Permission.MAKE_RELEASE):
|
if not package.checkPerm(current_user, Permission.MAKE_RELEASE):
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
# Initial form class from post data and default data
|
# Initial form class from post data and default data
|
||||||
form = BulkReleaseForm()
|
form = BulkReleaseForm()
|
||||||
|
@ -211,7 +211,7 @@ def bulk_change_release(package):
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getReleaseListURL())
|
return redirect(package.getURL("packages.list_releases"))
|
||||||
|
|
||||||
return render_template("packages/release_bulk_change.html", package=package, form=form)
|
return render_template("packages/release_bulk_change.html", package=package, form=form)
|
||||||
|
|
||||||
|
@ -225,12 +225,12 @@ def delete_release(package, id):
|
||||||
abort(404)
|
abort(404)
|
||||||
|
|
||||||
if not release.checkPerm(current_user, Permission.DELETE_RELEASE):
|
if not release.checkPerm(current_user, Permission.DELETE_RELEASE):
|
||||||
return redirect(release.getReleaseListURL())
|
return redirect(package.getURL("packages.list_releases"))
|
||||||
|
|
||||||
db.session.delete(release)
|
db.session.delete(release)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
|
|
||||||
class PackageUpdateConfigFrom(FlaskForm):
|
class PackageUpdateConfigFrom(FlaskForm):
|
||||||
|
@ -279,7 +279,7 @@ def update_config(package):
|
||||||
|
|
||||||
if not package.repo:
|
if not package.repo:
|
||||||
flash("Please add a Git repository URL in order to set up automatic releases", "danger")
|
flash("Please add a Git repository URL in order to set up automatic releases", "danger")
|
||||||
return redirect(package.getEditURL())
|
return redirect(package.getURL("packages.create_edit"))
|
||||||
|
|
||||||
form = PackageUpdateConfigFrom(obj=package.update_config)
|
form = PackageUpdateConfigFrom(obj=package.update_config)
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
@ -303,9 +303,9 @@ def update_config(package):
|
||||||
|
|
||||||
if not form.disable.data and package.releases.count() == 0:
|
if not form.disable.data and package.releases.count() == 0:
|
||||||
flash("Now, please create an initial release", "success")
|
flash("Now, please create an initial release", "success")
|
||||||
return redirect(package.getCreateReleaseURL())
|
return redirect(package.getURL("packages.create_release"))
|
||||||
|
|
||||||
return redirect(package.getReleaseListURL())
|
return redirect(package.getURL("packages.list_releases"))
|
||||||
|
|
||||||
return render_template("packages/update_config.html", package=package, form=form)
|
return render_template("packages/update_config.html", package=package, form=form)
|
||||||
|
|
||||||
|
@ -318,7 +318,7 @@ def setup_releases(package):
|
||||||
abort(403)
|
abort(403)
|
||||||
|
|
||||||
if package.update_config:
|
if package.update_config:
|
||||||
return redirect(package.getUpdateConfigURL())
|
return redirect(package.getURL("packages.update_config"))
|
||||||
|
|
||||||
return render_template("packages/release_wizard.html", package=package)
|
return render_template("packages/release_wizard.html", package=package)
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ class ReviewForm(FlaskForm):
|
||||||
def review(package):
|
def review(package):
|
||||||
if current_user in package.maintainers:
|
if current_user in package.maintainers:
|
||||||
flash("You can't review your own package!", "danger")
|
flash("You can't review your own package!", "danger")
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
review = PackageReview.query.filter_by(package=package, author=current_user).first()
|
review = PackageReview.query.filter_by(package=package, author=current_user).first()
|
||||||
|
|
||||||
|
@ -110,7 +110,7 @@ def review(package):
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
return render_template("packages/review_create_edit.html",
|
return render_template("packages/review_create_edit.html",
|
||||||
form=form, package=package, review=review)
|
form=form, package=package, review=review)
|
||||||
|
|
|
@ -50,10 +50,10 @@ class EditPackageScreenshotsForm(FlaskForm):
|
||||||
@is_package_page
|
@is_package_page
|
||||||
def screenshots(package):
|
def screenshots(package):
|
||||||
if not package.checkPerm(current_user, Permission.ADD_SCREENSHOTS):
|
if not package.checkPerm(current_user, Permission.ADD_SCREENSHOTS):
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
if package.screenshots.count() == 0:
|
if package.screenshots.count() == 0:
|
||||||
return redirect(package.getNewScreenshotURL())
|
return redirect(package.getURL("packages.create_screenshot"))
|
||||||
|
|
||||||
form = EditPackageScreenshotsForm(obj=package)
|
form = EditPackageScreenshotsForm(obj=package)
|
||||||
form.cover_image.query = package.screenshots
|
form.cover_image.query = package.screenshots
|
||||||
|
@ -63,7 +63,7 @@ def screenshots(package):
|
||||||
if order:
|
if order:
|
||||||
try:
|
try:
|
||||||
do_order_screenshots(current_user, package, order.split(","))
|
do_order_screenshots(current_user, package, order.split(","))
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
except LogicError as e:
|
except LogicError as e:
|
||||||
flash(e.message, "danger")
|
flash(e.message, "danger")
|
||||||
|
|
||||||
|
@ -80,14 +80,14 @@ def screenshots(package):
|
||||||
@is_package_page
|
@is_package_page
|
||||||
def create_screenshot(package):
|
def create_screenshot(package):
|
||||||
if not package.checkPerm(current_user, Permission.ADD_SCREENSHOTS):
|
if not package.checkPerm(current_user, Permission.ADD_SCREENSHOTS):
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
|
|
||||||
# Initial form class from post data and default data
|
# Initial form class from post data and default data
|
||||||
form = CreateScreenshotForm()
|
form = CreateScreenshotForm()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
try:
|
try:
|
||||||
do_create_screenshot(current_user, package, form.title.data, form.fileUpload.data)
|
do_create_screenshot(current_user, package, form.title.data, form.fileUpload.data)
|
||||||
return redirect(package.getEditScreenshotsURL())
|
return redirect(package.getURL("packages.screenshots"))
|
||||||
except LogicError as e:
|
except LogicError as e:
|
||||||
flash(e.message, "danger")
|
flash(e.message, "danger")
|
||||||
|
|
||||||
|
@ -105,7 +105,7 @@ def edit_screenshot(package, id):
|
||||||
canEdit = package.checkPerm(current_user, Permission.ADD_SCREENSHOTS)
|
canEdit = package.checkPerm(current_user, Permission.ADD_SCREENSHOTS)
|
||||||
canApprove = package.checkPerm(current_user, Permission.APPROVE_SCREENSHOT)
|
canApprove = package.checkPerm(current_user, Permission.APPROVE_SCREENSHOT)
|
||||||
if not (canEdit or canApprove):
|
if not (canEdit or canApprove):
|
||||||
return redirect(package.getEditScreenshotsURL())
|
return redirect(package.getURL("packages.screenshots"))
|
||||||
|
|
||||||
# Initial form class from post data and default data
|
# Initial form class from post data and default data
|
||||||
form = EditScreenshotForm(obj=screenshot)
|
form = EditScreenshotForm(obj=screenshot)
|
||||||
|
@ -121,7 +121,7 @@ def edit_screenshot(package, id):
|
||||||
screenshot.approved = wasApproved
|
screenshot.approved = wasApproved
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return redirect(package.getEditScreenshotsURL())
|
return redirect(package.getURL("packages.screenshots"))
|
||||||
|
|
||||||
return render_template("packages/screenshot_edit.html", package=package, screenshot=screenshot, form=form)
|
return render_template("packages/screenshot_edit.html", package=package, screenshot=screenshot, form=form)
|
||||||
|
|
||||||
|
@ -145,4 +145,4 @@ def delete_screenshot(package, id):
|
||||||
db.session.delete(screenshot)
|
db.session.delete(screenshot)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(package.getEditScreenshotsURL())
|
return redirect(package.getURL("packages.screenshots"))
|
||||||
|
|
|
@ -296,7 +296,7 @@ def new():
|
||||||
flash("Please wait before opening another thread", "danger")
|
flash("Please wait before opening another thread", "danger")
|
||||||
|
|
||||||
if package:
|
if package:
|
||||||
return redirect(package.getDetailsURL())
|
return redirect(package.getURL("packages.view"))
|
||||||
else:
|
else:
|
||||||
return redirect(url_for("homepage.home"))
|
return redirect(url_for("homepage.home"))
|
||||||
|
|
||||||
|
|
|
@ -221,8 +221,8 @@ def apply_all_updates(username):
|
||||||
|
|
||||||
msg = "Created release {} (Applied all Git Update Detection)".format(rel.title)
|
msg = "Created release {} (Applied all Git Update Detection)".format(rel.title)
|
||||||
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_EDIT, msg,
|
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_EDIT, msg,
|
||||||
rel.getEditURL(), package)
|
rel.getURL("packages.create_edit"), package)
|
||||||
addAuditLog(AuditSeverity.NORMAL, current_user, msg, package.getDetailsURL(), package)
|
addAuditLog(AuditSeverity.NORMAL, current_user, msg, package.getURL("packages.view"), package)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return redirect(url_for("todo.view_user", username=username))
|
return redirect(url_for("todo.view_user", username=username))
|
||||||
|
|
|
@ -176,7 +176,7 @@ def do_edit_package(user: User, package: Package, was_new: bool, was_web: bool,
|
||||||
msg = "Edited {} ({})".format(package.title, reason)
|
msg = "Edited {} ({})".format(package.title, reason)
|
||||||
|
|
||||||
severity = AuditSeverity.NORMAL if user in package.maintainers else AuditSeverity.EDITOR
|
severity = AuditSeverity.NORMAL if user in package.maintainers else AuditSeverity.EDITOR
|
||||||
addAuditLog(severity, user, msg, package.getDetailsURL(), package)
|
addAuditLog(severity, user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ def do_create_vcs_release(user: User, package: Package, title: str, ref: str,
|
||||||
msg = "Created release {}".format(rel.title)
|
msg = "Created release {}".format(rel.title)
|
||||||
else:
|
else:
|
||||||
msg = "Created release {} ({})".format(rel.title, reason)
|
msg = "Created release {} ({})".format(rel.title, reason)
|
||||||
addAuditLog(AuditSeverity.NORMAL, user, msg, package.getDetailsURL(), package)
|
addAuditLog(AuditSeverity.NORMAL, user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ def do_create_zip_release(user: User, package: Package, title: str, file,
|
||||||
msg = "Created release {}".format(rel.title)
|
msg = "Created release {}".format(rel.title)
|
||||||
else:
|
else:
|
||||||
msg = "Created release {} ({})".format(rel.title, reason)
|
msg = "Created release {} ({})".format(rel.title, reason)
|
||||||
addAuditLog(AuditSeverity.NORMAL, user, msg, package.getDetailsURL(), package)
|
addAuditLog(AuditSeverity.NORMAL, user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
|
@ -32,8 +32,8 @@ def do_create_screenshot(user: User, package: Package, title: str, file, reason:
|
||||||
else:
|
else:
|
||||||
msg = "Created screenshot {} ({})".format(ss.title, reason)
|
msg = "Created screenshot {} ({})".format(ss.title, reason)
|
||||||
|
|
||||||
addNotification(package.maintainers, user, NotificationType.PACKAGE_EDIT, msg, package.getDetailsURL(), package)
|
addNotification(package.maintainers, user, NotificationType.PACKAGE_EDIT, msg, package.getURL("packages.view"), package)
|
||||||
addAuditLog(AuditSeverity.NORMAL, user, msg, package.getDetailsURL(), package)
|
addAuditLog(AuditSeverity.NORMAL, user, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
|
@ -435,7 +435,7 @@ class Package(db.Model):
|
||||||
"thumbnail": (base_url + tnurl) if tnurl is not None else None,
|
"thumbnail": (base_url + tnurl) if tnurl is not None else None,
|
||||||
"screenshots": [base_url + ss.url for ss in self.screenshots],
|
"screenshots": [base_url + ss.url for ss in self.screenshots],
|
||||||
|
|
||||||
"url": base_url + self.getDownloadURL(),
|
"url": base_url + self.getURL("packages.download"),
|
||||||
"release": release and release.id,
|
"release": release and release.id,
|
||||||
|
|
||||||
"score": round(self.score * 10) / 10,
|
"score": round(self.score * 10) / 10,
|
||||||
|
@ -460,17 +460,12 @@ class Package(db.Model):
|
||||||
else:
|
else:
|
||||||
return screenshot.url
|
return screenshot.url
|
||||||
|
|
||||||
def getURL(self, endpoint):
|
def getURL(self, endpoint, absolute=False, **kwargs):
|
||||||
return url_for(endpoint, author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getDetailsURL(self, absolute=False):
|
|
||||||
if absolute:
|
if absolute:
|
||||||
from app.utils import abs_url_for
|
from app.utils import abs_url_for
|
||||||
return abs_url_for("packages.view",
|
return abs_url_for(endpoint, author=self.author.username, name=self.name, **kwargs)
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
else:
|
else:
|
||||||
return url_for("packages.view",
|
return url_for(endpoint, author=self.author.username, name=self.name, **kwargs)
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getShieldURL(self, type):
|
def getShieldURL(self, type):
|
||||||
from app.utils import abs_url_for
|
from app.utils import abs_url_for
|
||||||
|
@ -479,15 +474,7 @@ class Package(db.Model):
|
||||||
|
|
||||||
def makeShield(self, type):
|
def makeShield(self, type):
|
||||||
return "[![ContentDB]({})]({})" \
|
return "[![ContentDB]({})]({})" \
|
||||||
.format(self.getShieldURL(type), self.getDetailsURL(True))
|
.format(self.getShieldURL(type), self.getURL("packages.view", True))
|
||||||
|
|
||||||
def getEditURL(self):
|
|
||||||
return url_for("packages.create_edit",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getReleaseListURL(self):
|
|
||||||
return url_for("packages.list_releases",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getSetStateURL(self, state):
|
def getSetStateURL(self, state):
|
||||||
if type(state) == str:
|
if type(state) == str:
|
||||||
|
@ -498,54 +485,6 @@ class Package(db.Model):
|
||||||
return url_for("packages.move_to_state",
|
return url_for("packages.move_to_state",
|
||||||
author=self.author.username, name=self.name, state=state.name.lower())
|
author=self.author.username, name=self.name, state=state.name.lower())
|
||||||
|
|
||||||
def getRemoveURL(self):
|
|
||||||
return url_for("packages.remove",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getNewScreenshotURL(self):
|
|
||||||
return url_for("packages.create_screenshot",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getEditScreenshotsURL(self):
|
|
||||||
return url_for("packages.screenshots",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getCreateReleaseURL(self, **kwargs):
|
|
||||||
return url_for("packages.create_release",
|
|
||||||
author=self.author.username, name=self.name, **kwargs)
|
|
||||||
|
|
||||||
def getBulkReleaseURL(self):
|
|
||||||
return url_for("packages.bulk_change_release",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getUpdateConfigURL(self, trigger=None, action=None):
|
|
||||||
return url_for("packages.update_config",
|
|
||||||
author=self.author.username, name=self.name, trigger=trigger, action=action)
|
|
||||||
|
|
||||||
def getSetupReleasesURL(self):
|
|
||||||
return url_for("packages.setup_releases",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getDownloadURL(self):
|
|
||||||
return url_for("packages.download",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getEditMaintainersURL(self):
|
|
||||||
return url_for("packages.edit_maintainers",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getRemoveSelfMaintainerURL(self):
|
|
||||||
return url_for("packages.remove_self_maintainers",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getReviewURL(self, external=False):
|
|
||||||
return url_for('packages.review', _external=external,
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getAuditLogURL(self):
|
|
||||||
return url_for('packages.audit',
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getDownloadRelease(self, version=None):
|
def getDownloadRelease(self, version=None):
|
||||||
for rel in self.releases:
|
for rel in self.releases:
|
||||||
if rel.approved and (version is None or
|
if rel.approved and (version is None or
|
||||||
|
@ -555,14 +494,6 @@ class Package(db.Model):
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def getAliasListURL(self):
|
|
||||||
return url_for("packages.alias_list",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def getAliasCreateURL(self):
|
|
||||||
return url_for("packages.alias_create_edit",
|
|
||||||
author=self.author.username, name=self.name)
|
|
||||||
|
|
||||||
def checkPerm(self, user, perm):
|
def checkPerm(self, user, perm):
|
||||||
if not user.is_authenticated:
|
if not user.is_authenticated:
|
||||||
return False
|
return False
|
||||||
|
@ -1049,7 +980,7 @@ class PackageUpdateConfig(db.Model):
|
||||||
return self.last_tag or self.last_commit
|
return self.last_tag or self.last_commit
|
||||||
|
|
||||||
def get_create_release_url(self):
|
def get_create_release_url(self):
|
||||||
return self.package.getCreateReleaseURL(title=self.get_title(), ref=self.get_ref())
|
return self.package.getURL("packages.create_release", title=self.get_title(), ref=self.get_ref())
|
||||||
|
|
||||||
|
|
||||||
class PackageAlias(db.Model):
|
class PackageAlias(db.Model):
|
||||||
|
|
|
@ -150,7 +150,7 @@ class PackageReview(db.Model):
|
||||||
return 1 if self.recommends else -1
|
return 1 if self.recommends else -1
|
||||||
|
|
||||||
def getEditURL(self):
|
def getEditURL(self):
|
||||||
return self.package.getReviewURL()
|
return self.package.getURL("packages.review")
|
||||||
|
|
||||||
def getDeleteURL(self):
|
def getDeleteURL(self):
|
||||||
return url_for("packages.delete_review",
|
return url_for("packages.delete_review",
|
||||||
|
|
|
@ -262,7 +262,7 @@ def check_update_config_impl(package):
|
||||||
db.session.add(rel)
|
db.session.add(rel)
|
||||||
|
|
||||||
msg = "Created release {} (Git Update Detection)".format(rel.title)
|
msg = "Created release {} (Git Update Detection)".format(rel.title)
|
||||||
addSystemAuditLog(AuditSeverity.NORMAL, msg, package.getDetailsURL(), package)
|
addSystemAuditLog(AuditSeverity.NORMAL, msg, package.getURL("packages.view"), package)
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
@ -320,7 +320,7 @@ def check_update_config(self, package_id):
|
||||||
.strip()
|
.strip()
|
||||||
|
|
||||||
msg = "Error: {}.\n\nTask ID: {}\n\n[Change update configuration]({})" \
|
msg = "Error: {}.\n\nTask ID: {}\n\n[Change update configuration]({})" \
|
||||||
.format(err, self.request.id, package.getUpdateConfigURL())
|
.format(err, self.request.id, package.getURL("packages.update_config"))
|
||||||
|
|
||||||
post_bot_message(package, "Failed to check git repository", msg)
|
post_bot_message(package, "Failed to check git repository", msg)
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
{% set cover_image = package.cover_image.url or package.getMainScreenshotURL() %}
|
{% set cover_image = package.cover_image.url or package.getMainScreenshotURL() %}
|
||||||
{% set tags = package.tags | sort(attribute="views", reverse=True) %}
|
{% set tags = package.tags | sort(attribute="views", reverse=True) %}
|
||||||
<div class="carousel-item {% if loop.index == 1 %}active{% endif %}">
|
<div class="carousel-item {% if loop.index == 1 %}active{% endif %}">
|
||||||
<a href="{{ package.getDetailsURL() }}">
|
<a href="{{ package.getURL("packages.view") }}">
|
||||||
<div class="embed-responsive embed-responsive-16by9">
|
<div class="embed-responsive embed-responsive-16by9">
|
||||||
<img class="embed-responsive-item" src="{{ cover_image }}"
|
<img class="embed-responsive-item" src="{{ cover_image }}"
|
||||||
alt="{{ _('%(title)s by %(author)s', title=package.title, author=package.author.display_name) }}">
|
alt="{{ _('%(title)s by %(author)s', title=package.title, author=package.author.display_name) }}">
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
{% set message %}
|
{% set message %}
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
{% if package.update_config %}
|
{% if package.update_config %}
|
||||||
<a class="btn btn-sm btn-warning float-right" href="{{ package.getCreateReleaseURL() }}">Create first release</a>
|
<a class="btn btn-sm btn-warning float-right" href="{{ package.getURL("packages.create_release") }}">Create first release</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="btn btn-sm btn-warning float-right" href="{{ package.getSetupReleasesURL() }}">Set up releases</a>
|
<a class="btn btn-sm btn-warning float-right" href="{{ package.getURL("packages.setup_releases") }}">Set up releases</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _("You need to create a release before this package can be approved.") }}
|
{{ _("You need to create a release before this package can be approved.") }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% macro render_pkgtile(package, show_author) -%}
|
{% macro render_pkgtile(package, show_author) -%}
|
||||||
<li class="packagetile flex-fill"><a href="{{ package.getDetailsURL() }}"
|
<li class="packagetile flex-fill"><a href="{{ package.getURL("packages.view") }}"
|
||||||
style="background-image: url({{ package.getThumbnailOrPlaceholder(2) }});">
|
style="background-image: url({{ package.getThumbnailOrPlaceholder(2) }});">
|
||||||
<div class="packagegridscrub"></div>
|
<div class="packagegridscrub"></div>
|
||||||
<div class="packagegridinfo">
|
<div class="packagegridinfo">
|
||||||
|
|
|
@ -88,7 +88,7 @@
|
||||||
created {{ rel.releaseDate | date }}.
|
created {{ rel.releaseDate | date }}.
|
||||||
</small>
|
</small>
|
||||||
{% if (package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE")) and rel.task_id %}
|
{% if (package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE")) and rel.task_id %}
|
||||||
<a href="{{ url_for('tasks.check', id=rel.task_id, r=package.getDetailsURL()) }}">Importing...</a>
|
<a href="{{ url_for('tasks.check', id=rel.task_id, r=package.getURL("packages.view")) }}">Importing...</a>
|
||||||
{% elif not rel.approved %}
|
{% elif not rel.approved %}
|
||||||
Waiting for approval.
|
Waiting for approval.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
<div class="card-body markdown">
|
<div class="card-body markdown">
|
||||||
{% if current_user == review.author %}
|
{% if current_user == review.author %}
|
||||||
<a class="btn btn-primary btn-sm ml-1 float-right"
|
<a class="btn btn-primary btn-sm ml-1 float-right"
|
||||||
href="{{ review.package.getReviewURL() }}">
|
href="{{ review.package.getURL("packages.review") }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
<p class="mt-2 mb-0">
|
<p class="mt-2 mb-0">
|
||||||
{% if show_package_link %}
|
{% if show_package_link %}
|
||||||
<a class="btn btn-primary mr-1" href="{{ review.package.getDetailsURL() }}">
|
<a class="btn btn-primary mr-1" href="{{ review.package.getURL("packages.view") }}">
|
||||||
{{ _("%(title)s by %(author)s",
|
{{ _("%(title)s by %(author)s",
|
||||||
title="<b>" | safe + review.package.title + "</b>" | safe,
|
title="<b>" | safe + review.package.title + "</b>" | safe,
|
||||||
author=review.package.author.display_name) }}
|
author=review.package.author.display_name) }}
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
{{ _("Review") }}
|
{{ _("Review") }}
|
||||||
</div>
|
</div>
|
||||||
<form method="post" action="{{ package.getReviewURL() }}" class="card-body">
|
<form method="post" action="{{ package.getURL("packages.review") }}" class="card-body">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<p>
|
<p>
|
||||||
{{ _("Do you recommend this %(type)s?", type=package.type.value | lower) }}
|
{{ _("Do you recommend this %(type)s?", type=package.type.value | lower) }}
|
||||||
|
@ -117,7 +117,7 @@
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
{{ _("Review") }}
|
{{ _("Review") }}
|
||||||
</div>
|
</div>
|
||||||
<form method="post" action="{{ package.getReviewURL() }}" class="card-body">
|
<form method="post" action="{{ package.getURL("packages.review") }}" class="card-body">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<p>
|
<p>
|
||||||
{{ _("Do you recommend this %(type)s?", type=package.type.value | lower) }}
|
{{ _("Do you recommend this %(type)s?", type=package.type.value | lower) }}
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
{% if current_user == thread.author and thread.review and thread.replies[0] == r %}
|
{% if current_user == thread.author and thread.review and thread.replies[0] == r %}
|
||||||
<a class="float-right btn btn-primary btn-sm ml-2"
|
<a class="float-right btn btn-primary btn-sm ml-2"
|
||||||
href="{{ thread.review.package.getReviewURL() }}">
|
href="{{ thread.review.package.getURL("packages.review") }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
{% elif r.checkPerm(current_user, "EDIT_REPLY") %}
|
{% elif r.checkPerm(current_user, "EDIT_REPLY") %}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{% if package %}
|
{% if package %}
|
||||||
<a class="col-sm-auto text-muted" style="min-width: 200px;" href="{{ package.getDetailsURL() }}">
|
<a class="col-sm-auto text-muted" style="min-width: 200px;" href="{{ package.getURL("packages.view") }}">
|
||||||
<img
|
<img
|
||||||
class="img-fluid"
|
class="img-fluid"
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% if package.checkPerm(current_player, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_player, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-sm btn-secondary" href="{{ package.getUpdateConfigURL() }}">
|
<a class="btn btn-sm btn-secondary" href="{{ package.getURL("packages.update_config") }}">
|
||||||
<i class="fas fa-cog mr-1"></i>
|
<i class="fas fa-cog mr-1"></i>
|
||||||
{{ _("Update settings") }}
|
{{ _("Update settings") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block link %}
|
{% block link %}
|
||||||
<a href="{{ package.getDetailsURL() }}">{{ package.title }}</a>
|
<a href="{{ package.getURL("packages.view") }}">{{ package.title }}</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-secondary" href="{{ package.getAliasListURL() }}">Back to Aliases</a>
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.alias_list") }}">Back to Aliases</a>
|
||||||
|
|
||||||
{% from "macros/forms.html" import render_field, render_submit_field, render_toggle_field %}
|
{% from "macros/forms.html" import render_field, render_submit_field, render_toggle_field %}
|
||||||
<form method="POST" action="" enctype="multipart/form-data" class="mt-4">
|
<form method="POST" action="" enctype="multipart/form-data" class="mt-4">
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block link %}
|
{% block link %}
|
||||||
<a href="{{ package.getDetailsURL() }}">{{ package.title }}</a>
|
<a href="{{ package.getURL("packages.view") }}">{{ package.title }}</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-primary float-right" href="{{ package.getAliasCreateURL() }}">Create</a>
|
<a class="btn btn-primary float-right" href="{{ package.getURL("packages.alias_create_edit") }}">Create</a>
|
||||||
<h1>{{ _("Aliases for %(title)s by %(author)s", title=self.link(), author=package.author.display_name) }}</h1>
|
<h1>{{ _("Aliases for %(title)s by %(author)s", title=self.link(), author=package.author.display_name) }}</h1>
|
||||||
|
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-3 mb-4">
|
<div class="col-md-3 mb-4">
|
||||||
<div class="list-group">
|
<div class="list-group">
|
||||||
<a class="list-group-item list-group-item-action" href="{{ package.getDetailsURL() }}">
|
<a class="list-group-item list-group-item-action" href="{{ package.getURL("packages.view") }}">
|
||||||
<span class="row m-0 p-0">
|
<span class="row m-0 p-0">
|
||||||
<span class="col-auto m-0 p-0">
|
<span class="col-auto m-0 p-0">
|
||||||
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
<img class="img-fluid user-photo img-thumbnail img-thumbnail-1"
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
{% if package.update_config %}
|
{% if package.update_config %}
|
||||||
<p class="alert alert-secondary mb-4">
|
<p class="alert alert-secondary mb-4">
|
||||||
<a class="float-right btn btn-sm btn-secondary" href="{{ package.getUpdateConfigURL() }}">{{ _("Settings") }}</a>
|
<a class="float-right btn btn-sm btn-secondary" href="{{ package.getURL("packages.update_config") }}">{{ _("Settings") }}</a>
|
||||||
{% if package.update_config.make_release %}
|
{% if package.update_config.make_release %}
|
||||||
{{ _("You have automatic releases enabled.") }}
|
{{ _("You have automatic releases enabled.") }}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -20,12 +20,12 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="alert alert-info mb-4">
|
<p class="alert alert-info mb-4">
|
||||||
{% if package.repo %}
|
{% if package.repo %}
|
||||||
<a class="float-right btn btn-sm btn-info" href="{{ package.getSetupReleasesURL() }}">{{ _("Set up") }}</a>
|
<a class="float-right btn btn-sm btn-info" href="{{ package.getURL("packages.setup_releases") }}">{{ _("Set up") }}</a>
|
||||||
<i class="fas fa-info mr-2"></i>
|
<i class="fas fa-info mr-2"></i>
|
||||||
|
|
||||||
{{ _("You can create releases automatically when you push commits or tags to your repository.") }}
|
{{ _("You can create releases automatically when you push commits or tags to your repository.") }}
|
||||||
{% else %}
|
{% else %}
|
||||||
<a class="float-right btn btn-sm btn-info" href="{{ package.getEditURL() }}">{{ _("Add Git repo") }}</a>
|
<a class="float-right btn btn-sm btn-info" href="{{ package.getURL("packages.create_edit") }}">{{ _("Add Git repo") }}</a>
|
||||||
<i class="fas fa-info mr-2"></i>
|
<i class="fas fa-info mr-2"></i>
|
||||||
|
|
||||||
{{ _("Using Git would allow you to create releases automatically when you push code or tags.") }}
|
{{ _("Using Git would allow you to create releases automatically when you push code or tags.") }}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<a class="btn btn-secondary float-right" href="{{ package.getDetailsURL() }}">
|
<a class="btn btn-secondary float-right" href="{{ package.getURL("packages.view") }}">
|
||||||
{{ _("Later") }}
|
{{ _("Later") }}
|
||||||
</a>
|
</a>
|
||||||
<h1>{{ self.title() }}</h1>
|
<h1>{{ self.title() }}</h1>
|
||||||
|
@ -30,13 +30,13 @@
|
||||||
<div class="col-md-6 mt-5">
|
<div class="col-md-6 mt-5">
|
||||||
<h3 class="mt-0">{{ _("Automatically (Recommended)") }}</h3>
|
<h3 class="mt-0">{{ _("Automatically (Recommended)") }}</h3>
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-primary" href="{{ package.getUpdateConfigURL(trigger="commit") }}">
|
<a class="btn btn-primary" href="{{ package.getURL("packages.update_config", trigger="commit") }}">
|
||||||
{{ _("Rolling Release") }}
|
{{ _("Rolling Release") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-primary ml-2" href="{{ package.getUpdateConfigURL(trigger="tag") }}">
|
<a class="btn btn-primary ml-2" href="{{ package.getURL("packages.update_config", trigger="tag") }}">
|
||||||
{{ _("On Git Tag") }}
|
{{ _("On Git Tag") }}
|
||||||
</a>
|
</a>
|
||||||
{# <a class="btn btn-secondary ml-2" href="{{ package.getUpdateConfigURL() }}">#}
|
{# <a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.update_config") }}">#}
|
||||||
{# {{ _("Advanced") }}#}
|
{# {{ _("Advanced") }}#}
|
||||||
{# </a>#}
|
{# </a>#}
|
||||||
</p>
|
</p>
|
||||||
|
@ -45,10 +45,10 @@
|
||||||
<div class="col-md-6 mt-5">
|
<div class="col-md-6 mt-5">
|
||||||
<h3 class="mt-0">{{ _("Manually") }}</h3>
|
<h3 class="mt-0">{{ _("Manually") }}</h3>
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-secondary" href="{{ package.getUpdateConfigURL(action="notification") }}">
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.update_config", action="notification") }}">
|
||||||
{{ _("With reminders") }}
|
{{ _("With reminders") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary ml-2" href="{{ package.getCreateReleaseURL() }}">
|
<a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.create_release") }}">
|
||||||
{{ _("No reminders") }}
|
{{ _("No reminders") }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -65,9 +65,9 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="mt-5">
|
<p class="mt-5">
|
||||||
<a class="btn btn-primary" href="{{ package.getEditURL() }}">Add Git repo</a>
|
<a class="btn btn-primary" href="{{ package.getURL("packages.create_edit") }}">Add Git repo</a>
|
||||||
<a class="btn btn-secondary ml-2" href="{{ package.getCreateReleaseURL() }}">Create releases manually</a>
|
<a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.create_release") }}">Create releases manually</a>
|
||||||
<a class="btn btn-secondary ml-2" href="{{ package.getDetailsURL() }}">Later</a>
|
<a class="btn btn-secondary ml-2" href="{{ package.getURL("packages.view") }}">Later</a>
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -8,23 +8,23 @@
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
<p class="float-right">
|
<p class="float-right">
|
||||||
{% if package.update_config %}
|
{% if package.update_config %}
|
||||||
<a class="btn btn-secondary" href="{{ package.getUpdateConfigURL() }}">
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.update_config") }}">
|
||||||
<i class="fas fa-cog mr-1"></i>
|
<i class="fas fa-cog mr-1"></i>
|
||||||
{{ _("Update settings") }}
|
{{ _("Update settings") }}
|
||||||
</a>
|
</a>
|
||||||
{% elif package.repo %}
|
{% elif package.repo %}
|
||||||
<a class="btn btn-secondary" href="{{ package.getSetupReleasesURL() }}">
|
<a class="btn btn-secondary" href="{{ package.getURL("packages.setup_releases") }}">
|
||||||
<i class="fas fa-hat-wizard mr-1"></i>
|
<i class="fas fa-hat-wizard mr-1"></i>
|
||||||
{{ _("Set up automatic releases") }}
|
{{ _("Set up automatic releases") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<a class="btn btn-secondary ml-1" href="{{ package.getBulkReleaseURL() }}">
|
<a class="btn btn-secondary ml-1" href="{{ package.getURL("packages.bulk_change_release") }}">
|
||||||
<i class="fas fa-wrench mr-1"></i>
|
<i class="fas fa-wrench mr-1"></i>
|
||||||
Bulk update
|
Bulk update
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="btn btn-primary ml-1" href="{{ package.getCreateReleaseURL() }}">
|
<a class="btn btn-primary ml-1" href="{{ package.getURL("packages.create_release") }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus mr-1"></i>
|
||||||
Create
|
Create
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -23,7 +23,7 @@ Remove {{ package.title }}
|
||||||
|
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
|
|
||||||
<a class="btn btn-secondary float-right" href="{{ package.getDetailsURL() }}">Cancel</a>
|
<a class="btn btn-secondary float-right" href="{{ package.getURL("packages.view") }}">Cancel</a>
|
||||||
|
|
||||||
<input type="submit" name="delete" value="Remove" class="btn btn-danger mr-2" />
|
<input type="submit" name="delete" value="Remove" class="btn btn-danger mr-2" />
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block link %}
|
{% block link %}
|
||||||
<a href="{{ package.getDetailsURL() }}">{{ package.title }}</a>
|
<a href="{{ package.getURL("packages.view") }}">{{ package.title }}</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
||||||
<a href="{{ package.getNewScreenshotURL() }}" class="btn btn-primary float-right">
|
<a href="{{ package.getURL("packages.create_screenshot") }}" class="btn btn-primary float-right">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus mr-1"></i>
|
||||||
{{ _("Add Image") }}
|
{{ _("Add Image") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -13,7 +13,7 @@ Share and Badges
|
||||||
Review link:
|
Review link:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre><code>{{ package.getReviewURL(external=True) }}</code></pre>
|
<pre><code>{{ package.getURL("packages.review", absolute=True) }}</code></pre>
|
||||||
|
|
||||||
<h3>Badges</h3>
|
<h3>Badges</h3>
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<meta name="og:title" content="{{ package.title }}"/>
|
<meta name="og:title" content="{{ package.title }}"/>
|
||||||
<meta name="og:description" content="{{ package.short_desc }}"/>
|
<meta name="og:description" content="{{ package.short_desc }}"/>
|
||||||
<meta name="description" content="{{ package.short_desc }}"/>
|
<meta name="description" content="{{ package.short_desc }}"/>
|
||||||
<meta name="og:url" content="{{ package.getDetailsURL(absolute=True) }}"/>
|
<meta name="og:url" content="{{ package.getURL("packages.view", absolute=True) }}"/>
|
||||||
{% if package.getMainScreenshotURL() %}
|
{% if package.getMainScreenshotURL() %}
|
||||||
<meta name="og:image" content="{{ package.getMainScreenshotURL(absolute=True) }}"/>
|
<meta name="og:image" content="{{ package.getMainScreenshotURL(absolute=True) }}"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -35,19 +35,19 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="btn-group float-right mb-4">
|
<div class="btn-group float-right mb-4">
|
||||||
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
||||||
<a class="btn btn-primary" href="{{ package.getEditURL() }}">
|
<a class="btn btn-primary" href="{{ package.getURL("packages.create_edit") }}">
|
||||||
<i class="fas fa-pen mr-1"></i>
|
<i class="fas fa-pen mr-1"></i>
|
||||||
{{ _("Edit") }}
|
{{ _("Edit") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-primary" href="{{ package.getCreateReleaseURL() }}">
|
<a class="btn btn-primary" href="{{ package.getURL("packages.create_release") }}">
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus mr-1"></i>
|
||||||
{{ _("Release") }}
|
{{ _("Release") }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package.checkPerm(current_user, "DELETE_PACKAGE") or package.checkPerm(current_user, "UNAPPROVE_PACKAGE") %}
|
{% if package.checkPerm(current_user, "DELETE_PACKAGE") or package.checkPerm(current_user, "UNAPPROVE_PACKAGE") %}
|
||||||
<a class="btn btn-danger" href="{{ package.getRemoveURL() }}">
|
<a class="btn btn-danger" href="{{ package.getURL("packages.remove") }}">
|
||||||
<i class="fas fa-trash mr-1"></i>
|
<i class="fas fa-trash mr-1"></i>
|
||||||
{{ _("Remove") }}
|
{{ _("Remove") }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{% if release %}
|
{% if release %}
|
||||||
<a class="btn" rel="nofollow" href="{{ package.getDownloadURL() }}" title="{{ _("Downloads") }}"
|
<a class="btn" rel="nofollow" href="{{ package.getURL("packages.download") }}" title="{{ _("Downloads") }}"
|
||||||
download="{{ release.getDownloadFileName() }}">
|
download="{{ release.getDownloadFileName() }}">
|
||||||
<i class="fas fa-download"></i>
|
<i class="fas fa-download"></i>
|
||||||
<span class="count">{{ package.downloads }}</span>
|
<span class="count">{{ package.downloads }}</span>
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
<div class="btn-group btn-group-horizontal col-md-auto">
|
<div class="btn-group btn-group-horizontal col-md-auto">
|
||||||
{% if release %}
|
{% if release %}
|
||||||
<a class="btn btn-download" rel="nofollow" download="{{ release.getDownloadFileName() }}"
|
<a class="btn btn-download" rel="nofollow" download="{{ release.getDownloadFileName() }}"
|
||||||
href="{{ package.getDownloadURL() }}">
|
href="{{ package.getURL("packages.download") }}">
|
||||||
{{ _("Download") }}
|
{{ _("Download") }}
|
||||||
</a>
|
</a>
|
||||||
{% if package.type == package.type.MOD %}
|
{% if package.type == package.type.MOD %}
|
||||||
|
@ -209,7 +209,7 @@
|
||||||
{% set screenshots = package.screenshots.all() %}
|
{% set screenshots = package.screenshots.all() %}
|
||||||
{% if screenshots or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
{% if screenshots or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
||||||
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
{% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
|
||||||
<a href="{{ package.getEditScreenshotsURL() }}" class="btn btn-primary float-right">
|
<a href="{{ package.getURL("packages.screenshots") }}" class="btn btn-primary float-right">
|
||||||
<i class="fas fa-images mr-1"></i>
|
<i class="fas fa-images mr-1"></i>
|
||||||
Edit
|
Edit
|
||||||
</a>
|
</a>
|
||||||
|
@ -229,7 +229,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ package.getNewScreenshotURL() }}">
|
<a href="{{ package.getURL("packages.create_screenshot") }}">
|
||||||
<i class="fas fa-plus screenshot-add"></i>
|
<i class="fas fa-plus screenshot-add"></i>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -249,7 +249,7 @@
|
||||||
{% if current_user.is_authenticated %}
|
{% if current_user.is_authenticated %}
|
||||||
{% if has_review %}
|
{% if has_review %}
|
||||||
<p>
|
<p>
|
||||||
<a class="btn btn-primary" href="{{ package.getReviewURL() }}">
|
<a class="btn btn-primary" href="{{ package.getURL("packages.review") }}">
|
||||||
{{ _("Edit Review") }}
|
{{ _("Edit Review") }}
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
@ -307,7 +307,7 @@
|
||||||
<i class="fas fa-plus mr-1"></i>
|
<i class="fas fa-plus mr-1"></i>
|
||||||
{{ _("Release") }}
|
{{ _("Release") }}
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-warning" href="{{ package.getUpdateConfigURL() }}">
|
<a class="btn btn-warning" href="{{ package.getURL("packages.update_config") }}">
|
||||||
<i class="fas fa-cog mr-1"></i>
|
<i class="fas fa-cog mr-1"></i>
|
||||||
{{ _("Update settings") }}
|
{{ _("Update settings") }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -329,7 +329,7 @@
|
||||||
{% for dep in package.getSortedHardDependencies() %}
|
{% for dep in package.getSortedHardDependencies() %}
|
||||||
{%- if dep.package %}
|
{%- if dep.package %}
|
||||||
<a class="badge badge-primary"
|
<a class="badge badge-primary"
|
||||||
href="{{ dep.package.getDetailsURL() }}">
|
href="{{ dep.package.getURL("packages.view") }}">
|
||||||
{{ dep.package.title }} by {{ dep.package.author.display_name }}
|
{{ dep.package.title }} by {{ dep.package.author.display_name }}
|
||||||
</a>
|
</a>
|
||||||
{% elif dep.meta_package %}
|
{% elif dep.meta_package %}
|
||||||
|
@ -352,7 +352,7 @@
|
||||||
{% for dep in optional_deps %}
|
{% for dep in optional_deps %}
|
||||||
{%- if dep.package %}
|
{%- if dep.package %}
|
||||||
<a class="badge badge-secondary"
|
<a class="badge badge-secondary"
|
||||||
href="{{ dep.package.getDetailsURL() }}">
|
href="{{ dep.package.getURL("packages.view") }}">
|
||||||
{{ dep.package.title }} by {{ dep.package.author.display_name }}
|
{{ dep.package.title }} by {{ dep.package.author.display_name }}
|
||||||
{% elif dep.meta_package %}
|
{% elif dep.meta_package %}
|
||||||
<a class="badge badge-secondary"
|
<a class="badge badge-secondary"
|
||||||
|
@ -399,7 +399,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% if current_user in package.maintainers and current_user != package.author %}
|
{% if current_user in package.maintainers and current_user != package.author %}
|
||||||
<form class="mt-2" method="post" action="{{ package.getRemoveSelfMaintainerURL() }}">
|
<form class="mt-2" method="post" action="{{ package.getURL("packages.remove_self_maintainers") }}">
|
||||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
|
||||||
<input class="btn btn-sm btn-link p-0" type="submit" value="{{ _('Remove myself') }}" />
|
<input class="btn btn-sm btn-link p-0" type="submit" value="{{ _('Remove myself') }}" />
|
||||||
</form>
|
</form>
|
||||||
|
@ -422,7 +422,7 @@
|
||||||
|
|
||||||
<h3>
|
<h3>
|
||||||
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
{% if package.checkPerm(current_user, "MAKE_RELEASE") %}
|
||||||
<a class="btn btn-primary btn-sm float-right" href="{{ package.getCreateReleaseURL() }}"><i class="fas fa-plus"></i></a>
|
<a class="btn btn-primary btn-sm float-right" href="{{ package.getURL("packages.create_release") }}"><i class="fas fa-plus"></i></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{ _("Releases") }}
|
{{ _("Releases") }}
|
||||||
</h3>
|
</h3>
|
||||||
|
@ -433,7 +433,7 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{{ render_releases_download(releases, package) }}
|
{{ render_releases_download(releases, package) }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="list-group-item list-group-item-action text-center py-1 text-muted" href="{{ package.getReleaseListURL() }}">
|
<a class="list-group-item list-group-item-action text-center py-1 text-muted" href="{{ package.getURL("packages.list_releases") }}">
|
||||||
More
|
More
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -459,7 +459,7 @@
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
||||||
<a class="float-right" href="{{ package.getAuditLogURL() }}">
|
<a class="float-right" href="{{ package.getURL("packages.audit") }}">
|
||||||
See audit log
|
See audit log
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
{% if current_user == thread.author and thread.review %}
|
{% if current_user == thread.author and thread.review %}
|
||||||
<a class="btn btn-primary ml-1 float-right mr-2"
|
<a class="btn btn-primary ml-1 float-right mr-2"
|
||||||
href="{{ thread.review.package.getReviewURL() }}">
|
href="{{ thread.review.package.getURL("packages.review") }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
{{ _("Edit Review") }}
|
{{ _("Edit Review") }}
|
||||||
</a>
|
</a>
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
|
|
||||||
{% if thread.package %}
|
{% if thread.package %}
|
||||||
<p>
|
<p>
|
||||||
Package: <a href="{{ thread.package.getDetailsURL() }}">{{ thread.package.title }}</a>
|
Package: <a href="{{ thread.package.getURL("packages.view") }}">{{ thread.package.title }}</a>
|
||||||
</p>
|
</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
</h3>
|
</h3>
|
||||||
<ul class="card-body d-flex p-0 flex-row flex-wrap justify-content-start align-content-start p-4">
|
<ul class="card-body d-flex p-0 flex-row flex-wrap justify-content-start align-content-start p-4">
|
||||||
{% for s in screenshots %}
|
{% for s in screenshots %}
|
||||||
<li class="packagetile flex-fill"><a href="{{ s.getEditURL() }}"
|
<li class="packagetile flex-fill"><a href="{{ s.getURL("packages.create_edit") }}"
|
||||||
style="background-image: url({{ s.getThumbnailURL(3) }});">
|
style="background-image: url({{ s.getThumbnailURL(3) }});">
|
||||||
<div class="packagegridscrub"></div>
|
<div class="packagegridscrub"></div>
|
||||||
<div class="packagegridinfo">
|
<div class="packagegridinfo">
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
<h3 class="card-header">Packages</h3>
|
<h3 class="card-header">Packages</h3>
|
||||||
<div class="list-group list-group-flush">
|
<div class="list-group list-group-flush">
|
||||||
{% for p in packages %}
|
{% for p in packages %}
|
||||||
<a href="{{ p.getDetailsURL() }}" class="list-group-item list-group-item-action">
|
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
||||||
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
||||||
<small>
|
<small>
|
||||||
{{ p.created_at | timedelta }} ago
|
{{ p.created_at | timedelta }} ago
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{{ r.getEditURL() }}">{{ r.title }}</a>
|
<a href="{{ r.getEditURL() }}">{{ r.title }}</a>
|
||||||
on
|
on
|
||||||
<a href="{{ r.package.getDetailsURL() }}">
|
<a href="{{ r.package.getURL("packages.view") }}">
|
||||||
{{ r.package.title }} by {{ r.package.author.display_name }}
|
{{ r.package.title }} by {{ r.package.author.display_name }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
<h3 class="card-header">WIP Packages</h3>
|
<h3 class="card-header">WIP Packages</h3>
|
||||||
<div class="list-group list-group-flush" style="max-height: 300px; overflow: hidden auto;">
|
<div class="list-group list-group-flush" style="max-height: 300px; overflow: hidden auto;">
|
||||||
{% for p in wip_packages %}
|
{% for p in wip_packages %}
|
||||||
<a href="{{ p.getDetailsURL() }}" class="list-group-item list-group-item-action">
|
<a href="{{ p.getURL("packages.view") }}" class="list-group-item list-group-item-action">
|
||||||
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
<span class="float-right" title="Created {{ p.created_at | datetime }}">
|
||||||
<small>
|
<small>
|
||||||
{{ p.created_at | timedelta }} ago
|
{{ p.created_at | timedelta }} ago
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
{% for package in packages %}
|
{% for package in packages %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<a href="{{ package.getDetailsURL() }}">
|
<a href="{{ package.getURL("packages.view") }}">
|
||||||
{{ package.title }}
|
{{ package.title }}
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
|
||||||
<a class="btn btn-link btn-sm py-0" href="{{ package.getEditURL() }}">
|
<a class="btn btn-link btn-sm py-0" href="{{ package.getURL("packages.create_edit") }}">
|
||||||
<i class="fas fa-pen"></i>
|
<i class="fas fa-pen"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<h2>{{ _("Unapproved Packages Needing Action") }}</h2>
|
<h2>{{ _("Unapproved Packages Needing Action") }}</h2>
|
||||||
<div class="list-group mt-3 mb-5">
|
<div class="list-group mt-3 mb-5">
|
||||||
{% for package in unapproved_packages %}
|
{% for package in unapproved_packages %}
|
||||||
<a class="list-group-item list-group-item-action" href="{{ package.getDetailsURL() }}">
|
<a class="list-group-item list-group-item-action" href="{{ package.getURL("packages.view") }}">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2 text-muted">
|
<div class="col-sm-2 text-muted">
|
||||||
<img
|
<img
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
</p>
|
</p>
|
||||||
<div class="list-group mt-3 mb-5">
|
<div class="list-group mt-3 mb-5">
|
||||||
{% for package in needs_tags %}
|
{% for package in needs_tags %}
|
||||||
<a class="list-group-item list-group-item-action" href="{{ package.getDetailsURL() }}">
|
<a class="list-group-item list-group-item-action" href="{{ package.getURL("packages.view") }}">
|
||||||
<img
|
<img
|
||||||
class="img-fluid"
|
class="img-fluid"
|
||||||
style="max-height: 22px; max-width: 22px;"
|
style="max-height: 22px; max-width: 22px;"
|
||||||
|
|
Loading…
Reference in New Issue