From 187202d3631619aff1cf8689144016c061012533 Mon Sep 17 00:00:00 2001
From: rubenwardy
Date: Sat, 24 Jul 2021 03:56:43 +0100
Subject: [PATCH] Improve unified navigation further
---
app/blueprints/packages/__init__.py | 10 ++++
app/blueprints/packages/packages.py | 11 +++-
app/models/packages.py | 7 ++-
app/templates/macros/releases.html | 73 +++++++++++++++++++----
app/templates/packages/audit.html | 16 +++++
app/templates/packages/release_edit.html | 2 +
app/templates/packages/releases_list.html | 56 +++++++++--------
app/templates/packages/share.html | 35 +++++++++++
app/templates/packages/view.html | 45 +++++---------
9 files changed, 185 insertions(+), 70 deletions(-)
create mode 100644 app/templates/packages/audit.html
create mode 100644 app/templates/packages/share.html
diff --git a/app/blueprints/packages/__init__.py b/app/blueprints/packages/__init__.py
index 9b709c5..80b5280 100644
--- a/app/blueprints/packages/__init__.py
+++ b/app/blueprints/packages/__init__.py
@@ -46,6 +46,16 @@ def get_package_tabs(user: User, package: Package):
"title": "Maintainers",
"url": package.getEditMaintainersURL()
},
+ {
+ "id": "audit",
+ "title": "Audit Log",
+ "url": package.getURL("packages.audit")
+ },
+ {
+ "id": "share",
+ "title": "Share and Badges",
+ "url": package.getURL("packages.share")
+ },
{
"id": "remove",
"title": "Remove",
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py
index 04f0ca3..3e24c6c 100644
--- a/app/blueprints/packages/packages.py
+++ b/app/blueprints/packages/packages.py
@@ -518,7 +518,8 @@ def audit(package):
query = package.audit_log_entries.order_by(db.desc(AuditLogEntry.created_at))
pagination = query.paginate(page, num, True)
- return render_template("admin/audit.html", log=pagination.items, pagination=pagination)
+ return render_template("packages/audit.html", log=pagination.items, pagination=pagination,
+ package=package, tabs=get_package_tabs(current_user, package), current_tab="audit")
class PackageAliasForm(FlaskForm):
@@ -558,3 +559,11 @@ def alias_create_edit(package: Package, alias_id: int = None):
return redirect(package.getAliasListURL())
return render_template("packages/alias_create_edit.html", package=package, form=form)
+
+
+@bp.route("/packages///share/")
+@login_required
+@is_package_page
+def share(package):
+ return render_template("packages/share.html", package=package,
+ tabs=get_package_tabs(current_user, package), current_tab="share")
diff --git a/app/models/packages.py b/app/models/packages.py
index ffa2ec1..7bdec7f 100644
--- a/app/models/packages.py
+++ b/app/models/packages.py
@@ -460,6 +460,9 @@ class Package(db.Model):
else:
return screenshot.url
+ def getURL(self, endpoint):
+ return url_for(endpoint, author=self.author.username, name=self.name)
+
def getDetailsURL(self, absolute=False):
if absolute:
from app.utils import abs_url_for
@@ -535,8 +538,8 @@ class Package(db.Model):
return url_for("packages.remove_self_maintainers",
author=self.author.username, name=self.name)
- def getReviewURL(self):
- return url_for('packages.review',
+ def getReviewURL(self, external=False):
+ return url_for('packages.review', _external=external,
author=self.author.username, name=self.name)
def getAuditLogURL(self):
diff --git a/app/templates/macros/releases.html b/app/templates/macros/releases.html
index 97a9c21..64d44a3 100644
--- a/app/templates/macros/releases.html
+++ b/app/templates/macros/releases.html
@@ -1,14 +1,66 @@
+{% macro render_releases_edit(releases, package) %}
+ {% for rel in releases %}
+
+ {{ rel.title }}
+
+ {% if rel.min_rel and rel.max_rel %}
+ [MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
+ {% elif rel.min_rel %}
+ [MT {{ rel.min_rel.name }}+]
+ {% elif rel.max_rel %}
+ [MT ≤{{ rel.max_rel.name }}]
+ {% endif %}
+
+
+
+ {% if rel.commit_hash %}
+ [{{ rel.commit_hash | truncate(5, end='') }}]
+ {% endif %}
+
+ created {{ rel.releaseDate | date }}.
+
+
+ {% endfor %}
+{% endmacro %}
+
+
+{% macro render_releases_download(releases, package) %}
+ {% for rel in releases %}
+ {% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE") %}
+
+ {{ rel.title }}
+
+ {% if rel.min_rel and rel.max_rel %}
+ [MT {{ rel.min_rel.name }}-{{ rel.max_rel.name }}]
+ {% elif rel.min_rel %}
+ [MT {{ rel.min_rel.name }}+]
+ {% elif rel.max_rel %}
+ [MT ≤{{ rel.max_rel.name }}]
+ {% endif %}
+
+
+
+ {% if rel.commit_hash %}
+ [{{ rel.commit_hash | truncate(5, end='') }}]
+ {% endif %}
+
+ created {{ rel.releaseDate | date }}.
+
+
+ {% endif %}
+ {% endfor %}
+{% endmacro %}
+
+
{% macro render_releases(releases, package, current_user) -%}
{% for rel in releases %}
{% if rel.approved or package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE") %}
-
- {% if package.checkPerm(current_user, "MAKE_RELEASE") or rel.checkPerm(current_user, "APPROVE_RELEASE") %}
- Edit
- {% if not rel.task_id and not rel.approved and rel.checkPerm(current_user, "APPROVE_RELEASE") %}
- / Approve
- {% endif %}
-
+
{% endif %}
{% else %}
- No releases available.
+ No releases available.
{% endfor %}
{% endmacro %}
diff --git a/app/templates/packages/audit.html b/app/templates/packages/audit.html
new file mode 100644
index 0000000..97a28eb
--- /dev/null
+++ b/app/templates/packages/audit.html
@@ -0,0 +1,16 @@
+{% extends "packages/package_base.html" %}
+
+{% block title %}
+Audit Log
+{% endblock %}
+
+{% block content %}
+ Audit Log
+
+ {% from "macros/pagination.html" import render_pagination %}
+ {% from "macros/audit_log.html" import render_audit_log %}
+
+ {{ render_pagination(pagination, url_set_query) }}
+ {{ render_audit_log(log, current_user) }}
+ {{ render_pagination(pagination, url_set_query) }}
+{% endblock %}
diff --git a/app/templates/packages/release_edit.html b/app/templates/packages/release_edit.html
index 031e9c2..3977e07 100644
--- a/app/templates/packages/release_edit.html
+++ b/app/templates/packages/release_edit.html
@@ -5,6 +5,8 @@
{% endblock %}
{% block content %}
+ {{ self.title() }}
+
{% from "macros/forms.html" import render_field, render_submit_field, render_checkbox_field %}
+ {% endif %}
{{ _("Releases") }}
-
- {% from "macros/releases.html" import render_releases %}
- {{ render_releases(package.releases, package, current_user) }}
-
+
+ {% from "macros/releases.html" import render_releases_edit, render_releases_download %}
+ {% if package.checkPerm(current_user, "MAKE_RELEASE") %}
+ {{ render_releases_edit(package.releases, package) }}
+ {% else %}
+ {{ render_releases_download(package.releases, package) }}
+ {% endif %}
+
{% endblock %}
diff --git a/app/templates/packages/share.html b/app/templates/packages/share.html
new file mode 100644
index 0000000..beb11ea
--- /dev/null
+++ b/app/templates/packages/share.html
@@ -0,0 +1,35 @@
+{% extends "packages/package_base.html" %}
+
+{% block title %}
+Share and Badges
+{% endblock %}
+
+{% block content %}
+ {{ self.title() }}
+
+ Links
+
+
+ Review link:
+
+
+ {{ package.getReviewURL(external=True) }}
+
+ Badges
+
+
+ {{ package.makeShield("title") | markdown }}
+
+
+
+
{{ package.makeShield("title") }}
+
+
+
+ {{ package.makeShield("downloads") | markdown }}
+
+
+
+
{{ package.makeShield("downloads") }}
+
+{% endblock %}
diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html
index fc09dfe..88aa62b 100644
--- a/app/templates/packages/view.html
+++ b/app/templates/packages/view.html
@@ -286,26 +286,6 @@
{% endfor %}
{% endif %}
-
- {% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
- Badges
-
-
- {{ package.makeShield("title") | markdown }}
-
-
-
-
{{ package.makeShield("title") }}
-
-
-
- {{ package.makeShield("downloads") | markdown }}
-
-
-
-
{{ package.makeShield("downloads") }}
-
- {% endif %}