diff --git a/app/blueprints/packages/screenshots.py b/app/blueprints/packages/screenshots.py index ad1edfb..22bd749 100644 --- a/app/blueprints/packages/screenshots.py +++ b/app/blueprints/packages/screenshots.py @@ -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()) diff --git a/app/models/packages.py b/app/models/packages.py index b0e76ff..e1e8725 100644 --- a/app/models/packages.py +++ b/app/models/packages.py @@ -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)) diff --git a/app/templates/macros/audit_log.html b/app/templates/macros/audit_log.html index 6e89575..72ce9ff 100644 --- a/app/templates/macros/audit_log.html +++ b/app/templates/macros/audit_log.html @@ -50,7 +50,7 @@ + src="{{ entry.package.get_thumbnail_url(1) }}" /> {% endif %} diff --git a/app/templates/macros/packagegridtile.html b/app/templates/macros/packagegridtile.html index 3f9d364..59472f6 100644 --- a/app/templates/macros/packagegridtile.html +++ b/app/templates/macros/packagegridtile.html @@ -1,6 +1,6 @@ {% macro render_pkgtile(package, show_author) -%}
  • + style="background-image: url({{ package.get_thumbnail_url() or '/static/placeholder.png' }});">

    diff --git a/app/templates/notifications/list.html b/app/templates/notifications/list.html index d2f5490..beef5ef 100644 --- a/app/templates/notifications/list.html +++ b/app/templates/notifications/list.html @@ -37,7 +37,7 @@ Notifications + src="{{ n.package.get_thumbnail_url(1) }}" /> {{ n.package.title }} @@ -75,7 +75,7 @@ Notifications + src="{{ n.package.get_thumbnail_url(1) }}" /> {{ n.package.title }} diff --git a/app/templates/packages/screenshot_edit.html b/app/templates/packages/screenshot_edit.html index 34b2907..21f0ed3 100644 --- a/app/templates/packages/screenshot_edit.html +++ b/app/templates/packages/screenshot_edit.html @@ -24,7 +24,7 @@ - {{ screenshot.title }} + {{ screenshot.title }}

    {% endblock %} diff --git a/app/templates/packages/screenshots.html b/app/templates/packages/screenshots.html index b3a4ba6..26fb95a 100644 --- a/app/templates/packages/screenshots.html +++ b/app/templates/packages/screenshots.html @@ -8,7 +8,7 @@

    {{ package.title }}

    {% if package.checkPerm(current_user, "ADD_SCREENSHOTS") %} - + {{ _("Add Image") }} {% endif %} @@ -28,7 +28,7 @@
    {{ ss.title }} + src="{{ ss.get_thumbnail_url() }}" alt="{{ ss.title }}" />
    {{ ss.title }} diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index 37a9093..37bf2dd 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -11,8 +11,8 @@ - {% if package.getMainScreenshotURL() %} - + {% if package.get_cover_image_url() %} + {% endif %} {% endblock %} @@ -27,7 +27,7 @@ {% set release = package.getDownloadRelease() %}
    - {% set cover_image = package.cover_image.url or package.getMainScreenshotURL() %} + {% set cover_image = package.cover_image.url or package.get_cover_image_url() %}
    + Edit @@ -390,14 +390,14 @@ {% if ss.approved or package.checkPerm(current_user, "ADD_SCREENSHOTS") %}
  • - {{ ss.title }} + {{ ss.title }}
  • {% endif %} {% else %} {% if package.checkPerm(current_user, "EDIT_PACKAGE") %}
  • - +
  • diff --git a/app/templates/todo/list.html b/app/templates/todo/list.html index 5c545e9..20131f6 100644 --- a/app/templates/todo/list.html +++ b/app/templates/todo/list.html @@ -18,7 +18,7 @@