diff --git a/app/main/checks/report_checks/literature_references.py b/app/main/checks/report_checks/literature_references.py
index 1effac5a..2500b92a 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
@@ -59,7 +61,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:
@@ -68,7 +71,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:
@@ -82,14 +85,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'