This commit is contained in:
rubenwardy 2020-12-14 20:50:37 +00:00
parent 4820d11ce3
commit 2c5a3809e8
9 changed files with 41 additions and 41 deletions

View File

@ -51,7 +51,7 @@ def screenshots(package):
return redirect(package.getDetailsURL()) return redirect(package.getDetailsURL())
if package.screenshots.count() == 0: if package.screenshots.count() == 0:
return redirect(package.getNewScreenshotURL()) return redirect(package.get_new_media_url())
form = EditPackageScreenshotsForm(obj=package) form = EditPackageScreenshotsForm(obj=package)
form.cover_image.query = package.screenshots form.cover_image.query = package.screenshots
@ -108,7 +108,7 @@ def create_screenshot(package):
.format(ss.title) .format(ss.title)
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_EDIT, msg, package.getDetailsURL(), package) addNotification(package.maintainers, current_user, NotificationType.PACKAGE_EDIT, msg, package.getDetailsURL(), package)
db.session.commit() db.session.commit()
return redirect(package.getEditScreenshotsURL()) return redirect(package.get_media_editor_url())
return render_template("packages/screenshot_new.html", package=package, form=form) return render_template("packages/screenshot_new.html", package=package, form=form)
@ -124,7 +124,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.get_media_editor_url())
# 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)
@ -140,7 +140,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.get_media_editor_url())
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)
@ -164,4 +164,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.get_media_editor_url())

View File

@ -308,11 +308,11 @@ class Package(db.Model):
releases = db.relationship("PackageRelease", back_populates="package", releases = db.relationship("PackageRelease", back_populates="package",
lazy="dynamic", order_by=db.desc("package_release_releaseDate"), cascade="all, delete, delete-orphan") lazy="dynamic", order_by=db.desc("package_release_releaseDate"), cascade="all, delete, delete-orphan")
screenshots = db.relationship("PackageScreenshot", back_populates="package", foreign_keys="PackageScreenshot.package_id", media = db.relationship("PackageMedia", back_populates="package", foreign_keys="PackageMedia.package_id",
lazy="dynamic", order_by=db.asc("package_screenshot_order"), cascade="all, delete, delete-orphan") lazy="dynamic", order_by=db.asc("package_media_order"), cascade="all, delete, delete-orphan")
cover_image_id = db.Column(db.Integer, db.ForeignKey("package_screenshot.id"), nullable=True, default=None) cover_image_id = db.Column(db.Integer, db.ForeignKey("package_media.id"), nullable=True, default=None)
cover_image = db.relationship("PackageScreenshot", uselist=False, foreign_keys=[cover_image_id]) cover_image = db.relationship("PackageMedia", uselist=False, foreign_keys=[cover_image_id])
maintainers = db.relationship("User", secondary=maintainers) maintainers = db.relationship("User", secondary=maintainers)
@ -398,7 +398,7 @@ class Package(db.Model):
} }
def getAsDictionaryShort(self, base_url, version=None, release=None): def getAsDictionaryShort(self, base_url, version=None, release=None):
tnurl = self.getThumbnailURL(1) tnurl = self.get_thumbnail_url(1)
release = release if release else self.getDownloadRelease(version=version) release = release if release else self.getDownloadRelease(version=version)
return { return {
"name": self.name, "name": self.name,
@ -411,7 +411,7 @@ class Package(db.Model):
} }
def getAsDictionary(self, base_url, version=None): def getAsDictionary(self, base_url, version=None):
tnurl = self.getThumbnailURL(1) tnurl = self.get_thumbnail_url(1)
release = self.getDownloadRelease(version=version) release = self.getDownloadRelease(version=version)
return { return {
"author": self.author.username, "author": self.author.username,
@ -432,7 +432,7 @@ class Package(db.Model):
"provides": [x.name for x in self.provides], "provides": [x.name for x in self.provides],
"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], "media": [base_url + ss.url for ss in self.media],
"url": base_url + self.getDownloadURL(), "url": base_url + self.getDownloadURL(),
"release": release and release.id, "release": release and release.id,
@ -441,20 +441,20 @@ class Package(db.Model):
"downloads": self.downloads "downloads": self.downloads
} }
def getThumbnailURL(self, level=2): def get_thumbnail_url(self, level=2):
screenshot = self.screenshots.filter_by(approved=True).order_by(db.asc(PackageScreenshot.id)).first() media = self.media.filter_by(approved=True).order_by(db.asc(PackageMedia.id)).first()
return screenshot.getThumbnailURL(level) if screenshot is not None else None return media.get_thumbnail_url(level) if media is not None else None
def getMainScreenshotURL(self, absolute=False): def get_cover_image_url(self, absolute=False):
screenshot = self.screenshots.filter_by(approved=True).order_by(db.asc(PackageScreenshot.id)).first() media = self.cover_image or self.media.filter_by(approved=True).order_by(db.asc(PackageMedia.id)).first()
if screenshot is None: if media is None:
return None return None
if absolute: if absolute:
from app.utils import abs_url from app.utils import abs_url
return abs_url(screenshot.url) return abs_url(media.url)
else: else:
return screenshot.url return media.url
def getDetailsURL(self, absolute=False): def getDetailsURL(self, absolute=False):
if absolute: if absolute:
@ -491,11 +491,11 @@ class Package(db.Model):
return url_for("packages.remove", return url_for("packages.remove",
author=self.author.username, name=self.name) author=self.author.username, name=self.name)
def getNewScreenshotURL(self): def get_new_media_url(self):
return url_for("packages.create_screenshot", return url_for("packages.create_screenshot",
author=self.author.username, name=self.name) author=self.author.username, name=self.name)
def getEditScreenshotsURL(self): def get_media_editor_url(self):
return url_for("packages.screenshots", return url_for("packages.screenshots",
author=self.author.username, name=self.name) author=self.author.username, name=self.name)
@ -874,11 +874,11 @@ class PackageRelease(db.Model):
raise Exception("Permission {} is not related to releases".format(perm.name)) raise Exception("Permission {} is not related to releases".format(perm.name))
class PackageScreenshot(db.Model): class PackageMedia(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
package_id = db.Column(db.Integer, db.ForeignKey("package.id"), nullable=False) package_id = db.Column(db.Integer, db.ForeignKey("package.id"), nullable=False)
package = db.relationship("Package", back_populates="screenshots", foreign_keys=[package_id]) package = db.relationship("Package", back_populates="media", foreign_keys=[package_id])
order = db.Column(db.Integer, nullable=False, default=0) order = db.Column(db.Integer, nullable=False, default=0)
title = db.Column(db.String(100), nullable=False) title = db.Column(db.String(100), nullable=False)
@ -886,16 +886,16 @@ class PackageScreenshot(db.Model):
approved = db.Column(db.Boolean, nullable=False, default=False) approved = db.Column(db.Boolean, nullable=False, default=False)
def getEditURL(self): def getEditURL(self):
return url_for("packages.edit_screenshot", return url_for("packages.edit_media",
author=self.package.author.username, author=self.package.author.username,
name=self.package.name, name=self.package.name,
id=self.id) id=self.id)
def getDeleteURL(self): def getDeleteURL(self):
return url_for("packages.delete_screenshot", return url_for("packages.delete_media",
author=self.package.author.username, author=self.package.author.username,
name=self.package.name, name=self.package.name,
id=self.id) id=self.id)
def getThumbnailURL(self, level=2): def get_thumbnail_url(self, level=2):
return self.url.replace("/uploads/", "/thumbnails/{:d}/".format(level)) return self.url.replace("/uploads/", "/thumbnails/{:d}/".format(level))

View File

@ -50,7 +50,7 @@
<img <img
class="img-fluid" class="img-fluid"
style="max-height: 22px; max-width: 22px;" style="max-height: 22px; max-width: 22px;"
src="{{ entry.package.getThumbnailURL(1) }}" /> src="{{ entry.package.get_thumbnail_url(1) }}" />
</div> </div>
{% endif %} {% endif %}

View File

@ -1,6 +1,6 @@
{% 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.getDetailsURL() }}"
style="background-image: url({{ package.getThumbnailURL() or '/static/placeholder.png' }});"> style="background-image: url({{ package.get_thumbnail_url() or '/static/placeholder.png' }});">
<div class="packagegridscrub"></div> <div class="packagegridscrub"></div>
<div class="packagegridinfo"> <div class="packagegridinfo">
<h3> <h3>

View File

@ -37,7 +37,7 @@ Notifications
<img <img
class="img-fluid" class="img-fluid"
style="max-height: 22px; max-width: 22px;" style="max-height: 22px; max-width: 22px;"
src="{{ n.package.getThumbnailURL(1) }}" /> src="{{ n.package.get_thumbnail_url(1) }}" />
<span class="pl-2"> <span class="pl-2">
{{ n.package.title }} {{ n.package.title }}
@ -75,7 +75,7 @@ Notifications
<img <img
class="img-fluid" class="img-fluid"
style="max-height: 22px; max-width: 22px;" style="max-height: 22px; max-width: 22px;"
src="{{ n.package.getThumbnailURL(1) }}" /> src="{{ n.package.get_thumbnail_url(1) }}" />
<span class="pl-2"> <span class="pl-2">
{{ n.package.title }} {{ n.package.title }}

View File

@ -24,7 +24,7 @@
</form> </form>
<a href="{{ screenshot.url }}" class="col-md-4 text-right"> <a href="{{ screenshot.url }}" class="col-md-4 text-right">
<img src="{{ screenshot.getThumbnailURL() }}" alt="{{ screenshot.title }}" /> <img src="{{ screenshot.get_thumbnail_url() }}" alt="{{ screenshot.title }}" />
</a> </a>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -8,7 +8,7 @@
<h1 class="mb-5"><a href="{{ package.getDetailsURL() }}">{{ package.title }}</a></h1> <h1 class="mb-5"><a href="{{ package.getDetailsURL() }}">{{ package.title }}</a></h1>
{% 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.get_new_media_url() }}" class="btn btn-primary float-right">
{{ _("Add Image") }} {{ _("Add Image") }}
</a> </a>
{% endif %} {% endif %}
@ -28,7 +28,7 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
<img class="img-fluid" style="max-height: 64px;" <img class="img-fluid" style="max-height: 64px;"
src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" /> src="{{ ss.get_thumbnail_url() }}" alt="{{ ss.title }}" />
</div> </div>
<span class="col"> <span class="col">
{{ ss.title }} {{ ss.title }}

View File

@ -11,8 +11,8 @@
<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.getDetailsURL(absolute=True) }}"/>
{% if package.getMainScreenshotURL() %} {% if package.get_cover_image_url() %}
<meta name="og:image" content="{{ package.getMainScreenshotURL(absolute=True) }}"/> <meta name="og:image" content="{{ package.get_cover_image_url(absolute=True) }}"/>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
@ -27,7 +27,7 @@
{% set release = package.getDownloadRelease() %} {% set release = package.getDownloadRelease() %}
<main> <main>
{% set cover_image = package.cover_image.url or package.getMainScreenshotURL() %} {% set cover_image = package.cover_image.url or package.get_cover_image_url() %}
<header class="jumbotron pb-3" <header class="jumbotron pb-3"
style="background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.7)), url('{{ cover_image }}'); style="background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.7)), url('{{ cover_image }}');
background-size: cover; background-size: cover;
@ -379,7 +379,7 @@
</aside> </aside>
{% 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.get_media_editor_url() }}" 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>
@ -390,14 +390,14 @@
{% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %} {% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
<li> <li>
<a href="{{ ss.url }}"> <a href="{{ ss.url }}">
<img src="{{ ss.getThumbnailURL() }}" alt="{{ ss.title }}" /> <img src="{{ ss.get_thumbnail_url() }}" alt="{{ ss.title }}" />
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% else %} {% else %}
{% if package.checkPerm(current_user, "EDIT_PACKAGE") %} {% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
<li> <li>
<a href="{{ package.getNewScreenshotURL() }}"> <a href="{{ package.get_new_media_url() }}">
<i class="fas fa-plus screenshot-add"></i> <i class="fas fa-plus screenshot-add"></i>
</a> </a>
</li> </li>

View File

@ -18,7 +18,7 @@
<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.getEditURL() }}"
style="background-image: url({{ s.getThumbnailURL(3) or '/static/placeholder.png' }});"> style="background-image: url({{ s.get_thumbnail_url(3) or '/static/placeholder.png' }});">
<div class="packagegridscrub"></div> <div class="packagegridscrub"></div>
<div class="packagegridinfo"> <div class="packagegridinfo">
<h3> <h3>