1 |
commit: a0e5f8b3559f243236d9dd1170a00d4405042631 |
2 |
Author: Mart Raudsepp <leio <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Dec 4 06:24:39 2016 +0000 |
4 |
Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Dec 4 06:24:39 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/grumpy.git/commit/?id=a0e5f8b3 |
7 |
|
8 |
models: Add association table and ORM relationship between projects and members |
9 |
|
10 |
backend/lib/models.py | 12 ++++++++++++ |
11 |
1 file changed, 12 insertions(+) |
12 |
|
13 |
diff --git a/backend/lib/models.py b/backend/lib/models.py |
14 |
index bc6cd20..f842a8a 100644 |
15 |
--- a/backend/lib/models.py |
16 |
+++ b/backend/lib/models.py |
17 |
@@ -31,6 +31,11 @@ class PackageVersion(db.Model): |
18 |
def __repr__(self): |
19 |
return "<PackageVersion '%s/%s-%s'>" % (self.package.category.name, self.package.name, self.version) |
20 |
|
21 |
+maintainer_project_membership_rel_table = db.Table('maintainer_project_membership_rel', |
22 |
+ db.Column('project_id', db.Integer, db.ForeignKey('maintainer.id')), |
23 |
+ db.Column('maintainer_id', db.Integer, db.ForeignKey('maintainer.id')), |
24 |
+) |
25 |
+ |
26 |
class Maintainer(db.Model): |
27 |
id = db.Column(db.Integer, primary_key=True) |
28 |
email = db.Column(db.Unicode(50), nullable=False, unique=True) |
29 |
@@ -39,5 +44,12 @@ class Maintainer(db.Model): |
30 |
url = db.Column(db.Unicode()) |
31 |
description = db.Column(db.Unicode(500)) |
32 |
|
33 |
+ members = db.relationship("Maintainer", |
34 |
+ secondary=maintainer_project_membership_rel_table, |
35 |
+ primaryjoin=id==maintainer_project_membership_rel_table.c.project_id, |
36 |
+ secondaryjoin=id==maintainer_project_membership_rel_table.c.maintainer_id, |
37 |
+ backref='projects') |
38 |
+ # projects relationship backref ^^ |
39 |
+ |
40 |
def __repr__(self): |
41 |
return "<Maintainer %s '%s'>" % ("project" if self.is_project else "individual", self.email) |