def transformer_promoted(cls, versions): """Attach the promoted approvals to the versions.""" if not versions: return PromotedApproval = versions[0].promoted_approvals.model ids = {v.id for v in versions} approvals = list( PromotedApproval.objects.filter(version_id__in=ids).values_list( 'version_id', 'group_id', 'application_id', named=True)) approval_dict = { version_id: list(groups) for version_id, groups in sorted_groupby(approvals, 'version_id') } for version in versions: v_id = version.id groups = [( PROMOTED_GROUPS_BY_ID.get(approval.group_id), APP_IDS.get(approval.application_id), ) for approval in approval_dict.get(v_id, []) if approval.group_id in PROMOTED_GROUPS_BY_ID] version.approved_for_groups = groups
def approved_for_groups(self): approvals = list(self.promoted_approvals.all()) return [ (PROMOTED_GROUPS_BY_ID.get(approval.group_id), approval.application) for approval in approvals if approval.group_id in PROMOTED_GROUPS_BY_ID ]
def group(self): return PROMOTED_GROUPS_BY_ID.get(self.group_id, NOT_PROMOTED)
def promoted(self): return PROMOTED_GROUPS_BY_ID.get(self.promoted_group_id, NOT_PROMOTED)
def approved_for_groups(self): approvals = list(self.promoted_approvals.all()) return [ PROMOTED_GROUPS_BY_ID.get(pro.group_id) for pro in approvals if pro.group_id in PROMOTED_GROUPS_BY_ID ]