From c45c3068ac7332e2bf284d9ee93c096e660b6e8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=D0=BE=D0=B2=20=D0=94=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=81?= Date: Wed, 14 Oct 2020 16:51:14 +0300 Subject: [PATCH] Duplicating group packages bug has been fixed #8 --- calculate/templates/template_processor.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/calculate/templates/template_processor.py b/calculate/templates/template_processor.py index cd63637..1f72a90 100644 --- a/calculate/templates/template_processor.py +++ b/calculate/templates/template_processor.py @@ -1808,12 +1808,25 @@ class DirectoryProcessor: source=[atom_dict]) else: group_var = groups_namespace[group_name] - group_var.source = group_var.get_table().append(atom_dict) + group_table = group_var.get_table() + if not self.check_existance_in_group(atom_dict, group_table): + group_table.append(atom_dict) + group_var.source = group_table else: if group_name not in groups_namespace: groups_namespace[group_name] = [atom_dict] else: - groups_namespace[group_name].append(atom_dict) + group_table = groups_namespace[group_name] + if not self.check_existance_in_group(atom_dict, group_table): + group_table.append(atom_dict) + groups_namespace[group_name] = group_table + + def check_existance_in_group(self, atom_dict: dict, group: list): + for group_atom in group: + for field in ['category', 'name', 'version', 'slot']: + if atom_dict[field] != group_atom[field]: + continue + return True def process_template_directories(self) -> None: '''Метод для обхода шаблонов, содержащихся в каталогах из