fix: add DocType reload and cache clear to patch

- Added frappe.reload_doc() after modifying docfield.json
- Added frappe.clear_cache() to ensure changes are applied
- Now patch automatically syncs JSON changes to database
- Fixed issue where js_parent_subtab field existed in JSON but not in DB

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Ali 2026-01-12 17:33:26 +04:00
parent 76b178b93a
commit 2a97ca39bc
1 changed files with 25 additions and 1 deletions

View File

@ -2,6 +2,7 @@ import json
import os
import sys
import shutil
import frappe
from frappe.utils import get_bench_path
def add_field_to_docfield_json():
@ -41,6 +42,16 @@ def add_field_to_docfield_json():
for field in docfield_def.get('fields', []):
if field.get('fieldname') == 'js_parent_subtab':
print("⚠️ Поле 'js_parent_subtab' уже существует в определении DocField.")
# Перезагружаем DocType на случай, если поле есть в JSON, но не в БД
try:
if frappe.db:
frappe.reload_doc('core', 'doctype', 'docfield')
frappe.clear_cache()
print("✅ DocType 'DocField' перезагружен в базе данных и кэш очищен")
except Exception as reload_error:
print(f"⚠️ Не удалось перезагрузить DocType: {str(reload_error)}")
return True
# Добавляем новое поле в список полей после поля 'reqd'
@ -61,6 +72,19 @@ def add_field_to_docfield_json():
json.dump(docfield_def, file, indent=1, ensure_ascii=False)
print("✅ Поле 'js_parent_subtab' успешно добавлено в docfield.json")
# Перезагружаем DocType в базе данных
try:
if frappe.db:
frappe.reload_doc('core', 'doctype', 'docfield')
frappe.clear_cache()
print("✅ DocType 'DocField' перезагружен в базе данных и кэш очищен")
else:
print("⚠️ База данных недоступна. Выполните 'bench migrate' и 'bench clear-cache' вручную")
except Exception as reload_error:
print(f"⚠️ Не удалось перезагрузить DocType: {str(reload_error)}")
print("⚠️ Выполните 'bench migrate' и 'bench clear-cache' вручную")
return True
except Exception as e: