aboutsummaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-03-20 18:20:30 +0000
committerrubenwardy <rw@rubenwardy.com>2018-03-20 18:20:30 +0000
commit596f725d599f15b222d7ce2dcfc5b6a76aebb3e8 (patch)
tree98a5d0b607ffc1b8a0851e626ceb5371d521300c /app/models.py
parent623ca3da074e9c456faa7f3b7a2ba6cbf7e81fe5 (diff)
downloadcheatdb-596f725d599f15b222d7ce2dcfc5b6a76aebb3e8.tar.xz
Add package releases
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/app/models.py b/app/models.py
index 67adcbf..2943535 100644
--- a/app/models.py
+++ b/app/models.py
@@ -30,6 +30,7 @@ class Permission(enum.Enum):
APPROVE_CHANGES = "APPROVE_CHANGES"
DELETE_PACKAGE = "DELETE_PACKAGE"
CHANGE_AUTHOR = "CHANGE_AUTHOR"
+ MAKE_RELEASE = "MAKE_RELEASE"
APPROVE_RELEASE = "APPROVE_RELEASE"
APPROVE_NEW = "APPROVE_NEW"
@@ -106,6 +107,9 @@ class Package(db.Model):
issueTracker = db.Column(db.String(200), nullable=True)
forums = db.Column(db.String(200), nullable=False)
+ # Releases
+ releases = db.relationship('PackageRelease', backref='package', lazy='dynamic')
+
def getDetailsURL(self):
return url_for("package_page",
type=self.type.toName(),
@@ -128,6 +132,9 @@ class Package(db.Model):
isOwner = user == self.author
# Members can edit their own packages, and editors can edit any packages
+ if perm == Permission.MAKE_RELEASE:
+ return isOwner or user.rank.atLeast(UserRank.EDITOR)
+
if perm == Permission.EDIT_PACKAGE or perm == Permission.APPROVE_CHANGES:
return user.rank.atLeast(UserRank.MEMBER if isOwner else UserRank.EDITOR)
@@ -143,6 +150,18 @@ class Package(db.Model):
else:
raise Exception("Permission {} is not related to packages".format(perm.name))
+class PackageRelease(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+
+ package_id = db.Column(db.Integer, db.ForeignKey('package.id'))
+ title = db.Column(db.String(100), nullable=False)
+ releaseDate = db.Column(db.Date, nullable=False)
+ url = db.Column(db.String(100), nullable=False)
+ approved = db.Column(db.Boolean, nullable=False, default=False)
+
+ def __init__(self):
+ self.releaseDate = datetime.now()
+
# Setup Flask-User
db_adapter = SQLAlchemyAdapter(db, User) # Register the User model
user_manager = UserManager(db_adapter, app) # Initialize Flask-User