From 139b7376cf92262cbaa7d9204d6410f73623dae0 Mon Sep 17 00:00:00 2001 From: Marina Date: Thu, 27 Jun 2024 15:45:39 +0300 Subject: [PATCH] second part of improvement --- .../report_checks/empty_task_page_check.py | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/main/checks/report_checks/empty_task_page_check.py b/app/main/checks/report_checks/empty_task_page_check.py index deb15947..b2b9ed2a 100644 --- a/app/main/checks/report_checks/empty_task_page_check.py +++ b/app/main/checks/report_checks/empty_task_page_check.py @@ -1,3 +1,4 @@ +import re from ..base_check import BaseReportCriterion, answer PAGE_NAME = "ЗАДАНИЕ НА ВЫПУСКНУЮ КВАЛИФИКАЦИОННУЮ РАБОТУ" @@ -15,22 +16,30 @@ def check(self): if self.file.page_counter() < 4: return answer(False, "В отчете недостаточно страниц. Нечего проверять.") rows_text = self.file.pdf_file.page_rows_text(1) - print(rows_text) if 'ЗАДАНИЕ' not in rows_text[0][4]: return answer(False, f'Страница "{PAGE_NAME}" не найдена. Убедитесь, что она является второй в документе и не содержит ошибок в заголовке.') elif len(rows_text) < 4: return answer(False, f'Страница "{PAGE_NAME}" не содержит текста.') else: - result = {"студент", 'темаработы', 'руководитель'} - check_words = {"студент", 'темаработы', 'руководитель'} + result = {'Cтудент, Группа', 'Дата выдачи задания, Дата представления ВКР к защите', 'студент', 'руководитель', 'консультант', 'тема работы'} + check_first_pattern = r'^студент+[а-яА-ЯёЁa-zA-Z]+группа\d+$' + check_date = r'^«\d+»[а-яА-ЯёЁa-zA-Z]+20\d+г«\d+»[а-яА-ЯёЁa-zA-Z]+20\d+г$' + start_string = 0 + for row in rows_text: + row_string = row[4].replace('\n', '').replace('.', '').replace(' ', '').replace('_', '').lower() + if re.match(check_first_pattern, row_string): + result.discard('Cтудент, Группа') + start_string = row[5] + if re.match(check_date, row_string): + result.discard('Дата выдачи задания, Дата представления ВКР к защите') + check_words = {'студент', 'руководитель', 'консультант', 'тема работы'} for k in check_words: - for row in rows_text: + for row in rows_text[start_string+1:]: row_string = row[4].replace('\n', '').replace(' ', '').replace('_', '').lower() - if k in row_string: - clear_row_string = row_string.replace(k, '') - if len(clear_row_string) > 2: + if k.replace(' ', '') in row_string: + if len(row_string) > (len(k)+2): result.discard(k) if not result: return answer(True, 'Пройдена!') else: - return answer(False, f'Некоторые необходимые поля пусты или отсутствуют. Проверьте: {result}') + return answer(False, f'Некоторые необходимые поля пусты или отсутствуют. Проверьте поля: {", ".join(result)}')