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:
parent
76b178b93a
commit
2a97ca39bc
|
|
@ -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'
|
||||
|
|
@ -59,8 +70,21 @@ def add_field_to_docfield_json():
|
|||
# Записываем обновленный JSON обратно в файл
|
||||
with open(docfield_json_path, 'w', encoding='utf-8') as file:
|
||||
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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue