def make_pdf(fileName, content, pformat, report_name, reqId=None, merge_all=True, pages=None, email=False):

	if pformat == "html":
		filepath = getHtmlFilepath(report_name, fileName)
		g = "jasper_erpnext_report/reports/" + frappe.local.site
		path = os.path.normpath(os.path.relpath(filepath, g))
		url = "%s?jasper_doc_path=%s" % ("Jasper Reports", path)
		fileName = fileName[fileName.rfind(os.sep) + 1:]
		file_name = fileName.replace(" ", "-").replace("/", "-")
		jasper_run_method("jasper_after_get_report", file_name, content, url, filepath)
		if not email:
			return url
		return url, filepath

	jsr = jasper_session_obj or Jr.JasperRoot()
	file_name, output = jsr.make_pdf(fileName, content, pformat, merge_all, pages)

	if pformat == "pdf":
		filepath = get_email_pdf_path(report_name, reqId)
		path = getPdfFilePath(file_name, filepath)
		url = "%s?jasper_doc_path=%s" % ("Jasper Reports", path)
		jasper_run_method("jasper_after_get_report", file_name, output.getvalue(), url, filepath)
		if not email:
			file_path = os.path.join(filepath, file_name)
			jasper_save_email(file_path, output.getvalue())
			return url
		return file_name, filepath, output, url

	jasper_run_method("jasper_after_get_report", file_name, output.getvalue(), None, None)
	if not email:
		jsr.prepare_file_to_client(file_name, output.getvalue())
		return

	return file_name, output
Ejemplo n.º 2
0
def make_pdf(fileName, content, pformat, report_name, reqId=None, merge_all=True, pages=None, email=False):

	if pformat == "html":
		filepath = getHtmlFilepath(report_name, fileName)
		g = "jasper_erpnext_report/reports/" + frappe.local.site
		path = os.path.normpath(os.path.relpath(filepath, g))
		url = "%s?jasper_doc_path=%s" % ("Jasper Reports", path)
		fileName = fileName[fileName.rfind(os.sep) + 1:]
		file_name = fileName.replace(" ", "-").replace("/", "-")
		jasper_run_method("jasper_after_get_report", file_name, content, url, filepath)
		if not email:
			return url
		return url, filepath

	jsr = jasper_session_obj or Jr.JasperRoot()
	file_name, output = jsr.make_pdf(fileName, content, pformat, merge_all, pages)

	if pformat == "pdf":
		filepath = get_email_pdf_path(report_name, reqId)
		path = getPdfFilePath(file_name, filepath)
		url = "%s?jasper_doc_path=%s" % ("Jasper Reports", path)
		jasper_run_method("jasper_after_get_report", file_name, output.getvalue(), url, filepath)
		if not email:
			file_path = os.path.join(filepath, file_name)
			jasper_save_email(file_path, output.getvalue())
			return url
		return file_name, filepath, output, url

	jasper_run_method("jasper_after_get_report", file_name, output.getvalue(), None, None)
	if not email:
		jsr.prepare_file_to_client(file_name, output.getvalue())
		return

	return file_name, output
Ejemplo n.º 3
0
def clear_all_jasper_reports(force=True):
	deleted = force
	compiled_removed = 0
	emailed_removed = 0
	#to every intern_reqid is one local_report_ or from server?(to check)
	tabReqids = frappe.db.sql("select * from tabJasperReqids where reqid like 'intern_reqid_%'", as_dict=True)
	import ast
	from jasper_erpnext_report.utils.jasper_email import get_email_pdf_path

	for m in tabReqids:
		d = m.get('data')
		req = ast.literal_eval(d)
		reqId = req.get("reqids")[0][0]
		data = jaspersession_get_value(reqId)
		if not force:
			deleted = _f(data)

		if deleted:

			if "local_report_" not in reqId:
					continue

			intern_reqid = m.get("reqid")

			try:

				if not data:
					d = frappe.db.sql("select * from tabJasperReqids where reqid='{0}'".format(reqId), as_dict=True)
					data = ast.literal_eval(d[0]['data'])

				file_path = data.get('result').get("uri").rsplit("/",1)
				compiled_path = file_path[0]
				remove_directory(compiled_path)
				compiled_removed += 1
				#if this report was not sent by email then remove it from assets/jasper_erpnext_report/reports/
				urlemails = frappe.db.sql("""select count(*) from `tabJasper Email Report` where jasper_report_path like '%{0}%'""".format(intern_reqid))

				if urlemails[0][0] == 0:
					report_name = data.get("report_name").get("data").get("report_name")
					site = req.get("site")
					path = get_email_pdf_path(report_name, intern_reqid, site)
					remove_directory(path)
					emailed_removed += 1

			except:
				print _("Path does not exist!")

			frappe.cache().delete_value("jasper:" + reqId)
			frappe.cache().delete_value("jasper:" + intern_reqid)
			frappe.db.sql("""delete from tabJasperReqids where reqid in ('%s', '%s')"""%(reqId, intern_reqid))

			frappe.db.commit()

	if compiled_removed > 0:
		print _("Was removed {0} file(s) from compiled path and {1} file(s) from reports path (emailed only).".format(compiled_removed, emailed_removed))
	else:
		#print _("No file was removed.")
		print "No file was removed."
def clear_all_jasper_reports(force=True):
    deleted = force
    compiled_removed = 0
    emailed_removed = 0
    #to every intern_reqid is one local_report_ or from server?(to check)
    tabReqids = frappe.db.sql(
        "select * from tabJasperReqids where reqid like 'intern_reqid_%'",
        as_dict=True)
    import ast
    from jasper_erpnext_report.utils.jasper_email import get_email_pdf_path

    for m in tabReqids:
        d = m.get('data')
        req = ast.literal_eval(d)
        reqId = req.get("reqids")[0][0]
        data = jaspersession_get_value(reqId)
        if not force:
            deleted = _f(data)

        if deleted:

            if "local_report_" not in reqId:
                continue

            intern_reqid = m.get("reqid")

            try:

                if not data:
                    d = frappe.db.sql(
                        "select * from tabJasperReqids where reqid='{0}'".
                        format(reqId),
                        as_dict=True)
                    data = ast.literal_eval(d[0]['data'])

                file_path = data.get('result').get("uri").rsplit("/", 1)
                compiled_path = file_path[0]
                remove_directory(compiled_path)
                compiled_removed += 1
                #if this report was not sent by email then remove it from assets/jasper_erpnext_report/reports/
                urlemails = frappe.db.sql(
                    """select count(*) from `tabJasper Email Report` where jasper_report_path like '%{0}%'"""
                    .format(intern_reqid))

                if urlemails[0][0] == 0:
                    report_name = data.get("report_name").get("data").get(
                        "report_name")
                    site = req.get("site")
                    path = get_email_pdf_path(report_name, intern_reqid, site)
                    remove_directory(path)
                    emailed_removed += 1

            except:
                print _("Path does not exist!")

            frappe.cache().delete_value("jasper:" + reqId)
            frappe.cache().delete_value("jasper:" + intern_reqid)
            frappe.db.sql(
                """delete from tabJasperReqids where reqid in ('%s', '%s')""" %
                (reqId, intern_reqid))

            frappe.db.commit()

    if compiled_removed > 0:
        print _(
            "Was removed {0} file(s) from compiled path and {1} file(s) from reports path (emailed only)."
            .format(compiled_removed, emailed_removed))
    else:
        #print _("No file was removed.")
        print "No file was removed."