feat: virtual doctype
Virtual Doctype's data souurce can be anything a file or a secondary database table or an api
This commit is contained in:
parent
0e96a0a1dc
commit
feed7884e2
4 changed files with 18 additions and 9 deletions
|
|
@ -22,6 +22,7 @@
|
|||
"track_views",
|
||||
"custom",
|
||||
"beta",
|
||||
"virtual_doctype",
|
||||
"fields_section_break",
|
||||
"fields",
|
||||
"sb1",
|
||||
|
|
@ -528,6 +529,12 @@
|
|||
"fieldname": "index_web_pages_for_search",
|
||||
"fieldtype": "Check",
|
||||
"label": "Index Web Pages for Search"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "virtual_doctype",
|
||||
"fieldtype": "Check",
|
||||
"label": "Virtual DocType"
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-bolt",
|
||||
|
|
@ -609,7 +616,7 @@
|
|||
"link_fieldname": "reference_doctype"
|
||||
}
|
||||
],
|
||||
"modified": "2020-09-24 13:13:58.227153",
|
||||
"modified": "2020-12-14 12:48:33.752219",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "DocType",
|
||||
|
|
|
|||
|
|
@ -27,9 +27,6 @@ def getdoc(doctype, name, user=None):
|
|||
if not name:
|
||||
name = doctype
|
||||
|
||||
if not frappe.db.exists(doctype, name):
|
||||
return []
|
||||
|
||||
try:
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
run_onload(doc)
|
||||
|
|
@ -43,7 +40,8 @@ def getdoc(doctype, name, user=None):
|
|||
# add file list
|
||||
doc.add_viewed()
|
||||
get_docinfo(doc)
|
||||
|
||||
except frappe.DoesNotExistError:
|
||||
return []
|
||||
except Exception:
|
||||
frappe.errprint(frappe.utils.get_traceback())
|
||||
raise
|
||||
|
|
|
|||
|
|
@ -12,15 +12,19 @@ from frappe import _
|
|||
from six import string_types, StringIO
|
||||
from frappe.core.doctype.access_log.access_log import make_access_log
|
||||
from frappe.utils import cstr, format_duration
|
||||
from frappe.model.base_document import get_controller
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
@frappe.read_only()
|
||||
def get():
|
||||
args = get_form_params()
|
||||
|
||||
data = compress(execute(**args), args = args)
|
||||
|
||||
# If virtual doctype get data from controller het_list method
|
||||
if frappe.db.get_value("DocType", filters={"name": args.doctype}, fieldname="virtual_doctype"):
|
||||
controller = get_controller(args.doctype)
|
||||
data = compress(controller(args.doctype).get_list(args))
|
||||
else:
|
||||
data = compress(execute(**args), args = args)
|
||||
return data
|
||||
|
||||
def execute(doctype, *args, **kwargs):
|
||||
|
|
|
|||
|
|
@ -687,7 +687,7 @@ class Document(BaseDocument):
|
|||
`self.check_docstatus_transition`."""
|
||||
conflict = False
|
||||
self._action = "save"
|
||||
if not self.get('__islocal'):
|
||||
if not self.get('__islocal') and not self.meta.virtual_doctype:
|
||||
if self.meta.issingle:
|
||||
modified = frappe.db.sql("""select value from tabSingles
|
||||
where doctype=%s and field='modified' for update""", self.doctype)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue