Example #1
0
	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()
Example #4
0
	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()
Example #5
0
	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())
Example #8
0
	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
Example #10
0
	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)
Example #11
0
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)
Example #13
0
    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 = ""
Example #15
0
    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
Example #16
0
    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)))
Example #18
0
	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)