minor: улучшена читаемость кода
This commit is contained in:
+40
-50
@@ -609,8 +609,10 @@ def validate_entity_for_admin_form(form_instance, cleaned_data,
|
||||
metadata_field_name=metadata_field_name,
|
||||
)
|
||||
|
||||
if VALIDATE_KEY__MATCH_TYPE not in result:
|
||||
return # Нет совпадений, продолжаем обработку формы
|
||||
|
||||
# Обрабатываем результаты проверки в зависимости от типа найденного совпадения
|
||||
if VALIDATE_KEY__MATCH_TYPE in result:
|
||||
match_type = result[VALIDATE_KEY__MATCH_TYPE]
|
||||
duplicates_queryset = result[VALIDATE_KEY__VALUE]
|
||||
|
||||
@@ -674,23 +676,19 @@ def validate_entity_for_admin_form(form_instance, cleaned_data,
|
||||
# Вотчер видит этот класс и добавляет onclick обработчик к кнопкам
|
||||
# для добавления GET параметра ignore_validate=1 перед отправкой формы.
|
||||
# Весь JS код находится в form-field-watcher.js для чистоты и переиспользования.
|
||||
confirmation_button = '''
|
||||
<div class="confirmation-button-container">
|
||||
<button type="button" onclick="markSubmitButtonsToIgnoreValidation();">
|
||||
<big>Я проверил и уверен!</big><br/>
|
||||
Сохранить, несмотря на синонимы.<br/>
|
||||
<i>Точные совпадения в синонимах других записей будут удалены.</i>
|
||||
</button>
|
||||
<em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>
|
||||
</div>
|
||||
'''
|
||||
|
||||
raise ValidationError(
|
||||
mark_safe(
|
||||
f"ВНИМАНИЕ: Найдено совпадение в синонимах! "
|
||||
f"Проверьте {dup_list} "
|
||||
f"или используйте синонимы из найденной записи."
|
||||
f"{confirmation_button}"
|
||||
f"<div class=\"confirmation-button-container\">"
|
||||
f" <button type=\"button\" onclick=\"markSubmitButtonsToIgnoreValidation();\">"
|
||||
f" <big>Я проверил и уверен!</big><br/>"
|
||||
f" Сохранить, несмотря на синонимы.<br/>"
|
||||
f" <i>Точные совпадения в синонимах других записей будут удалены.</i>"
|
||||
f" </button>"
|
||||
f" <em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>"
|
||||
f"</div>"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -758,23 +756,19 @@ def validate_entity_for_admin_form(form_instance, cleaned_data,
|
||||
synonym_details_text = "<br/>".join(synonym_details) if synonym_details else "Синонимы не найдены"
|
||||
|
||||
# Кнопка подтверждения создания несмотря на совпадение синонимов
|
||||
confirmation_button = '''
|
||||
<div class="confirmation-button-container">
|
||||
<button type="button" onclick="markSubmitButtonsToIgnoreValidation();">
|
||||
<big>Я проверил и уверен!</big><br/>
|
||||
Сохранить, несмотря на совпадение синонимов.<br/>
|
||||
<i>Совпадающие синонимы в других записях будут удалены.</i>
|
||||
</button>
|
||||
<em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>
|
||||
</div>
|
||||
'''
|
||||
|
||||
raise ValidationError(
|
||||
mark_safe(
|
||||
f"ВНИМАНИЕ: Найдено совпадение синонимов!<br/>"
|
||||
f"Синонимы совпадают:<br/>{synonym_details_text}<br/>"
|
||||
f"Проверьте и уточните синонимы если нужно."
|
||||
f"{confirmation_button}"
|
||||
f"<div class=\"confirmation-button-container\">"
|
||||
f" <button type=\"button\" onclick=\"markSubmitButtonsToIgnoreValidation();\">"
|
||||
f" <big>Я проверил и уверен!</big><br/>"
|
||||
f" Сохранить, несмотря на совпадение синонимов.<br/>"
|
||||
f" <i>Совпадающие синонимы в других записях будут удалены.</i>"
|
||||
f" </button>"
|
||||
f" <em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>"
|
||||
f"</div>"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -798,23 +792,20 @@ def validate_entity_for_admin_form(form_instance, cleaned_data,
|
||||
dup_list = ", ".join(dup_links)
|
||||
|
||||
# Кнопка для игнорирования предупреждения (без критичности)
|
||||
confirmation_button = '''
|
||||
<div class="confirmation-button-container">
|
||||
<button type="button" onclick="markSubmitButtonsToIgnoreValidation();">
|
||||
<big>OK, Я ПРОВЕРИЛ. ПРОБЛЕМ НЕ БУДЕТ</big><br/>
|
||||
Сохранить запись<br/>
|
||||
<i>Я уверен в своих действиях.</i>
|
||||
</button>
|
||||
<em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>
|
||||
</div>
|
||||
'''
|
||||
|
||||
raise ValidationError(
|
||||
mark_safe(
|
||||
f"ИНФОРМАЦИЯ: Найдены похожие записи со схожими словами! "
|
||||
f"Проверьте: {dup_list} "
|
||||
f"Это просто информация, не ошибка. Но неточности на сайте могут рассмешить"
|
||||
f" (или огорчить) пользователей. {confirmation_button}"
|
||||
f" (или огорчить) пользователей."
|
||||
f"<div class=\"confirmation-button-container\">"
|
||||
f" <button type=\"button\" onclick=\"markSubmitButtonsToIgnoreValidation();\">"
|
||||
f" <big>OK, Я ПРОВЕРИЛ. ПРОБЛЕМ НЕ БУДЕТ</big><br/>"
|
||||
f" Сохранить запись<br/>"
|
||||
f" <i>Я уверен в своих действиях.</i>"
|
||||
f" </button>"
|
||||
f" <em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>"
|
||||
f"</div>"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -839,23 +830,20 @@ def validate_entity_for_admin_form(form_instance, cleaned_data,
|
||||
dup_list = ", ".join(dup_links)
|
||||
|
||||
# Кнопка для подтверждения с указанием на риск
|
||||
confirmation_button = '''
|
||||
<div class="confirmation-button-container">
|
||||
<button type="button" onclick="markSubmitButtonsToIgnoreValidation();">
|
||||
<big>ВНИМАНИЕ: ВЫСОКИЙ РИСК!</big><br/>
|
||||
Я уверен в своих действиях<br/>
|
||||
<i>Найдены очень короткие слова (< 4 символов), высокий риск ошибки!</i>
|
||||
</button>
|
||||
<em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>
|
||||
</div>
|
||||
'''
|
||||
|
||||
raise ValidationError(
|
||||
mark_safe(
|
||||
f"ВНИМАНИЕ: ВЫСОКИЙ РИСК ОШИБКИ! Найдены похожие записи с ОЧЕНЬ КОРОТКИМИ словами! "
|
||||
f"Проверьте ОЧЕНЬ ВНИМАТЕЛЬНО: {dup_list} "
|
||||
f"Совпадения могут быть с однобуквенными или двухбуквенными словами (например: 'B'Z' → 'B Z'). "
|
||||
f"Велик риск ложных срабатываний! {confirmation_button}"
|
||||
f"Совпадения могут быть двухбуквенными и даже однобуквенными словами (например:"
|
||||
f" \"B'Z\" → \"B Z\" или \"R&B\" → \"R B\" ). ОЧЕНЬ ВЕЛИК РИСК ложных срабатываний!"
|
||||
f"<div class=\"confirmation-button-container\">"
|
||||
f" <button type=\"button\" onclick=\"markSubmitButtonsToIgnoreValidation();\">"
|
||||
f" <big>ВНИМАНИЕ: ВЫСОКИЙ РИСК!</big><br/>"
|
||||
f" Я всё проверил и уверен в своих действиях.<br/>"
|
||||
f" <i>Очень короткие слова (символов менее {MIN_SYNONYM_WORD_LENGTH}), подтверждаю!</i>"
|
||||
f" </button>"
|
||||
f" <em>Теперь нажмите стандартные кнопки сохранения снизу, чтобы сохранить.</em>"
|
||||
f"</div>"
|
||||
)
|
||||
)
|
||||
|
||||
@@ -864,6 +852,8 @@ def validate_entity_for_admin_form(form_instance, cleaned_data,
|
||||
# В будущем сюда можно добавить логирование неожиданных типов
|
||||
pass
|
||||
|
||||
return
|
||||
|
||||
|
||||
def validate_and_raise_for_duplicates(
|
||||
instance,
|
||||
|
||||
Reference in New Issue
Block a user