Selaa lähdekoodia

Merge pull request #1382 from anandpdoshi/user-last-active

[fix] Track when user was last active
version-14
Rushabh Mehta 9 vuotta sitten
vanhempi
commit
d055cd15f4
7 muutettua tiedostoa jossa 134 lisäystä ja 155 poistoa
  1. +1
    -5
      frappe/core/doctype/user/user.js
  2. +110
    -145
      frappe/core/doctype/user/user.json
  3. +2
    -2
      frappe/core/doctype/user/user.py
  4. +2
    -1
      frappe/patches.txt
  5. +0
    -0
      frappe/patches/v6_6/__init__.py
  6. +6
    -0
      frappe/patches/v6_6/user_last_active.py
  7. +13
    -2
      frappe/sessions.py

+ 1
- 5
frappe/core/doctype/user/user.js Näytä tiedosto

@@ -35,10 +35,6 @@ cur_frm.cscript.before_load = function(doc, dt, dn, callback) {
} }
} }


cur_frm.cscript.user_image = function(doc) {
refresh_field("user_image_show");
}

cur_frm.cscript.refresh = function(doc) { cur_frm.cscript.refresh = function(doc) {
if(doc.name===user && !doc.__unsaved && frappe.languages && (doc.language || frappe.boot.user.language) if(doc.name===user && !doc.__unsaved && frappe.languages && (doc.language || frappe.boot.user.language)
&& doc.language !== frappe.boot.user.language) { && doc.language !== frappe.boot.user.language) {
@@ -76,7 +72,7 @@ cur_frm.cscript.refresh = function(doc) {
cur_frm.cscript.enabled = function(doc) { cur_frm.cscript.enabled = function(doc) {
if(!doc.__islocal && has_common(user_roles, ["Administrator", "System Manager"])) { if(!doc.__islocal && has_common(user_roles, ["Administrator", "System Manager"])) {
cur_frm.toggle_display(['sb1', 'sb3', 'modules_access'], doc.enabled); cur_frm.toggle_display(['sb1', 'sb3', 'modules_access'], doc.enabled);
cur_frm.toggle_enable('*', doc.enabled);
// cur_frm.toggle_enable('*', doc.enabled);
cur_frm.set_df_property('enabled', 'read_only', 0); cur_frm.set_df_property('enabled', 'read_only', 0);
} }




+ 110
- 145
frappe/core/doctype/user/user.json Näytä tiedosto

@@ -58,6 +58,7 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"depends_on": "enabled",
"fieldname": "section_break_3", "fieldname": "section_break_3",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -285,35 +286,14 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"depends_on": "eval:!doc.__islocal || !cint(doc.send_welcome_email)",
"fieldname": "change_password",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
"no_copy": 0,
"permlevel": 0,
"print_hide": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"fieldname": "new_password",
"fieldtype": "Password",
"description": "Get your globally recognized avatar from Gravatar.com",
"fieldname": "user_image",
"fieldtype": "Attach Image",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Set New Password",
"label": "User Image",
"no_copy": 1, "no_copy": 1,
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
@@ -327,18 +307,17 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"depends_on": "eval:!doc.__islocal",
"fieldname": "send_password_update_notification",
"fieldtype": "Check",
"collapsible": 1,
"depends_on": "enabled",
"fieldname": "short_bio",
"fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Send Password Update Notification",
"label": "More Information",
"no_copy": 0, "no_copy": 0,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -351,36 +330,17 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "reset_password_key",
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Reset Password Key",
"no_copy": 1,
"permlevel": 0,
"print_hide": 1,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"depends_on": "eval:!doc.__islocal",
"fieldname": "display_settings",
"fieldtype": "Section Break",
"fieldname": "gender",
"fieldtype": "Select",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "",
"label": "Gender",
"no_copy": 0, "no_copy": 0,
"oldfieldname": "gender",
"oldfieldtype": "Select",
"options": "\nMale\nFemale\nOther",
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
@@ -394,15 +354,16 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"description": "Get your globally recognized avatar from Gravatar.com",
"fieldname": "user_image",
"fieldtype": "Attach",
"fieldname": "birth_date",
"fieldtype": "Date",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "User Image",
"label": "Birth Date",
"no_copy": 1, "no_copy": 1,
"oldfieldname": "birth_date",
"oldfieldtype": "Date",
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
@@ -416,13 +377,14 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "cb21",
"fieldtype": "Column Break",
"fieldname": "location",
"fieldtype": "Data",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"no_copy": 0,
"label": "Location",
"no_copy": 1,
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
@@ -436,15 +398,13 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "user_image_show",
"fieldtype": "Image",
"fieldname": "column_break_22",
"fieldtype": "Column Break",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "user_image_show",
"no_copy": 0, "no_copy": 0,
"options": "user_image",
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
@@ -458,16 +418,15 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "email_settings",
"fieldtype": "Section Break",
"fieldname": "bio",
"fieldtype": "Small Text",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Email Settings",
"no_copy": 0,
"label": "Bio",
"no_copy": 1,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -479,18 +438,17 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"default": "1",
"fieldname": "thread_notify",
"fieldtype": "Check",
"collapsible": 1,
"depends_on": "eval:doc.enabled && (!doc.__islocal || !cint(doc.send_welcome_email))",
"fieldname": "change_password",
"fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Send Notifications for Transactions I Follow",
"label": "Change Password",
"no_copy": 0, "no_copy": 0,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -503,13 +461,13 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "email_signature",
"fieldtype": "Small Text",
"fieldname": "new_password",
"fieldtype": "Password",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Email Signature",
"label": "Set New Password",
"no_copy": 1, "no_copy": 1,
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
@@ -524,35 +482,14 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "background",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "",
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"read_only": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"fieldname": "background_image",
"fieldtype": "Attach",
"depends_on": "eval:!doc.__islocal",
"fieldname": "send_password_update_notification",
"fieldtype": "Check",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Background Image",
"label": "Send Password Update Notification",
"no_copy": 0, "no_copy": 0,
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
@@ -568,19 +505,17 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "background_style",
"fieldtype": "Select",
"hidden": 0,
"fieldname": "reset_password_key",
"fieldtype": "Data",
"hidden": 1,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Background Style",
"no_copy": 0,
"options": "Fill Screen\nTile",
"label": "Reset Password Key",
"no_copy": 1,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0,
"read_only": 0,
"print_hide": 1,
"read_only": 1,
"report_hide": 0, "report_hide": 0,
"reqd": 0, "reqd": 0,
"search_index": 0, "search_index": 0,
@@ -590,16 +525,18 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"fieldname": "short_bio",
"collapsible": 1,
"depends_on": "enabled",
"fieldname": "email_settings",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "",
"label": "Email Settings",
"no_copy": 0, "no_copy": 0,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -612,18 +549,17 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "gender",
"fieldtype": "Select",
"default": "1",
"fieldname": "thread_notify",
"fieldtype": "Check",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Gender",
"label": "Send Notifications for Transactions I Follow",
"no_copy": 0, "no_copy": 0,
"oldfieldname": "gender",
"oldfieldtype": "Select",
"options": "\nMale\nFemale\nOther",
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -636,16 +572,14 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "birth_date",
"fieldtype": "Date",
"fieldname": "email_signature",
"fieldtype": "Small Text",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Birth Date",
"label": "Email Signature",
"no_copy": 1, "no_copy": 1,
"oldfieldname": "birth_date",
"oldfieldtype": "Date",
"permlevel": 0, "permlevel": 0,
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
@@ -658,16 +592,18 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"fieldname": "location",
"fieldtype": "Data",
"collapsible": 1,
"depends_on": "enabled",
"fieldname": "background",
"fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Location",
"no_copy": 1,
"label": "Desktop Background",
"no_copy": 0,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -680,14 +616,16 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "column_break_22",
"fieldtype": "Column Break",
"fieldname": "background_image",
"fieldtype": "Attach",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Background Image",
"no_copy": 0, "no_copy": 0,
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -700,15 +638,17 @@
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
"fieldname": "bio",
"fieldtype": "Small Text",
"fieldname": "background_style",
"fieldtype": "Select",
"hidden": 0, "hidden": 0,
"ignore_user_permissions": 0, "ignore_user_permissions": 0,
"in_filter": 0, "in_filter": 0,
"in_list_view": 0, "in_list_view": 0,
"label": "Bio",
"no_copy": 1,
"label": "Background Style",
"no_copy": 0,
"options": "Fill Screen\nTile",
"permlevel": 0, "permlevel": 0,
"precision": "",
"print_hide": 0, "print_hide": 0,
"read_only": 0, "read_only": 0,
"report_hide": 0, "report_hide": 0,
@@ -720,7 +660,8 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"collapsible": 1,
"depends_on": "enabled",
"description": "Check / Uncheck roles assigned to the User. Click on the Role to find out what permissions that Role has.", "description": "Check / Uncheck roles assigned to the User. Click on the Role to find out what permissions that Role has.",
"fieldname": "sb1", "fieldname": "sb1",
"fieldtype": "Section Break", "fieldtype": "Section Break",
@@ -785,7 +726,7 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"collapsible": 1,
"default": "", "default": "",
"description": "Uncheck modules to hide from user's desktop", "description": "Uncheck modules to hide from user's desktop",
"fieldname": "modules_access", "fieldname": "modules_access",
@@ -902,7 +843,8 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"collapsible": 1,
"depends_on": "enabled",
"fieldname": "sb3", "fieldname": "sb3",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -1082,6 +1024,28 @@
"set_only_once": 0, "set_only_once": 0,
"unique": 0 "unique": 0
}, },
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"fieldname": "last_active",
"fieldtype": "Datetime",
"hidden": 0,
"ignore_user_permissions": 0,
"in_filter": 0,
"in_list_view": 0,
"label": "Last Active",
"no_copy": 1,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"read_only": 1,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
@@ -1108,7 +1072,8 @@
{ {
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0,
"collapsible": 1,
"depends_on": "enabled",
"fieldname": "third_party_authentication", "fieldname": "third_party_authentication",
"fieldtype": "Section Break", "fieldtype": "Section Break",
"hidden": 0, "hidden": 0,
@@ -1263,7 +1228,7 @@
"issingle": 0, "issingle": 0,
"istable": 0, "istable": 0,
"max_attachments": 5, "max_attachments": 5,
"modified": "2015-10-19 03:04:48.829054",
"modified": "2015-10-29 07:52:54.705196",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Core", "module": "Core",
"name": "User", "name": "User",


+ 2
- 2
frappe/core/doctype/user/user.py Näytä tiedosto

@@ -437,7 +437,7 @@ def get_active_users():
return frappe.db.sql("""select count(*) from `tabUser` return frappe.db.sql("""select count(*) from `tabUser`
where enabled = 1 and user_type != 'Website User' where enabled = 1 and user_type != 'Website User'
and name not in ({}) and name not in ({})
and hour(timediff(now(), last_login)) < 72""".format(", ".join(["%s"]*len(STANDARD_USERS))), STANDARD_USERS)[0][0]
and hour(timediff(now(), last_active)) < 72""".format(", ".join(["%s"]*len(STANDARD_USERS))), STANDARD_USERS)[0][0]


def get_website_users(): def get_website_users():
"""Returns total no. of website users""" """Returns total no. of website users"""
@@ -448,7 +448,7 @@ def get_active_website_users():
"""Returns No. of website users who logged in, in the last 3 days""" """Returns No. of website users who logged in, in the last 3 days"""
return frappe.db.sql("""select count(*) from `tabUser` return frappe.db.sql("""select count(*) from `tabUser`
where enabled = 1 and user_type = 'Website User' where enabled = 1 and user_type = 'Website User'
and hour(timediff(now(), last_login)) < 72""")[0][0]
and hour(timediff(now(), last_active)) < 72""")[0][0]


def get_permission_query_conditions(user): def get_permission_query_conditions(user):
if user=="Administrator": if user=="Administrator":


+ 2
- 1
frappe/patches.txt Näytä tiedosto

@@ -99,4 +99,5 @@ execute:frappe.delete_doc("DocType", "Backup Manager")
frappe.patches.v6_4.reduce_varchar_length frappe.patches.v6_4.reduce_varchar_length
frappe.patches.v6_4.rename_bengali_language frappe.patches.v6_4.rename_bengali_language
execute:frappe.db.sql("""update `tabCommunication` set parenttype=null, parent=null, parentfield=null""") #2015-10-22 execute:frappe.db.sql("""update `tabCommunication` set parenttype=null, parent=null, parentfield=null""") #2015-10-22
execute:frappe.permissions.reset_perms("Web Page")
execute:frappe.permissions.reset_perms("Web Page")
frappe.patches.v6_6.user_last_active

+ 0
- 0
frappe/patches/v6_6/__init__.py Näytä tiedosto


+ 6
- 0
frappe/patches/v6_6/user_last_active.py Näytä tiedosto

@@ -0,0 +1,6 @@
from __future__ import unicode_literals
import frappe

def execute():
frappe.reload_doctype("User")
frappe.db.sql("update `tabUser` set last_active=last_login")

+ 13
- 2
frappe/sessions.py Näytä tiedosto

@@ -196,8 +196,12 @@ class Session:
self.insert_session_record() self.insert_session_record()


# update user # update user
frappe.db.sql("""UPDATE tabUser SET last_login = %s, last_ip = %s
where name=%s""", (frappe.utils.now(), frappe.local.request_ip, self.data['user']))
frappe.db.sql("""UPDATE tabUser SET last_login = %(now)s, last_ip = %(ip)s, last_active = %(now)s
where name=%(name)s""", {
"now": frappe.utils.now(),
"ip": frappe.local.request_ip,
"name": self.data['user']
})


frappe.db.commit() frappe.db.commit()


@@ -313,10 +317,17 @@ class Session:
# database persistence is secondary, don't update it too often # database persistence is secondary, don't update it too often
updated_in_db = False updated_in_db = False
if force or (time_diff==None) or (time_diff > 600): if force or (time_diff==None) or (time_diff > 600):
# update sessions table
frappe.db.sql("""update tabSessions set sessiondata=%s, frappe.db.sql("""update tabSessions set sessiondata=%s,
lastupdate=NOW() where sid=%s""" , (str(self.data['data']), lastupdate=NOW() where sid=%s""" , (str(self.data['data']),
self.data['sid'])) self.data['sid']))


# update last active in user table
frappe.db.sql("""update `tabUser` set last_active=%(now)s where name=%(name)s""", {
"now": frappe.utils.now(),
"name": frappe.session.user
})

frappe.cache().hset("last_db_session_update", self.sid, now) frappe.cache().hset("last_db_session_update", self.sid, now)
updated_in_db = True updated_in_db = True




Ladataan…
Peruuta
Tallenna