commit: ed46487bc107c4f404d23e6429e0e4050616459b
Author: Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 7 01:55:18 2016 +0000
Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Wed Dec 7 01:55:18 2016 +0000
URL: https://gitweb.gentoo.org/proj/grumpy.git/commit/?id=ed46487b
models: Add package maintainers relationship table and ORM relationships
backend/lib/models.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/backend/lib/models.py b/backend/lib/models.py
index e06dcf8..ba20622 100644
--- a/backend/lib/models.py
+++ b/backend/lib/models.py
@@ -10,6 +10,11 @@ class Category(db.Model):
def __repr__(self):
return "<Category %r>" % self.name
+package_maintainer_rel_table = db.Table('package_maintainer_rel',
+ db.Column('package_id', db.Integer, db.ForeignKey('package.id')),
+ db.Column('maintainer_id', db.Integer, db.ForeignKey('maintainer.id')),
+)
+
class Package(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.Unicode(128), nullable=False)
@@ -17,6 +22,9 @@ class Package(db.Model):
category = db.relationship('Category', backref=db.backref('packages',
lazy='dynamic'))
description = db.Column(db.Unicode(500))
last_sync_ts = db.Column(db.TIMESTAMP, nullable=False,
default=datetime.utcfromtimestamp(0))
+ maintainers = db.relationship("Maintainer",
+ secondary=package_maintainer_rel_table,
+ backref='directly_maintained_packages')
@property
def full_name(self):
@@ -54,6 +62,7 @@ class Maintainer(db.Model):
secondaryjoin=id==maintainer_project_membership_rel_table.c.maintainer_id,
backref='projects')
# projects relationship backref ^^
+ # directly_maintained_packages backref - list of packages maintained
directly by given project or individual maintainer (as opposed to a bigger list
that includes packages maintained by parent/child projects or projects the
given individual maintainer is part of)
def __repr__(self):
return "<Maintainer %s '%s'>" % ("project" if self.is_project else
"individual", self.email)