diff --git a/frappe/core/doctype/doctype/doctype.json b/frappe/core/doctype/doctype/doctype.json index eb866d79bf..569414e98b 100644 --- a/frappe/core/doctype/doctype/doctype.json +++ b/frappe/core/doctype/doctype/doctype.json @@ -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", diff --git a/frappe/custom/doctype/doctype_layout/doctype_layout.json b/frappe/custom/doctype/doctype_layout/doctype_layout.json index ef1c88fe65..e47c9e03e0 100644 --- a/frappe/custom/doctype/doctype_layout/doctype_layout.json +++ b/frappe/custom/doctype/doctype_layout/doctype_layout.json @@ -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 diff --git a/frappe/custom/doctype/doctype_layout/doctype_layout.py b/frappe/custom/doctype/doctype_layout/doctype_layout.py index c1f587f91d..b580ac8f56 100644 --- a/frappe/custom/doctype/doctype_layout/doctype_layout.py +++ b/frappe/custom/doctype/doctype_layout/doctype_layout.py @@ -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') diff --git a/frappe/desk/utils.py b/frappe/desk/utils.py index 7838c61110..a3de00cd54 100644 --- a/frappe/desk/utils.py +++ b/frappe/desk/utils.py @@ -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(' ', '-') \ No newline at end of file diff --git a/frappe/public/js/frappe/form/form.js b/frappe/public/js/frappe/form/form.js index a66d909428..8f44b38343 100644 --- a/frappe/public/js/frappe/form/form.js +++ b/frappe/public/js/frappe/form/form.js @@ -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) diff --git a/frappe/public/js/frappe/views/formview.js b/frappe/public/js/frappe/views/formview.js index b3e53f67ca..d82ab9b744 100644 --- a/frappe/public/js/frappe/views/formview.js +++ b/frappe/public/js/frappe/views/formview.js @@ -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() { diff --git a/frappe/www/login.py b/frappe/www/login.py index 0d43c1b2a4..54d3ccfb1e 100644 --- a/frappe/www/login.py +++ b/frappe/www/login.py @@ -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