From c2e0e672af9d8d75be4120b923c156bec25b0275 Mon Sep 17 00:00:00 2001 From: vovanbravin Date: Fri, 30 Jan 2026 13:52:00 +0300 Subject: [PATCH] 767_count_domens --- .../report_checks/literature_references.py | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/app/main/checks/report_checks/literature_references.py b/app/main/checks/report_checks/literature_references.py index ee368dd2..77cf215a 100644 --- a/app/main/checks/report_checks/literature_references.py +++ b/app/main/checks/report_checks/literature_references.py @@ -9,11 +9,13 @@ class ReferencesToLiteratureCheck(BaseReportCriterion): description = '' id = 'literature_references' - def __init__(self, file_info, min_ref=1, max_ref=1000, headers_map=None): + def __init__(self, file_info, min_ref=1, max_ref=1000, max_count_domains = 5,headers_map=None): super().__init__(file_info) self.headers = [] self.literature_header = None self.literature_reference_text = [] + self.literature_domains = [] + self.max_count_domains = max_count_domains self.name_pattern = r'список[ \t]*(использованных|использованной|)[ \t]*(источников|литературы)' if headers_map: self.config = headers_map @@ -58,7 +60,8 @@ def check(self): return answer(False, f'В Списке использованных источников не найдено ни одного источника.

Проверьте корректность использования нумированного списка.') - duplicates = self.checking_duplicate_sources() + duplicates_ref = self.checking_duplicate_sources(self.literature_reference_text, 2) + duplicates_domains = self.checking_duplicate_sources(self.literature_domains, self.max_count_domains) 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: @@ -67,7 +70,7 @@ def check(self): elif ref_sequence: result_str += f"Источники должны нумероваться в порядке упоминания в тексте. Неправильные последовательности: {'; '.join(num for num in ref_sequence)}" return answer(False, result_str) - elif not duplicates: + elif not duplicates_ref and not duplicates_domains: return answer(True, f"Пройдена!") elif len(references.difference(all_numbers)): if len(all_numbers.difference(references)) == 0: @@ -81,14 +84,24 @@ def check(self): all_numbers -= references result_str = f'Упомянуты не все источники из списка.
Список источников без упоминания: {", ".join(str(num) for num in sorted(all_numbers))}
Всего источников: {number_of_sources}

' - if duplicates: + if duplicates_ref: message = '' - for duplicate in duplicates: + for duplicate in duplicates_ref: message += f'
  • Источники с номерами: {duplicate[1]} ссылаются на один и тот же источник: {duplicate[0]};
  • \n' result_str += (f'Повторяющиеся источники:' f'') + + if duplicates_domains: + message = '' + for duplicate in duplicates_domains: + message += f'
  • Источники с номерами: {duplicate[1]} ссылаются на один и тот же домен: {duplicate[0]};
  • \n' + result_str += (f'Повторяющиеся домены, максимум на один домен могут ссылаться не более {self.max_count_domains} источников:' + f'') + result_str += ''' Если возникли проблемы, попробуйте сделать следующее: