diff options
author | rubenwardy <rw@rubenwardy.com> | 2018-03-20 18:20:30 +0000 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2018-03-20 18:20:30 +0000 |
commit | 596f725d599f15b222d7ce2dcfc5b6a76aebb3e8 (patch) | |
tree | 98a5d0b607ffc1b8a0851e626ceb5371d521300c /app/models.py | |
parent | 623ca3da074e9c456faa7f3b7a2ba6cbf7e81fe5 (diff) | |
download | cheatdb-596f725d599f15b222d7ce2dcfc5b6a76aebb3e8.tar.xz |
Add package releases
Diffstat (limited to 'app/models.py')
-rw-r--r-- | app/models.py | 19 |
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 |