Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
rubenwardy | 2c5a3809e8 |
|
@ -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())
|
||||||
|
|
|
@ -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))
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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 }}
|
||||||
|
|
|
@ -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 %}
|
||||||
|
|
|
@ -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 }}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue