From c298f650d6783a151b21f7d6eb9d8a8bb520414d Mon Sep 17 00:00:00 2001 From: Mac Date: Tue, 25 Nov 2025 18:43:45 +0300 Subject: [PATCH] 762_duplicate_literature_references --- .../checks/report_checks/literature_references.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/app/main/checks/report_checks/literature_references.py b/app/main/checks/report_checks/literature_references.py index bcd89792..448c968a 100644 --- a/app/main/checks/report_checks/literature_references.py +++ b/app/main/checks/report_checks/literature_references.py @@ -12,6 +12,7 @@ def __init__(self, file_info, min_ref=1, max_ref=1000, headers_map=None): super().__init__(file_info) self.headers = [] self.literature_header = None + self.literature_reference_text = [] self.name_pattern = r'список[ \t]*(использованных|использованной|)[ \t]*(источников|литературы)' if headers_map: self.config = headers_map @@ -55,6 +56,10 @@ def check(self): if not number_of_sources: return answer(False, f'В Списке использованных источников не найдено ни одного источника.

Проверьте корректность использования нумированного списка.') + + if not self.checking_duplicate_sources(): + return answer(False, 'В списке используемых источников есть дублирующиеся источники.') + references, ref_sequence = self.search_references(start_literature_par) all_numbers = set(range(1, number_of_sources + 1)) if len(references.symmetric_difference(all_numbers)) == 0: @@ -124,6 +129,12 @@ def add_references(self, k, prev_ref, array_of_references, ref_sequence): array_of_references.add(k) return prev_ref + def checking_duplicate_sources(self): + for source in self.literature_reference_text: + if self.literature_reference_text.count(source) >= 2: + return False + return True + def find_start_paragraph(self): start_index = 0 for i in range(len(self.file.paragraphs)): @@ -142,6 +153,7 @@ def count_sources_vkr(self, header): break # if re.search(f"дата обращения", child["text"].lower()): literature_counter += 1 + self.literature_reference_text.append(child["text"]) return literature_counter def count_sources(self): @@ -165,6 +177,7 @@ def count_sources(self): for ind in range(first_string + 1, last_string): if re.match(f"{literature_counter + 1}.", one_page[ind]): literature_counter += 1 + self.literature_reference_text.append(one_page[ind]) return literature_counter def search_literature_start_pdf(self):