aboutsummaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-03-23 19:08:55 +0000
committerrubenwardy <rw@rubenwardy.com>2018-03-23 19:09:06 +0000
commitdcfd2b00031a49042f35e1ebaefa05c21edf4c4f (patch)
tree3305fb38c2a202bf11aa259176774ede0a6113d1 /app/models.py
parent269c8c0eb4c3f66cdf778f313c84163d51f04bad (diff)
downloadcheatdb-dcfd2b00031a49042f35e1ebaefa05c21edf4c4f.tar.xz
Add EditRequest creation
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/app/models.py b/app/models.py
index 518ffc8..2f85337 100644
--- a/app/models.py
+++ b/app/models.py
@@ -73,6 +73,7 @@ class User(db.Model, UserMixin):
# Content
packages = db.relationship("Package", backref="author", lazy="dynamic")
+ requests = db.relationship("EditRequest", backref="author", lazy="dynamic")
def __init__(self, username):
import datetime
@@ -104,6 +105,19 @@ class PackageType(enum.Enum):
def coerce(cls, item):
return item if type(item) == PackageType else PackageType[item]
+
+class PackagePropertyKey(enum.Enum):
+ name = "name"
+ title = "title"
+ shortDesc = "shortDesc"
+ desc = "desc"
+ type = "type"
+ repo = "repo"
+ website = "website"
+ issueTracker = "issueTracker"
+ forums = "forums"
+
+
class Package(db.Model):
id = db.Column(db.Integer, primary_key=True)
@@ -127,6 +141,10 @@ class Package(db.Model):
releases = db.relationship("PackageRelease", backref="package",
lazy="dynamic", order_by=db.desc("package_release_releaseDate"))
+
+ requests = db.relationship("EditRequest", backref="package",
+ lazy="dynamic")
+
def getAsDictionary(self, base_url):
return {
"name": self.name,
@@ -224,6 +242,37 @@ class PackageRelease(db.Model):
def __init__(self):
self.releaseDate = datetime.now()
+class EditRequest(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+
+ package_id = db.Column(db.Integer, db.ForeignKey("package.id"))
+ author_id = db.Column(db.Integer, db.ForeignKey("user.id"))
+
+ title = db.Column(db.String(100), nullable=False)
+ desc = db.Column(db.String(1000), nullable=True)
+
+
+ changes = db.relationship("EditRequestChange", backref="request",
+ lazy="dynamic")
+
+ def applyAll(self, package):
+ for change in self.changes:
+ change.apply(package)
+
+class EditRequestChange(db.Model):
+ id = db.Column(db.Integer, primary_key=True)
+
+ request_id = db.Column(db.Integer, db.ForeignKey("edit_request.id"))
+ key = db.Column(db.Enum(PackagePropertyKey), nullable=False)
+
+ # TODO: make diff instead
+ oldValue = db.Column(db.Text, nullable=False)
+ newValue = db.Column(db.Text, nullable=False)
+
+ def apply(self, package):
+ prop = PackagePropertyKey[self.key]
+
+
# Setup Flask-User
db_adapter = SQLAlchemyAdapter(db, User) # Register the User model
user_manager = UserManager(db_adapter, app) # Initialize Flask-User