소스 검색

check property setter and custom field only called after install

version-14
Nabin Hait 10 년 전
부모
커밋
dea587bcad
2개의 변경된 파일7개의 추가작업 그리고 10개의 파일을 삭제
  1. +1
    -1
      frappe/core/doctype/custom_field/custom_field.py
  2. +6
    -9
      frappe/model/db_schema.py

+ 1
- 1
frappe/core/doctype/custom_field/custom_field.py 파일 보기

@@ -32,7 +32,7 @@ class CustomField(Document):
def on_update(self):
frappe.clear_cache(doctype=self.dt)

if not self.ignore_validate:
if not getattr(self, "ignore_validate", None):
# validate field
from frappe.core.doctype.doctype.doctype import validate_fields_for_doctype
validate_fields_for_doctype(self.dt)


+ 6
- 9
frappe/model/db_schema.py 파일 보기

@@ -94,21 +94,18 @@ class DbTable:
get columns from docfields and custom fields
"""
fl = frappe.db.sql("SELECT * FROM tabDocField WHERE parent = %s", self.doctype, as_dict = 1)
precisions = {}

try:
if not frappe.flags.in_install_app:
custom_fl = frappe.db.sql("""\
SELECT * FROM `tabCustom Field`
WHERE dt = %s AND docstatus < 2""", (self.doctype,), as_dict=1)
if custom_fl: fl += custom_fl
except Exception, e:
if e.args[0]!=1146: # ignore no custom field
raise

# get precision from property setters
precisions = {}
for ps in frappe.get_all("Property Setter", fields=["field_name", "value"],
filters={"doc_type": self.doctype, "doctype_or_field": "DocField", "property": "precision"}):
precisions[ps.field_name] = ps.value
# get precision from property setters
for ps in frappe.get_all("Property Setter", fields=["field_name", "value"],
filters={"doc_type": self.doctype, "doctype_or_field": "DocField", "property": "precision"}):
precisions[ps.field_name] = ps.value

for f in fl:
self.columns[f['fieldname']] = DbColumn(self, f['fieldname'],


불러오는 중...
취소
저장