1 |
commit: d1965a898e3f92f94accb630d4daf68d156a0d0c |
2 |
Author: Mart Raudsepp <leio <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Dec 4 06:26:47 2016 +0000 |
4 |
Commit: Mart Raudsepp <leio <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Dec 4 06:26:47 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/grumpy.git/commit/?id=d1965a89 |
7 |
|
8 |
sync: Project members and subprojects syncing to DB |
9 |
|
10 |
backend/lib/sync.py | 26 +++++++++++++++++++++++++- |
11 |
1 file changed, 25 insertions(+), 1 deletion(-) |
12 |
|
13 |
diff --git a/backend/lib/sync.py b/backend/lib/sync.py |
14 |
index 6ed8e01..57a7cb1 100644 |
15 |
--- a/backend/lib/sync.py |
16 |
+++ b/backend/lib/sync.py |
17 |
@@ -78,9 +78,33 @@ def sync_projects(): |
18 |
print ("Adding project %s" % email) |
19 |
new_maintainer = Maintainer(email=data['email'], is_project=True, description=data['description'], name=data['name'], url=data['url']) |
20 |
db.session.add(new_maintainer) |
21 |
+ existing_maintainers[email] = new_maintainer |
22 |
+ members = [] |
23 |
+ if 'subprojects' in data: |
24 |
+ for subproject_email, inherit_members in data['subprojects']: |
25 |
+ # TODO: How should we handle inherit_members? |
26 |
+ if subproject_email in existing_maintainers: |
27 |
+ members.append(existing_maintainers[subproject_email]) |
28 |
+ else: |
29 |
+ print("Creating new project entry for subproject: %s" % subproject_email) |
30 |
+ new_subproject = Maintainer(email=subproject_email, is_project=True) |
31 |
+ db.session.add(new_subproject) |
32 |
+ existing_maintainers[subproject_email] = new_subproject |
33 |
+ members.append(new_subproject) |
34 |
+ if 'members' in data: |
35 |
+ for member in data['members']: |
36 |
+ if member['email'] in existing_maintainers: |
37 |
+ members.append(existing_maintainers[member['email']]) |
38 |
+ else: |
39 |
+ print("Adding individual %s" % member['email']) |
40 |
+ new_maintainer = Maintainer(email=member['email'], is_project=False, name=member['name'] if 'name' in member else None) |
41 |
+ db.session.add(new_maintainer) |
42 |
+ existing_maintainers[member['email']] = new_maintainer |
43 |
+ members.append(new_maintainer) |
44 |
+ # TODO: Include role information in the association? |
45 |
+ existing_maintainers[email].members = members |
46 |
db.session.commit() |
47 |
|
48 |
- |
49 |
def sync_categories(): |
50 |
url = pkg_url_base + "categories.json" |
51 |
data = http_session.get(url) |