def _validate_swapped_branch_names()

in experimenter/experimenter/experiments/api/v5/serializers.py [0:0]


    def _validate_swapped_branch_names(self, data):
        if "reference_branch" in data and "treatment_branches" in data:
            name_ids = defaultdict(set)

            for branch_data in data["treatment_branches"] + [data["reference_branch"]]:
                name_ids[branch_data["name"]].add(branch_data.get("id"))

            for branch in self.instance.branches.all():
                name_ids[branch.name].add(branch.id)

            swapped_branches = [name for (name, ids) in name_ids.items() if len(ids) > 1]

            if len(swapped_branches) > 1:
                raise serializers.ValidationError(
                    {
                        "reference_branch": {"name": NimbusConstants.ERROR_BRANCH_SWAP},
                        "treatment_branches": [
                            {"name": NimbusConstants.ERROR_BRANCH_SWAP}
                            for _ in data["treatment_branches"]
                        ],
                    }
                )

        return data