def update(self, force_cache=False, force_db=False): """extend session expiry""" if (frappe.session['user'] == "Guest"): return now = frappe.utils.now() if force_cache: self.update_data_cache() else: self.data['data']['last_updated'] = now # update session in db last_updated = utils.jaspersession_get_value("last_db_jasper_session_update") time_diff = frappe.utils.time_diff_in_seconds(now, last_updated) if last_updated else None # database persistence is secondary, don't update it too often updated_in_db = False if force_db or (time_diff==None) or (time_diff > 300): frappe.db.sql("""update tabJasperSessions set sessiondata=%s, lastupdate=NOW() where TIMEDIFF(NOW(), lastupdate) < TIME(%s) and status='Active'""" , (str(self.data['data']), utils.get_expiry_period())) utils.jaspersession_set_value("last_db_jasper_session_update", now) updated_in_db = True frappe.db.commit() # set in memcache utils.jaspersession_set_value("jaspersession", self.data) return updated_in_db
def update(self, force_cache=False, force_db=False): """extend session expiry""" if (frappe.session['user'] == "Guest"): return now = frappe.utils.now() if force_cache: self.update_data_cache() else: self.data['data']['last_updated'] = now # update session in db last_updated = utils.jaspersession_get_value("last_db_jasper_session_update") time_diff = frappe.utils.time_diff_in_seconds(now, last_updated) if last_updated else None # database persistence is secondary, don't update it too often updated_in_db = False if force_db or (time_diff==None) or (time_diff > 300): frappe.db.sql("""update tabJasperSessions set sessiondata=%s, lastupdate=NOW() where TIMEDIFF(NOW(), lastupdate) < TIME(%s) and status='Active'""" , (str(self.data['data']), utils.get_expiry_period())) utils.jaspersession_set_value("last_db_jasper_session_update", now) updated_in_db = True frappe.db.commit() # set in memcache utils.jaspersession_set_value("jaspersession", self.data) return updated_in_db
def update_jasper_reqid_record(self, reqId, data): frappe.db.sql("""update tabJasperReqids set data=%s, lastupdate=NOW() where reqid=%s""",(str(data['data']), reqId)) # also add to memcache utils.jaspersession_set_value(reqId, data) frappe.db.commit()
def update_jasper_reqid_record(self, reqId, data): frappe.db.sql("""update tabJasperReqids set data=%s, lastupdate=NOW() where reqid=%s""",(str(data['data']), reqId)) # also add to memcache utils.jaspersession_set_value(reqId, data) frappe.db.commit()
def insert_jasper_reqid_record(self, reqId, data): frappe.db.sql("""insert into tabJasperReqids (reqid, data, lastupdate) values (%s , %s, NOW())""", (reqId, str(data['data']))) # also add to memcache utils.jaspersession_set_value(reqId, data) frappe.db.commit()
def insert_jasper_reqid_record(self, reqId, data): frappe.db.sql("""insert into tabJasperReqids (reqid, data, lastupdate) values (%s , %s, NOW())""", (reqId, str(data['data']))) # also add to memcache utils.jaspersession_set_value(reqId, data) frappe.db.commit()
def insert_jasper_session_record(self): frappe.db.sql("""insert into tabJasperSessions (sessiondata, user, lastupdate, status) values (%s , %s, NOW(), 'Active')""", (str(self.data['data']), self.data['user'])) # also add to memcache utils.jaspersession_set_value("jaspersession", self.data) utils.jaspersession_set_value("last_db_jasper_session_update", frappe.utils.now())
def insert_jasper_session_record(self): frappe.db.sql("""insert into tabJasperSessions (sessiondata, user, lastupdate, status) values (%s , %s, NOW(), 'Active')""", (str(self.data['data']), self.data['user'])) # also add to memcache utils.jaspersession_set_value("jaspersession", self.data) utils.jaspersession_set_value("last_db_jasper_session_update", frappe.utils.now())
def ignore_jasper_perm(): ignore_perm = jaspersession_get_value("jasper_ignore_perm_roles") if ignore_perm is None: ignore_perm = frappe.db.get_single_value("JasperServerConfig", "jasper_ignore_perm_roles") jaspersession_set_value("jasper_ignore_perm_roles", ignore_perm) if not cint(ignore_perm): return False return True
def send_mail_and_logger(self, sessionId, msg, title, log=True): cur_user = "******" if self.user == "Administrator" else self.user last_err = utils.jaspersession_get_value(sessionId) if not last_err: last_err = utils.add_to_time_str(hours=-5) time_diff = frappe.utils.time_diff_in_hours(frappe.utils.now(), last_err) if time_diff >= 4: self.send_email(msg, title, user=cur_user) utils.jaspersession_set_value(sessionId, frappe.utils.now()) if log: _logger.error(msg)
def ignore_jasper_perm(): ignore_perm = jaspersession_get_value("jasper_ignore_perm_roles") if ignore_perm is None: ignore_perm = frappe.db.get_single_value("JasperServerConfig", "jasper_ignore_perm_roles") jaspersession_set_value("jasper_ignore_perm_roles", ignore_perm) if not cint(ignore_perm): return False return True
def send_mail_and_logger(self, sessionId, msg, title, log=True): cur_user = "******" if self.user == "Administrator" else self.user last_err = utils.jaspersession_get_value(sessionId) if not last_err: last_err = utils.add_to_time_str(hours=-5) time_diff = frappe.utils.time_diff_in_hours(frappe.utils.now(), last_err) if time_diff >= 4: self.send_email(msg, title, user=cur_user) utils.jaspersession_set_value(sessionId, frappe.utils.now()) if log: _logger.error(msg)
def on_update(self, method=None): #if we are importing docs from jasperserver if not frappe.flags.in_import: r_filters = [ "`tabJasper Reports`.jasper_doctype is NULL", "`tabJasper Reports`.report is NULL" ] jr = JasperRoot() data = jr._get_reports_list(filters_report=r_filters) #report_list_dirt_doc is not called from here cached = redis_transation(data, "report_list_all") if cached and data: jaspersession_set_value("report_list_dirt_all", False) jaspersession_set_value("report_list_dirt_doc", True) elif data: #redis not cache jaspersession_set_value("report_list_dirt_doc", True) jaspersession_set_value("report_list_dirt_all", True) if check_root_exists(self.doctype, self.name): return #if jrxml file was removed then remove all associated images and params if self.jasper_report_origin.lower() == "localserver": frappe.db.sql("""delete from `tab%s` where %s=%s """ % ("Jasper Parameter", "parent", '%s'), (self.name), auto_commit=1) self.query = ""
def on_update(self, method=None): #if we are importing docs from jasperserver if not frappe.flags.in_import: r_filters=["`tabJasper Reports`.jasper_doctype is NULL", "`tabJasper Reports`.report is NULL"] jr = JasperRoot() data = jr._get_reports_list(filters_report=r_filters) #report_list_dirt_doc is not called from here cached = redis_transation(data, "report_list_all") if cached and data: jaspersession_set_value("report_list_dirt_all", False) jaspersession_set_value("report_list_dirt_doc", True) elif data: #redis not cache jaspersession_set_value("report_list_dirt_doc", True) jaspersession_set_value("report_list_dirt_all", True) if check_root_exists(self.doctype, self.name): return #if jrxml file was removed then remove all associated images and params if self.jasper_report_origin.lower() == "localserver": frappe.db.sql("""delete from `tab%s` where %s=%s """ % ("Jasper Parameter", "parent", '%s'),(self.name), auto_commit=1) self.query = ""
def get_reports_list_for_all(self): if self.sid == 'Guest': return None data = {} dirt = utils.jaspersession_get_value("report_list_dirt_all") or False #dirt if redis not cache if not dirt: data = utils.get_jasper_session_data_from_cache("report_list_all") #if for some reason there is no cache get it from db if not data: r_filters = [ "`tabJasper Reports`.jasper_doctype is NULL", "`tabJasper Reports`.report is NULL" ] ldata = self._get_reports_list(filters_report=r_filters) cached = redis_transation(ldata, "report_list_all") if ldata: data = ldata.get("data", None) if cached and data: utils.jaspersession_set_value("report_list_dirt_all", False) if data: data.pop('session_expiry', None) data.pop('last_updated', None) self.filter_perm_roles(data) if not self.check_server_status(): self.remove_server_docs(data) try: version = utils.getFrappeVersion().major if version >= 5: from jasper_erpnext_report.utils.jasper_email import is_email_enabled acc = cint(is_email_enabled()) else: acc = cint( frappe.db.get_single_value("Outgoing Email Settings", "enabled")) data['mail_enabled'] = acc except: data['mail_enabled'] = "disabled" return data
def get_reports_list(self, doctype, docnames, report): if not doctype and not report: frappe.throw( _("You need to provide the doctype name or the report name.")) if docnames: docnames = json.loads(docnames) else: docnames = [] new_data = {'size': 0} if frappe.local.session['sid'] == 'Guest': return None data = {} dirt = utils.jaspersession_get_value("report_list_dirt_doc") if not dirt: data = utils.get_jasper_session_data_from_cache( "report_list_doctype") if not data or not self.check_docname(data, doctype, report): if doctype: r_filters = {"jasper_doctype": doctype} else: r_filters = {"report": report} update = False if not data else True ldata = self._get_reports_list(filters_report=r_filters, cachename="report_list_doctype", update=update) cached = redis_transation(ldata, "report_list_doctype") if ldata: data = ldata.get("data", None) if cached and data and dirt: utils.jaspersession_set_value("report_list_dirt_doc", False) if data and self.check_docname(data, doctype, report): data.pop('session_expiry', None) data.pop('last_updated', None) new_data = self.doc_filter_perm_roles(doctype or report, data, docnames) if not self.check_server_status(): self.remove_server_docs(new_data) return new_data
def innerfn(*args, **kwargs): newargs = {} me = args[0] try: fnargs, varargs, varkw, defaults = inspect.getargspec(fn) for a in fnargs: if a in kwargs: newargs[a] = kwargs.get(a) fn_result = fn(*args, **newargs) me.update() return fn_result except Unauthorized: me._timeout() fn_result = fn(*args, **newargs) me.update() utils.jaspersession_set_value("last_jasper_session_timeout", frappe.utils.now()) return fn_result except Exception as e: print "Problems: {}\n".format(e) _logger.error(_("Problems {}".format(e)))
def innerfn(*args, **kwargs): newargs = {} me = args[0] try: fnargs, varargs, varkw, defaults = inspect.getargspec(fn) for a in fnargs: if a in kwargs: newargs[a] = kwargs.get(a) fn_result = fn(*args, **newargs) me.update() return fn_result except Unauthorized: me._timeout() fn_result = fn(*args, **newargs) me.update() utils.jaspersession_set_value("last_jasper_session_timeout", frappe.utils.now()) return fn_result except Exception as e: print "Problems: {}\n".format(e) _logger.error(_("Problems {}".format(e)))
def get_reports_list(self, doctype, docnames, report): if not doctype and not report: frappe.throw(_("You need to provide the doctype name or the report name.")) if docnames: docnames = json.loads(docnames) else: docnames = [] new_data = {'size': 0} if frappe.local.session['sid'] == 'Guest': return None data = {} dirt = utils.jaspersession_get_value("report_list_dirt_doc") if not dirt: data = utils.get_jasper_session_data_from_cache("report_list_doctype") if not data or not self.check_docname(data, doctype, report): if doctype: r_filters={"jasper_doctype": doctype} else: r_filters={"report": report} update = False if not data else True ldata = self._get_reports_list(filters_report=r_filters, cachename="report_list_doctype", update=update) cached = redis_transation(ldata, "report_list_doctype") if ldata: data = ldata.get("data", None) if cached and data and dirt: utils.jaspersession_set_value("report_list_dirt_doc", False) if data and self.check_docname(data, doctype, report): data.pop('session_expiry',None) data.pop('last_updated', None) new_data = self.doc_filter_perm_roles(doctype or report, data, docnames) if not self.check_server_status(): self.remove_server_docs(new_data) return new_data
def get_reports_list_for_all(self): if self.sid == 'Guest': return None data = {} dirt = utils.jaspersession_get_value("report_list_dirt_all") or False #dirt if redis not cache if not dirt: data = utils.get_jasper_session_data_from_cache("report_list_all") #if for some reason there is no cache get it from db if not data: r_filters=["`tabJasper Reports`.jasper_doctype is NULL", "`tabJasper Reports`.report is NULL"] ldata = self._get_reports_list(filters_report=r_filters) cached = redis_transation(ldata, "report_list_all") if ldata: data = ldata.get("data", None) if cached and data: utils.jaspersession_set_value("report_list_dirt_all", False) if data: data.pop('session_expiry', None) data.pop('last_updated', None) self.filter_perm_roles(data) if not self.check_server_status(): self.remove_server_docs(data) try: version = utils.getFrappeVersion().major if version >= 5: from jasper_erpnext_report.utils.jasper_email import is_email_enabled acc = cint(is_email_enabled()) else: acc = cint(frappe.db.get_single_value("Outgoing Email Settings", "enabled")) data['mail_enabled'] = acc except: data['mail_enabled'] = "disabled" return data
def jasper_server_login(doc): doc = json.loads(doc) jsr = jasper_session_obj or Jr.JasperRoot(doc) checkJasperRestLib() login = jsr.login() #get the list of reports on the server r_filters=["`tabJasper Reports`.jasper_doctype is NULL", "`tabJasper Reports`.report is NULL"] data = jsr._get_reports_list(filters_report=r_filters) cached = redis_transation(data, "report_list_all") if cached and data: jaspersession_set_value("report_list_dirt_doc", True) jaspersession_set_value("report_list_dirt_all", False) elif data: #redis not cache jaspersession_set_value("report_list_dirt_all", True) jaspersession_set_value("report_list_dirt_doc", True) return login
def jasper_server_login(doc): doc = json.loads(doc) jsr = jasper_session_obj or Jr.JasperRoot(doc) checkJasperRestLib() login = jsr.login() #get the list of reports on the server #r_filters=["`tabJasper Reports`.jasper_doctype is NULL", "`tabJasper Reports`.report is NULL"] r_filters = {"jasper_doctype": "", "report": ""} data = jsr._get_reports_list(filters_report=r_filters) cached = redis_transation(data, "report_list_all") if cached and data: jaspersession_set_value("report_list_dirt_doc", True) jaspersession_set_value("report_list_dirt_all", False) elif data: #redis not cache jaspersession_set_value("report_list_dirt_all", True) jaspersession_set_value("report_list_dirt_doc", True) return login
def on_update(self): jaspersession_set_value("jasper_ignore_perm_roles", self.jasper_ignore_perm_roles)
def on_update(self): jaspersession_set_value("jasper_ignore_perm_roles", self.jasper_ignore_perm_roles)