diff --git a/app/main/checks/report_checks/literature_references.py b/app/main/checks/report_checks/literature_references.py
index c0243d48..e02966cb 100644
--- a/app/main/checks/report_checks/literature_references.py
+++ b/app/main/checks/report_checks/literature_references.py
@@ -1,6 +1,7 @@
import re
from .style_check_settings import StyleCheckSettings
from ..base_check import BaseReportCriterion, answer
+from collections import Counter
class ReferencesToLiteratureCheck(BaseReportCriterion):
@@ -12,6 +13,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
@@ -56,6 +58,8 @@ def check(self):
if not number_of_sources:
return answer(False,
f'В Списке использованных источников не найдено ни одного источника.
Проверьте корректность использования нумированного списка.')
+
+ duplicates = self.checking_duplicate_sources()
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:
@@ -63,8 +67,8 @@ def check(self):
return answer(False, f'Список источников оформлен верно, однако их количество ({number_of_sources}) не удовлетворяет необходимому критерию.
Количество источников должно быть не менее {self.min_ref}.')
elif ref_sequence:
result_str += f"Источники должны нумероваться в порядке упоминания в тексте. Неправильные последовательности: {'; '.join(num for num in ref_sequence)}"
- return answer(False, result_str)
- else:
+ return answer(False, result_str)
+ elif not duplicates:
return answer(True, f"Пройдена!")
elif len(references.difference(all_numbers)):
if len(all_numbers.difference(references)) == 0:
@@ -77,13 +81,23 @@ def check(self):
else:
all_numbers -= references
result_str = f'Упомянуты не все источники из списка.
Список источников без упоминания: {", ".join(str(num) for num in sorted(all_numbers))}
Всего источников: {number_of_sources}
'
+
+ if duplicates:
+ message = ''
+ for duplicate in duplicates:
+ message += f'