fix: track all impersonated changes
This commit is contained in:
parent
0fd4d6b67f
commit
be47ee0e31
4 changed files with 20 additions and 0 deletions
|
|
@ -30,10 +30,18 @@ class Version(Document):
|
|||
else:
|
||||
return self.set_diff(old, new)
|
||||
|
||||
@staticmethod
|
||||
def set_impersonator(data):
|
||||
if not frappe.session:
|
||||
return
|
||||
if impersonator := frappe.session.data.get("impersonated_by"):
|
||||
data["impersonated_by"] = impersonator
|
||||
|
||||
def set_diff(self, old: Document, new: Document) -> bool:
|
||||
"""Set the data property with the diff of the docs if present"""
|
||||
diff = get_diff(old, new)
|
||||
if diff:
|
||||
self.set_impersonator(diff)
|
||||
self.ref_doctype = new.doctype
|
||||
self.docname = new.name
|
||||
self.data = frappe.as_json(diff, indent=None, separators=(",", ":"))
|
||||
|
|
@ -51,6 +59,7 @@ class Version(Document):
|
|||
"updater_reference": updater_reference,
|
||||
"created_by": doc.owner,
|
||||
}
|
||||
self.set_impersonator(data)
|
||||
self.ref_doctype = doc.doctype
|
||||
self.docname = doc.name
|
||||
self.data = frappe.as_json(data, indent=None, separators=(",", ":"))
|
||||
|
|
|
|||
|
|
@ -227,7 +227,12 @@ function get_version_timeline_content(version_doc, frm) {
|
|||
}
|
||||
}
|
||||
});
|
||||
const impersonated_by = data.impersonated_by;
|
||||
|
||||
if (impersonated_by) {
|
||||
const impersonated_msg = __("Impersonated by {0}", [get_user_link(impersonated_by)]);
|
||||
out = out.map((message) => `${message} · ${impersonated_msg.bold()}`);
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@
|
|||
{%= __("Read Only Mode") %}
|
||||
</span>
|
||||
{% } %}
|
||||
{% if (frappe.boot.user.impersonated_by) { %}
|
||||
<span class="indicator-pill red no-indicator-dot" title="{%= __("You are impersonating as another user.") %}">
|
||||
{%= __("Impersonating {0}", [frappe.boot.user.name]) %}
|
||||
</span>
|
||||
{% } %}
|
||||
<div class="input-group search-bar text-muted hidden">
|
||||
<input
|
||||
id="navbar-search"
|
||||
|
|
|
|||
|
|
@ -166,6 +166,7 @@ def get():
|
|||
bootinfo["setup_complete"] = cint(frappe.get_system_settings("setup_complete"))
|
||||
|
||||
bootinfo["desk_theme"] = frappe.db.get_value("User", frappe.session.user, "desk_theme") or "Light"
|
||||
bootinfo["user"]["impersonated_by"] = frappe.session.data.get("impersonated_by")
|
||||
|
||||
return bootinfo
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue