feat: Session Defaults
This commit is contained in:
parent
9531f89294
commit
4b2ab9e00d
13 changed files with 194 additions and 2 deletions
0
frappe/core/doctype/session_default/__init__.py
Normal file
0
frappe/core/doctype/session_default/__init__.py
Normal file
29
frappe/core/doctype/session_default/session_default.json
Normal file
29
frappe/core/doctype/session_default/session_default.json
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"creation": "2019-07-17 16:21:33.546379",
|
||||
"doctype": "DocType",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"ref_doctype"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "ref_doctype",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
"label": "Document Type",
|
||||
"options": "DocType"
|
||||
}
|
||||
],
|
||||
"istable": 1,
|
||||
"modified": "2019-07-21 13:22:25.752553",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Session Default",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"quick_entry": 1,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 1
|
||||
}
|
||||
10
frappe/core/doctype/session_default/session_default.py
Normal file
10
frappe/core/doctype/session_default/session_default.py
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2019, Frappe Technologies and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
# import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class SessionDefault(Document):
|
||||
pass
|
||||
0
frappe/core/doctype/session_default_settings/__init__.py
Normal file
0
frappe/core/doctype/session_default_settings/__init__.py
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
// Copyright (c) 2019, Frappe Technologies and contributors
|
||||
// For license information, please see license.txt
|
||||
|
||||
frappe.ui.form.on('Session Default Settings', {
|
||||
// refresh: function(frm) {
|
||||
|
||||
// }
|
||||
});
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"creation": "2019-07-17 16:22:31.300991",
|
||||
"doctype": "DocType",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"session_defaults"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "session_defaults",
|
||||
"fieldtype": "Table",
|
||||
"label": "Session Defaults",
|
||||
"options": "Session Default"
|
||||
}
|
||||
],
|
||||
"issingle": 1,
|
||||
"modified": "2019-07-19 16:04:33.971089",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Core",
|
||||
"name": "Session Default Settings",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"role": "System Manager",
|
||||
"share": 1,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"quick_entry": 1,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"track_changes": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2019, Frappe Technologies and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
import json
|
||||
from frappe.model.document import Document
|
||||
|
||||
class SessionDefaultSettings(Document):
|
||||
pass
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_session_default_values():
|
||||
settings = frappe.get_single('Session Default Settings')
|
||||
fields = []
|
||||
for default_values in settings.session_defaults:
|
||||
reference_doctype = frappe.scrub(default_values.ref_doctype)
|
||||
fields.append({
|
||||
'fieldname': reference_doctype,
|
||||
'fieldtype': 'Link',
|
||||
'options': default_values.ref_doctype,
|
||||
'label': 'Default ' + default_values.ref_doctype,
|
||||
'default': frappe.defaults.get_user_default(reference_doctype)
|
||||
})
|
||||
return json.dumps(fields)
|
||||
|
||||
@frappe.whitelist()
|
||||
def set_session_default_values(default_values):
|
||||
default_values = json.loads(default_values)
|
||||
for entry in default_values:
|
||||
try:
|
||||
frappe.defaults.set_user_default(entry, default_values.get(entry))
|
||||
except:
|
||||
return
|
||||
return "success"
|
||||
|
||||
#called on hook 'on_logout' to clear defaults for the session
|
||||
def clear_session_defaults():
|
||||
settings = frappe.get_single('Session Default Settings').session_defaults
|
||||
for entry in settings:
|
||||
document_type = frappe.db.get_value('Session Default', entry.name, 'ref_doctype')
|
||||
frappe.defaults.clear_user_default(frappe.scrub(document_type
|
||||
))
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2019, Frappe Technologies and Contributors
|
||||
# See license.txt
|
||||
from __future__ import unicode_literals
|
||||
|
||||
# import frappe
|
||||
import unittest
|
||||
|
||||
class TestSessionDefaultSettings(unittest.TestCase):
|
||||
pass
|
||||
|
|
@ -252,4 +252,4 @@ def get_view_logs(doctype, docname):
|
|||
|
||||
if view_logs:
|
||||
logs = view_logs
|
||||
return logs
|
||||
return logs
|
||||
|
|
|
|||
|
|
@ -80,6 +80,8 @@ on_session_creation = [
|
|||
"frappe.utils.scheduler.reset_enabled_scheduler_events",
|
||||
]
|
||||
|
||||
on_logout = "frappe.core.doctype.session_default_settings.session_default_settings.clear_session_defaults"
|
||||
|
||||
# permissions
|
||||
|
||||
permission_query_conditions = {
|
||||
|
|
|
|||
|
|
@ -175,10 +175,11 @@ class BaseDocument(object):
|
|||
if not self.doctype:
|
||||
return value
|
||||
if not isinstance(value, BaseDocument):
|
||||
if "doctype" not in value:
|
||||
if "doctype" not in value or value['doctype'] is None:
|
||||
value["doctype"] = self.get_table_field_doctype(key)
|
||||
if not value["doctype"]:
|
||||
raise AttributeError(key)
|
||||
|
||||
value = get_controller(value["doctype"])(value)
|
||||
value.init_valid_columns()
|
||||
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@
|
|||
{%= __("My Profile") %}</a></li>
|
||||
<li><a href="#Form/User/{%= encodeURIComponent(frappe.session.user) %}">
|
||||
{%= __("My Settings") %}</a></li>
|
||||
<li><a href="#" onclick="return frappe.ui.toolbar.setup_session_defaults();">
|
||||
{%= __("Session Defaults") %}</a></li>
|
||||
<li class="navbar-reload">
|
||||
<a href="#" onclick="return frappe.ui.toolbar.clear_cache();">
|
||||
{%= __("Reload") %}</a></li>
|
||||
|
|
|
|||
|
|
@ -235,3 +235,50 @@ frappe.ui.toolbar.show_about = function() {
|
|||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
frappe.ui.toolbar.setup_session_defaults = function() {
|
||||
let fields = [];
|
||||
frappe.call({
|
||||
method: 'frappe.core.doctype.session_default_settings.session_default_settings.get_session_default_values',
|
||||
callback: function (data) {
|
||||
fields = JSON.parse(data.message);
|
||||
let perms = frappe.perm.get_perm('Session Default Settings');
|
||||
//add settings button only if user is a System Manager or has permission on 'Session Default Settings'
|
||||
if ((in_list(frappe.user_roles, 'System Manager')) || (perms[0].read == 1)) {
|
||||
fields[fields.length] = {
|
||||
'fieldname': 'settings',
|
||||
'fieldtype': 'Button',
|
||||
'label': __('Settings'),
|
||||
'click': () => {
|
||||
frappe.set_route('Form', 'Session Default Settings', 'Session Default Settings');
|
||||
}
|
||||
}
|
||||
}
|
||||
frappe.prompt(fields, function(values) {
|
||||
frappe.call({
|
||||
method: 'frappe.core.doctype.session_default_settings.session_default_settings.set_session_default_values',
|
||||
args: {
|
||||
default_values: JSON.stringify(values)
|
||||
},
|
||||
callback: function(data) {
|
||||
if (data.message == "success") {
|
||||
frappe.show_alert({
|
||||
'message': __('Session Defaults Saved'),
|
||||
'indicator': 'green'
|
||||
});
|
||||
}
|
||||
else {
|
||||
frappe.show_alert({
|
||||
'message': __('An error occurred while setting Session Defaults'),
|
||||
'indicator': 'red'
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
__('Session Defaults'),
|
||||
__('Save'),
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue