def _flatten_projects(self): flatten = {} rid2projects = {} for pid, detail in self.projects.items(): flatten[pid] = { 'name': pid, 'aname': pid, 'meta-ref': detail.get('meta-ref'), 'refs': [], 'description': detail.get('description'), 'logo': detail.get('logo'), 'bots-group': detail.get('bots-group'), 'releases': detail.get('releases', []), } for release in flatten[pid]['releases']: release['date'] = date2epoch(release['date']) for rid, repo in detail['repos'].items(): for branch in repo['branches']: r = {} r.update(copy.deepcopy(repo)) r['name'] = rid r['aname'] = rid r['branch'] = branch del r['branches'] r['fullrid'] = "%s:%s:%s" % (r['uri'], r['name'], r['branch']) r['shortrid'] = "%s:%s" % (r['uri'], r['name']) flatten[pid]['refs'].append(r) rid2projects.setdefault(r['fullrid'], {'project': []}) if pid not in rid2projects[r['fullrid']]['project']: rid2projects[r['fullrid']]['project'].append(pid) return flatten, rid2projects
def _flatten_projects(self): flatten = {} rid2projects = {} for pid, detail in self.projects.items(): flatten[pid] = { 'name': pid, 'aname': pid, 'meta-ref': detail.get('meta-ref'), 'refs': [], 'description': detail.get('description'), 'logo': detail.get('logo'), 'bots-group': detail.get('bots-group'), 'releases': detail.get('releases', []), } for release in flatten[pid]['releases']: release['date'] = date2epoch(release['date']) for rid, repo in detail['repos'].items(): for branch in repo['branches']: r = {} r.update(copy.deepcopy(repo)) r['name'] = rid r['aname'] = rid r['branch'] = branch del r['branches'] r['fullrid'] = "%s:%s:%s" % ( r['uri'], r['name'], r['branch']) r['shortrid'] = "%s:%s" % (r['uri'], r['name']) flatten[pid]['refs'].append(r) rid2projects.setdefault(r['fullrid'], {'project': []}) if pid not in rid2projects[r['fullrid']]['project']: rid2projects[r['fullrid']]['project'].append(pid) return flatten, rid2projects
def _enrich_projects(self): if self.enriched: return # cannot enrich twice # First resolve templates references for pid, detail in self.projects.items(): for rid, repo in detail['repos'].items(): # Save tags mentioned for a repo tags = [] if 'tags' in repo and repo['tags']: tags = copy.copy(repo['tags']) # Save branches mentioned for a repo branches = [] if 'branches' in repo: branches = copy.copy(repo['branches']) # Save paths mentioned for a repo paths = [] if 'paths' in repo: paths = copy.copy(repo['paths']) # Apply the template if 'template' in repo: repo.update(copy.deepcopy( self.templates[repo['template']])) del repo['template'] # Process uri and gitweb string for key in ('uri', 'gitweb'): if key in repo: repo[key] = repo[key] % {'name': rid} # Re-apply saved tags if 'tags' not in repo: repo['tags'] = [] repo['tags'].extend(tags) repo['tags'] = list(set(repo['tags'])) # Restore defined branches at repo level if branches: repo['branches'] = branches # Restore defined paths at repo level if paths: repo['paths'] = paths # Apply default values if 'parsers' not in repo: repo['parsers'] = [] if 'releases' not in repo: repo['releases'] = [] # Transform date to epoch for release in repo['releases']: release['date'] = date2epoch(release['date']) # Fill the lookup table for gitweb links if 'gitweb' in repo: su = '%s:%s' % (repo['uri'], rid) self.gitweb_lookup[su] = repo['gitweb'] self.enriched = True
def _enrich_idents(self): """ Here we convert provided date to epoch """ for iid, id_data in self.idents.items(): for email, email_data in id_data['emails'].items(): for group, data in email_data.get('groups', {}).items(): if not data: continue for key in ('begin-date', 'end-date'): if key in data: data[key] = date2epoch(data[key]) else: data[key] = None self.enriched_idents = True
def _enrich_projects(self): for detail in list(self.projects.values()): if 'meta-ref' not in detail: detail['meta-ref'] = False for rid, repo in list(detail['repos'].items()): # Save tags mentioned for a repo tags = [] if 'tags' in repo and repo['tags']: tags = copy.copy(repo['tags']) # Save branches mentioned for a repo branches = [] if 'branches' in repo: branches = copy.copy(repo['branches']) # Save paths mentioned for a repo paths = [] if 'paths' in repo: paths = copy.copy(repo['paths']) # Apply the template if 'template' in repo: repo.update(copy.deepcopy( self.templates[repo['template']])) del repo['template'] # Process uri and gitweb string for key in ('uri', 'gitweb'): if key in repo: repo[key] = repo[key] % {'name': rid} # Re-apply saved tags if 'tags' not in repo: repo['tags'] = [] repo['tags'].extend(tags) repo['tags'] = list(set(repo['tags'])) # Restore defined branches at repo level if branches: repo['branches'] = branches # Restore defined paths at repo level if paths: repo['paths'] = paths # Apply default values if 'parsers' not in repo: repo['parsers'] = [] if 'releases' not in repo: repo['releases'] = [] if 'index-tags' not in repo: repo['index-tags'] = True # Transform date to epoch for release in repo['releases']: release['date'] = date2epoch(release['date'])
def _enrich_projects(self): for detail in list(self.projects.values()): if 'meta-ref' not in detail: detail['meta-ref'] = False for rid, repo in list(detail['repos'].items()): # Save tags mentioned for a repo tags = [] if 'tags' in repo and repo['tags']: tags = copy.copy(repo['tags']) # Save branches mentioned for a repo branches = [] if 'branches' in repo: branches = copy.copy(repo['branches']) # Save paths mentioned for a repo paths = [] if 'paths' in repo: paths = copy.copy(repo['paths']) # Apply the template if 'template' in repo: repo.update(copy.deepcopy( self.templates[repo['template']])) del repo['template'] # Process uri and gitweb string for key in ('uri', 'gitweb'): if key in repo: repo[key] = repo[key] % {'name': rid} # Re-apply saved tags if 'tags' not in repo: repo['tags'] = [] repo['tags'].extend(tags) repo['tags'] = list(set(repo['tags'])) # Restore defined branches at repo level if branches: repo['branches'] = branches # Restore defined paths at repo level if paths: repo['paths'] = paths # Apply default values if 'parsers' not in repo: repo['parsers'] = [] if 'releases' not in repo: repo['releases'] = [] if 'index-tags' not in repo: repo['index-tags'] = True # Transform date to epoch for release in repo['releases']: release['date'] = date2epoch(release['date'])
def _enrich_groups(self): """ Here we convert provided date to epoch and groups are also populated by idents defining an ownership to a group """ def add_to_group(group, email, details): if group not in self.groups.keys(): return self.groups[group]['emails'][email] = details for gid, groups in self.groups.items(): for email, data in groups['emails'].items(): if not data: continue for key in ('begin-date', 'end-date'): if key in data: data[key] = date2epoch(data[key]) else: data[key] = None # Here if the users elk backend is active we populate groups # by querying the users index if user_endpoint_active: for gid, groups in self.groups.items(): idents = self._users.get_idents_in_group(gid) for ident in idents: _, data = self.backend_convert_ident(ident) for email, email_data in data['emails'].items(): for group, details in email_data.get( 'groups', {}).items(): if group == gid: add_to_group(group, email, details) # If not regular yaml identities index is used else: for iid, id_data in self.idents.items(): for email, email_data in id_data['emails'].items(): for group, details in email_data.get( 'groups', {}).items(): add_to_group(group, email, details) self.enriched_groups = True