fix(minor): doctype layout loading for form
This commit is contained in:
parent
b460de8202
commit
4141bad224
7 changed files with 40 additions and 47 deletions
|
|
@ -16,7 +16,6 @@
|
|||
"is_tree",
|
||||
"editable_grid",
|
||||
"quick_entry",
|
||||
"route",
|
||||
"cb01",
|
||||
"track_changes",
|
||||
"track_seen",
|
||||
|
|
@ -72,6 +71,7 @@
|
|||
"has_web_view",
|
||||
"allow_guest_to_view",
|
||||
"index_web_pages_for_search",
|
||||
"route",
|
||||
"is_published_field",
|
||||
"advanced",
|
||||
"engine"
|
||||
|
|
@ -609,7 +609,7 @@
|
|||
"link_fieldname": "reference_doctype"
|
||||
}
|
||||
],
|
||||
"modified": "2020-12-07 11:48:57.395126",
|
||||
"modified": "2020-12-10 15:10:09.227205",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "DocType",
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2020-12-04 12:29:12.838656",
|
||||
"modified": "2020-12-10 15:01:04.352184",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Custom",
|
||||
"name": "DocType Layout",
|
||||
|
|
@ -59,8 +59,13 @@
|
|||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"read": 1,
|
||||
"role": "Guest"
|
||||
}
|
||||
],
|
||||
"route": "doctype-layout",
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 1
|
||||
|
|
|
|||
|
|
@ -13,4 +13,3 @@ class DocTypeLayout(Document):
|
|||
def validate(self):
|
||||
if not self.route:
|
||||
self.route = get_doctype_route(self.name)
|
||||
frappe.cache().delete_value('doctype_name_map')
|
||||
|
|
|
|||
|
|
@ -3,29 +3,5 @@
|
|||
|
||||
import frappe
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def get_doctype_name(name):
|
||||
# translates the doctype name from url to name `sales-order` to `Sales Order`
|
||||
# also supports document type layouts
|
||||
# if with_layout is set: return the layout object too
|
||||
|
||||
def get_name_map():
|
||||
name_map = {}
|
||||
for d in frappe.get_all('DocType'):
|
||||
name_map[get_doctype_route(d.name)] = frappe._dict(doctype = d.name)
|
||||
|
||||
for d in frappe.get_all('DocType Layout', fields = ['name', 'document_type']):
|
||||
name_map[get_doctype_route(d.name)] = frappe._dict(doctype = d.document_type, doctype_layout = d.name)
|
||||
|
||||
return name_map
|
||||
|
||||
data = frappe._dict(name_map = frappe.cache().get_value('doctype_name_map', get_name_map).get(name, dict(doctype = name)))
|
||||
|
||||
if data.name_map.get('doctype_layout'):
|
||||
# return the layout object
|
||||
frappe.response.docs.append(frappe.get_doc('DocType Layout', data.name_map.get('doctype_layout')).as_dict())
|
||||
|
||||
return data
|
||||
|
||||
def get_doctype_route(name):
|
||||
return name.lower().replace(' ', '-')
|
||||
|
|
@ -24,13 +24,10 @@ frappe.ui.form.Form = class FrappeForm {
|
|||
this.docname = '';
|
||||
this.doctype = doctype;
|
||||
this.doctype_layout_name = doctype_layout_name;
|
||||
if (doctype_layout_name) {
|
||||
this.doctype_layout = frappe.get_doc('DocType Layout', doctype_layout_name);
|
||||
}
|
||||
this.in_form = in_form ? true : false;
|
||||
|
||||
this.hidden = false;
|
||||
this.refresh_if_stale_for = 120;
|
||||
|
||||
var me = this;
|
||||
this.opendocs = {};
|
||||
this.custom_buttons = {};
|
||||
this.sections = [];
|
||||
|
|
@ -40,17 +37,8 @@ frappe.ui.form.Form = class FrappeForm {
|
|||
this.pformat = {};
|
||||
this.fetch_dict = {};
|
||||
this.parent = parent;
|
||||
|
||||
this.doctype_layout = frappe.get_doc('DocType Layout', doctype_layout_name);
|
||||
this.setup_meta(doctype);
|
||||
|
||||
// show in form instead of in dialog, when called using url (router.js)
|
||||
this.in_form = in_form ? true : false;
|
||||
|
||||
// notify on rename
|
||||
$(document).on('rename', function(event, dt, old_name, new_name) {
|
||||
if(dt==me.doctype)
|
||||
me.rename_notify(dt, old_name, new_name);
|
||||
});
|
||||
}
|
||||
|
||||
setup_meta() {
|
||||
|
|
@ -118,6 +106,7 @@ frappe.ui.form.Form = class FrappeForm {
|
|||
this.setup_file_drop();
|
||||
this.setup_doctype_actions();
|
||||
this.setup_docinfo_change_listener();
|
||||
this.setup_notify_on_rename();
|
||||
|
||||
this.setup_done = true;
|
||||
}
|
||||
|
|
@ -224,6 +213,13 @@ frappe.ui.form.Form = class FrappeForm {
|
|||
});
|
||||
}
|
||||
|
||||
setup_notify_on_rename() {
|
||||
$(document).on('rename', (ev, dt, old_name, new_name) => {
|
||||
if(dt==this.doctype)
|
||||
this.rename_notify(dt, old_name, new_name);
|
||||
});
|
||||
}
|
||||
|
||||
setup_file_drop() {
|
||||
var me = this;
|
||||
this.$wrapper.on('dragenter dragover', false)
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@ frappe.views.FormFactory = class FormFactory extends frappe.views.Factory {
|
|||
frappe.model.with_doctype(doctype, () => {
|
||||
this.page = frappe.container.add_page("form/" + doctype_layout);
|
||||
frappe.views.formview[doctype_layout] = this.page;
|
||||
this.page.frm = new frappe.ui.form.Form(doctype, this.page, true, frappe.router.doctype_layout);
|
||||
this.show_doc(route);
|
||||
this.make_and_show(doctype, route);
|
||||
});
|
||||
} else {
|
||||
this.show_doc(route);
|
||||
|
|
@ -22,6 +21,22 @@ frappe.views.FormFactory = class FormFactory extends frappe.views.Factory {
|
|||
this.setup_events();
|
||||
}
|
||||
|
||||
make_and_show(doctype, route) {
|
||||
if (frappe.router.doctype_layout) {
|
||||
frappe.model.with_doc('DocType Layout', frappe.router.doctype_layout, () => {
|
||||
this.make_form(doctype);
|
||||
this.show_doc(route);
|
||||
})
|
||||
} else {
|
||||
this.make_form(doctype);
|
||||
this.show_doc(route);
|
||||
}
|
||||
}
|
||||
|
||||
make_form(doctype) {
|
||||
this.page.frm = new frappe.ui.form.Form(doctype, this.page, true, frappe.router.doctype_layout);
|
||||
}
|
||||
|
||||
setup_events() {
|
||||
if (!this.initialized) {
|
||||
$(document).on("page-change", function() {
|
||||
|
|
|
|||
|
|
@ -25,8 +25,10 @@ def get_context(context):
|
|||
redirect_to = get_home_page()
|
||||
else:
|
||||
redirect_to = "/app"
|
||||
frappe.local.flags.redirect_location = redirect_to
|
||||
raise frappe.Redirect
|
||||
|
||||
if redirect_to != 'login':
|
||||
frappe.local.flags.redirect_location = redirect_to
|
||||
raise frappe.Redirect
|
||||
|
||||
# get settings from site config
|
||||
context.no_header = True
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue