diff options
author | rubenwardy <rw@rubenwardy.com> | 2018-05-21 22:20:28 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2018-05-21 22:20:28 +0100 |
commit | acad90c3123a3a879c8d5cda040a4702114d19b0 (patch) | |
tree | d60b4044f99a0e3060a83c98cbf578ab1e03141a /app/models.py | |
parent | 47432ea7e4e7abda7021e3e125d6347fbe6534e0 (diff) | |
download | cheatdb-acad90c3123a3a879c8d5cda040a4702114d19b0.tar.xz |
Add dependency support
Diffstat (limited to 'app/models.py')
-rw-r--r-- | app/models.py | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/app/models.py b/app/models.py index f3ab06a..f632b7c 100644 --- a/app/models.py +++ b/app/models.py @@ -218,13 +218,23 @@ class PackagePropertyKey(enum.Enum): def convert(self, value): if self == PackagePropertyKey.tags: - return ','.join([t.title for t in value]) + return ",".join([t.title for t in value]) else: return str(value) -tags = db.Table('tags', - db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True), - db.Column('package_id', db.Integer, db.ForeignKey('package.id'), primary_key=True) +tags = db.Table("tags", + db.Column("tag_id", db.Integer, db.ForeignKey("tag.id"), primary_key=True), + db.Column("package_id", db.Integer, db.ForeignKey("package.id"), primary_key=True) +) + +harddeps = db.Table("harddeps", + db.Column("package_id", db.Integer, db.ForeignKey("package.id"), primary_key=True), + db.Column("dependency_id", db.Integer, db.ForeignKey("package.id"), primary_key=True) +) + +softdeps = db.Table("softdeps", + db.Column("package_id", db.Integer, db.ForeignKey("package.id"), primary_key=True), + db.Column("dependency_id", db.Integer, db.ForeignKey("package.id"), primary_key=True) ) class Package(db.Model): @@ -248,9 +258,20 @@ class Package(db.Model): issueTracker = db.Column(db.String(200), nullable=True) forums = db.Column(db.Integer, nullable=False) + tags = db.relationship("Tag", secondary=tags, lazy="subquery", + backref=db.backref("packages", lazy=True)) + + harddeps = db.relationship("Package", + secondary=harddeps, + primaryjoin=id==harddeps.c.package_id, + secondaryjoin=id==harddeps.c.dependency_id, + backref="dependents") - tags = db.relationship('Tag', secondary=tags, lazy='subquery', - backref=db.backref('packages', lazy=True)) + softdeps = db.relationship("Package", + secondary=softdeps, + primaryjoin=id==softdeps.c.package_id, + secondaryjoin=id==softdeps.c.dependency_id, + backref="softdependents") releases = db.relationship("PackageRelease", backref="package", lazy="dynamic", order_by=db.desc("package_release_releaseDate")) @@ -357,7 +378,7 @@ class Tag(db.Model): self.textColor = textColor import re - regex = re.compile('[^a-z_]') + regex = re.compile("[^a-z_]") self.name = regex.sub("", self.title.lower().replace(" ", "_")) class PackageRelease(db.Model): |