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 os
|
||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
|
import frappe
|
||||||
from frappe.utils import get_bench_path
|
from frappe.utils import get_bench_path
|
||||||
|
|
||||||
def add_field_to_docfield_json():
|
def add_field_to_docfield_json():
|
||||||
|
|
@ -41,6 +42,16 @@ def add_field_to_docfield_json():
|
||||||
for field in docfield_def.get('fields', []):
|
for field in docfield_def.get('fields', []):
|
||||||
if field.get('fieldname') == 'js_parent_subtab':
|
if field.get('fieldname') == 'js_parent_subtab':
|
||||||
print("⚠️ Поле 'js_parent_subtab' уже существует в определении DocField.")
|
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
|
return True
|
||||||
|
|
||||||
# Добавляем новое поле в список полей после поля 'reqd'
|
# Добавляем новое поле в список полей после поля 'reqd'
|
||||||
|
|
@ -61,6 +72,19 @@ def add_field_to_docfield_json():
|
||||||
json.dump(docfield_def, file, indent=1, ensure_ascii=False)
|
json.dump(docfield_def, file, indent=1, ensure_ascii=False)
|
||||||
|
|
||||||
print("✅ Поле 'js_parent_subtab' успешно добавлено в docfield.json")
|
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
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue