From aed805da6eb7cdc3f1f30eaef50cebadf571cf15 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Wed, 21 Mar 2018 19:03:14 +0000 Subject: [PATCH] Add new package approval --- app/models.py | 13 +++++++++++++ app/templates/package_details.html | 11 +++++++++++ app/views/packages.py | 24 +++++++++++++++++++++--- setup.py | 3 +++ 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/app/models.py b/app/models.py index d24c218..839bc49 100644 --- a/app/models.py +++ b/app/models.py @@ -35,6 +35,12 @@ class Permission(enum.Enum): APPROVE_NEW = "APPROVE_NEW" CHANGE_RELEASE_URL = "CHANGE_RELEASE_URL" + def check(self, user): + if self == Permission.APPROVE_NEW: + return user.rank.atLeast(UserRank.EDITOR) + else: + raise Exception("Non-global permission checked globally. Use Package.checkPerm or User.checkPerm instead.") + class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) @@ -102,6 +108,8 @@ class Package(db.Model): desc = db.Column(db.Text, nullable=True) type = db.Column(db.Enum(PackageType)) + approved = db.Column(db.Boolean, nullable=False, default=False) + # Downloads repo = db.Column(db.String(200), nullable=True) website = db.Column(db.String(200), nullable=True) @@ -122,6 +130,11 @@ class Package(db.Model): type=self.type.toName(), author=self.author.username, name=self.name) + def getApproveURL(self): + return url_for("approve_package_page", + type=self.type.toName(), + author=self.author.username, name=self.name) + def getCreateReleaseURL(self): return url_for("create_release_page", type=self.type.toName(), diff --git a/app/templates/package_details.html b/app/templates/package_details.html index 58facbc..d0d13e1 100644 --- a/app/templates/package_details.html +++ b/app/templates/package_details.html @@ -5,6 +5,17 @@ {% endblock %} {% block content %} + {% if not package.approved %} +
+ + This package needs to be approved before it can be found. + {% if package.checkPerm(current_user, "APPROVE_NEW") %} + Approve + {% endif %} +
+
+ {% endif %} +

{{ package.title }} by {{ package.author.display_name }}