Skip to content

Commit 77aeae2

Browse files
committed
check 3 label is done
1 parent 7938207 commit 77aeae2

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

app/main/check_packs/pack_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
["empty_task_page_check"],
5151
["water_in_the_text_check"],
5252
["report_task_tracker"],
53+
["report_3_level_in_content_check"],
5354
]
5455

5556
DEFAULT_TYPE = 'pres'

app/main/checks/report_checks/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,4 @@
3434
from .task_tracker import ReportTaskTracker
3535
from .paragraphs_count_check import ReportParagraphsCountCheck
3636
from .template_name import ReportTemplateNameCheck
37+
from .check_chapters_3_level import ReportСhaptersLevel3ContentCheck
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from ..base_check import BaseReportCriterion, answer
2+
3+
class ReportСhaptersLevel3ContentCheck(BaseReportCriterion):
4+
label = "Проверка содержания на наличия объктов 3 уровня"
5+
description = "В содержании не должно быть объектов третьего уровня"
6+
id = 'report_3_level_in_content_check'
7+
8+
def __init__(self, file_info):
9+
super().__init__(file_info)
10+
11+
12+
def check(self):
13+
try:
14+
headers = self.file.make_chapters(self.file_type['report_type'])
15+
16+
if not headers:
17+
return answer(False, "Не найдено ни одного заголовка.")
18+
19+
level_3_count = 0
20+
bool_content_find = False
21+
for header in headers:
22+
if header["text"].upper() == "СОДЕРЖАНИЕ":
23+
bool_content_find = True
24+
level_3_count = self._count_level_3_headers(header["child"])
25+
break
26+
27+
if not bool_content_find:
28+
return answer(False, "Не найдено заголовка 'Содержание'")
29+
30+
if level_3_count > 0:
31+
result_str = f"Найдено {level_3_count} заголовков 3 уровня и выше. "
32+
result_str += "Содержание должно содержать только заголовки 1 и 2 уровня.<br>"
33+
return answer(False, result_str)
34+
35+
return answer(True, "Все заголовки соответствуют требованиям (1-2 уровень)")
36+
37+
except Exception as e:
38+
return answer(False, f"Ошибка при проверке: {str(e)}")
39+
40+
def _count_level_3_headers(self, content):
41+
count = 0
42+
43+
for header in content:
44+
if self._is_level_3_or_higher(header):
45+
count += 1
46+
count += self._count_level_3_headers(header["child"])
47+
48+
return count
49+
50+
def _is_level_3_or_higher(self, header):
51+
return header["level"] >= 3

0 commit comments

Comments
 (0)