Compare commits

...

1 Commits

Author SHA1 Message Date
rubenwardy 2c5a3809e8 media 2020-12-14 20:50:37 +00:00
9 changed files with 41 additions and 41 deletions

View File

@ -51,7 +51,7 @@ def screenshots(package):
return redirect(package.getDetailsURL())
if package.screenshots.count() == 0:
return redirect(package.getNewScreenshotURL())
return redirect(package.get_new_media_url())
form = EditPackageScreenshotsForm(obj=package)
form.cover_image.query = package.screenshots
@ -108,7 +108,7 @@ def create_screenshot(package):
.format(ss.title)
addNotification(package.maintainers, current_user, NotificationType.PACKAGE_EDIT, msg, package.getDetailsURL(), package)
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)
@ -124,7 +124,7 @@ def edit_screenshot(package, id):
canEdit = package.checkPerm(current_user, Permission.ADD_SCREENSHOTS)
canApprove = package.checkPerm(current_user, Permission.APPROVE_SCREENSHOT)
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
form = EditScreenshotForm(obj=screenshot)
@ -140,7 +140,7 @@ def edit_screenshot(package, id):
screenshot.approved = wasApproved
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)
@ -164,4 +164,4 @@ def delete_screenshot(package, id):
db.session.delete(screenshot)
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",
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",
lazy="dynamic", order_by=db.asc("package_screenshot_order"), cascade="all, delete, delete-orphan")
media = db.relationship("PackageMedia", back_populates="package", foreign_keys="PackageMedia.package_id",
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 = db.relationship("PackageScreenshot", uselist=False, foreign_keys=[cover_image_id])
cover_image_id = db.Column(db.Integer, db.ForeignKey("package_media.id"), nullable=True, default=None)
cover_image = db.relationship("PackageMedia", uselist=False, foreign_keys=[cover_image_id])
maintainers = db.relationship("User", secondary=maintainers)
@ -398,7 +398,7 @@ class Package(db.Model):
}
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)
return {
"name": self.name,
@ -411,7 +411,7 @@ class Package(db.Model):
}
def getAsDictionary(self, base_url, version=None):
tnurl = self.getThumbnailURL(1)
tnurl = self.get_thumbnail_url(1)
release = self.getDownloadRelease(version=version)
return {
"author": self.author.username,
@ -432,7 +432,7 @@ class Package(db.Model):
"provides": [x.name for x in self.provides],
"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(),
"release": release and release.id,
@ -441,20 +441,20 @@ class Package(db.Model):
"downloads": self.downloads
}
def getThumbnailURL(self, level=2):
screenshot = self.screenshots.filter_by(approved=True).order_by(db.asc(PackageScreenshot.id)).first()
return screenshot.getThumbnailURL(level) if screenshot is not None else None
def get_thumbnail_url(self, level=2):
media = self.media.filter_by(approved=True).order_by(db.asc(PackageMedia.id)).first()
return media.get_thumbnail_url(level) if media is not None else None
def getMainScreenshotURL(self, absolute=False):
screenshot = self.screenshots.filter_by(approved=True).order_by(db.asc(PackageScreenshot.id)).first()
if screenshot is None:
def get_cover_image_url(self, absolute=False):
media = self.cover_image or self.media.filter_by(approved=True).order_by(db.asc(PackageMedia.id)).first()
if media is None:
return None
if absolute:
from app.utils import abs_url
return abs_url(screenshot.url)
return abs_url(media.url)
else:
return screenshot.url
return media.url
def getDetailsURL(self, absolute=False):
if absolute:
@ -491,11 +491,11 @@ class Package(db.Model):
return url_for("packages.remove",
author=self.author.username, name=self.name)
def getNewScreenshotURL(self):
def get_new_media_url(self):
return url_for("packages.create_screenshot",
author=self.author.username, name=self.name)
def getEditScreenshotsURL(self):
def get_media_editor_url(self):
return url_for("packages.screenshots",
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))
class PackageScreenshot(db.Model):
class PackageMedia(db.Model):
id = db.Column(db.Integer, primary_key=True)
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)
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)
def getEditURL(self):
return url_for("packages.edit_screenshot",
return url_for("packages.edit_media",
author=self.package.author.username,
name=self.package.name,
id=self.id)
def getDeleteURL(self):
return url_for("packages.delete_screenshot",
return url_for("packages.delete_media",
author=self.package.author.username,
name=self.package.name,
id=self.id)
def getThumbnailURL(self, level=2):
def get_thumbnail_url(self, level=2):
return self.url.replace("/uploads/", "/thumbnails/{:d}/".format(level))

View File

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

View File

@ -1,6 +1,6 @@
{% macro render_pkgtile(package, show_author) -%}
<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="packagegridinfo">
<h3>

View File

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

View File

@ -24,7 +24,7 @@
</form>
<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>
</div>
{% endblock %}

View File

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

View File

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