public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Gilles Dartiguelongue" <eva@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/grumpy:master commit in: backend/lib/
Date: Sun, 22 Jan 2017 12:24:17 +0000 (UTC)	[thread overview]
Message-ID: <1485087836.5e7347647516660603dddeedcf570d0cfef27b1a.eva@gentoo> (raw)

commit:     5e7347647516660603dddeedcf570d0cfef27b1a
Author:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
AuthorDate: Sun Jan 22 12:18:00 2017 +0000
Commit:     Gilles Dartiguelongue <eva <AT> gentoo <DOT> org>
CommitDate: Sun Jan 22 12:23:56 2017 +0000
URL:        https://gitweb.gentoo.org/proj/grumpy.git/commit/?id=5e734764

sync: define project keys default values

Costs less than checking for it in each loop iteration and does no
harm later to loop on empty lists.

 backend/lib/sync.py | 64 +++++++++++++++++++++++++++--------------------------
 1 file changed, 33 insertions(+), 31 deletions(-)

diff --git a/backend/lib/sync.py b/backend/lib/sync.py
index 5e8240d..0aab3bc 100644
--- a/backend/lib/sync.py
+++ b/backend/lib/sync.py
@@ -28,7 +28,10 @@ def get_project_data():
         if proj_elem.tag.lower() != 'project':
             print("Skipping unknown <projects> subtag <%s>" % proj_elem.tag)
             continue
-        proj = {}
+        proj = {
+            'members': [],
+            'subprojects': [],
+        }
         for elem in proj_elem:
             tag = elem.tag.lower()
             if tag in ['email']:
@@ -46,14 +49,11 @@ def get_project_data():
                     if member_tag in ['name', 'role']:
                         member[member_tag] = member_elem.text
                 if 'email' in member:
-                    if 'members' not in proj:
-                        proj['members'] = []
                     proj['members'].append(member)
             elif tag == 'subproject':
                 if 'ref' in elem.attrib:
-                    if 'subprojects' not in proj:
-                        proj['subprojects'] = []
-                    # subprojects will be a list of (subproject_email, inherit-members) tuples where inherit-members is True or False. TODO: Might change if sync code will want it differently
+                    # subprojects will be a list of (subproject_email, inherit-members) tuples where inherit-members is True or False.
+                    # TODO: Might change if sync code will want it differently
                     proj['subprojects'].append((elem.attrib['ref'].lower(), True if ('inherit-members' in elem.attrib and elem.attrib['inherit-members'] == '1') else False))
                 else:
                     print("Invalid <subproject> tag inside project %s - required 'ref' attribute missing" % proj['email'] if 'email' in proj else "<unknown>")
@@ -86,32 +86,34 @@ def sync_projects():
             new_maintainer = Maintainer(email=email, is_project=True, description=data['description'], name=data['name'], url=data['url'])
             db.session.add(new_maintainer)
             existing_maintainers[email] = new_maintainer
+
         members = []
-        if 'subprojects' in data:
-            for subproject_email, inherit_members in data['subprojects']:
-                # TODO: How should we handle inherit_members?
-                if subproject_email in existing_maintainers:
-                    members.append(existing_maintainers[subproject_email])
-                else:
-                    print("Creating new project entry for subproject: %s" % subproject_email)
-                    new_subproject = Maintainer(email=subproject_email, is_project=True)
-                    db.session.add(new_subproject)
-                    existing_maintainers[subproject_email] = new_subproject
-                    members.append(new_subproject)
-        if 'members' in data:
-            for member in data['members']:
-                if member['email'] in existing_maintainers:
-                    # TODO: Stop overwriting the name from master data, if/once we have a proper sync source for individual maintainers (Gentoo LDAP?)
-                    if 'name' in member:
-                        existing_maintainers[member['email']].name = member['name']
-                    members.append(existing_maintainers[member['email']])
-                else:
-                    print("Adding individual maintainer %s" % member['email'])
-                    new_maintainer = Maintainer(email=member['email'], is_project=False, name=member['name'] if 'name' in member else None)
-                    db.session.add(new_maintainer)
-                    existing_maintainers[member['email']] = new_maintainer
-                    members.append(new_maintainer)
-            # TODO: Include role information in the association?
+
+        for subproject_email, inherit_members in data['subprojects']:
+            # TODO: How should we handle inherit_members?
+            if subproject_email in existing_maintainers:
+                members.append(existing_maintainers[subproject_email])
+            else:
+                print("Creating new project entry for subproject: %s" % subproject_email)
+                new_subproject = Maintainer(email=subproject_email, is_project=True)
+                db.session.add(new_subproject)
+                existing_maintainers[subproject_email] = new_subproject
+                members.append(new_subproject)
+
+        for member in data['members']:
+            if member['email'] in existing_maintainers:
+                # TODO: Stop overwriting the name from master data, if/once we have a proper sync source for individual maintainers (Gentoo LDAP?)
+                if 'name' in member:
+                    existing_maintainers[member['email']].name = member['name']
+                members.append(existing_maintainers[member['email']])
+            else:
+                print("Adding individual maintainer %s" % member['email'])
+                new_maintainer = Maintainer(email=member['email'], is_project=False, name=member['name'] if 'name' in member else None)
+                db.session.add(new_maintainer)
+                existing_maintainers[member['email']] = new_maintainer
+                members.append(new_maintainer)
+
+        # TODO: Include role information in the association?
         existing_maintainers[email].members = members
     db.session.commit()
 


             reply	other threads:[~2017-01-22 12:24 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-22 12:24 Gilles Dartiguelongue [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-01-23  0:06 [gentoo-commits] proj/grumpy:master commit in: backend/lib/ Gilles Dartiguelongue
2017-01-22 17:46 Gilles Dartiguelongue
2017-01-22 17:13 Gilles Dartiguelongue
2017-01-22 12:36 Gilles Dartiguelongue
2017-01-22 12:36 Gilles Dartiguelongue
2017-01-22 12:36 Gilles Dartiguelongue
2017-01-22 12:24 Gilles Dartiguelongue
2017-01-22 12:24 Gilles Dartiguelongue
2017-01-22 12:08 Mart Raudsepp
2017-01-22 12:00 Gilles Dartiguelongue
2017-01-22 12:00 Gilles Dartiguelongue
2017-01-22 11:59 Mart Raudsepp
2017-01-22 11:04 Gilles Dartiguelongue
2017-01-22 11:04 Gilles Dartiguelongue
2016-12-07  7:10 Mart Raudsepp
2016-12-07  4:42 Mart Raudsepp
2016-12-07  2:53 Mart Raudsepp
2016-12-07  2:40 Mart Raudsepp
2016-12-07  2:10 Mart Raudsepp
2016-12-07  1:58 Mart Raudsepp
2016-12-07  1:58 Mart Raudsepp
2016-12-07  0:34 Mart Raudsepp
2016-12-05 17:46 Mart Raudsepp
2016-12-04  8:04 Mart Raudsepp
2016-12-04  8:04 Mart Raudsepp
2016-12-04  7:44 Mart Raudsepp
2016-12-04  6:27 Mart Raudsepp
2016-12-04  6:27 Mart Raudsepp
2016-12-04  5:26 Mart Raudsepp
2016-12-04  5:26 Mart Raudsepp
2016-12-04  4:56 Mart Raudsepp
2016-11-11  1:22 Mart Raudsepp
2016-11-10 15:50 Mart Raudsepp
2016-09-24  7:02 Mart Raudsepp
2016-09-07 20:21 Mart Raudsepp

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1485087836.5e7347647516660603dddeedcf570d0cfef27b1a.eva@gentoo \
    --to=eva@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox