Esempio n. 1
0
def scheduler_task(site, event, handler, now=False):
    from frappe.utils.scheduler import log
    traceback = ""
    task_logger.info('running {handler} for {site} for event: {event}'.format(
        handler=handler, site=site, event=event))
    try:
        frappe.init(site=site)
        if not create_lock(handler):
            return
        if not now:
            frappe.connect(site=site)
        frappe.get_attr(handler)()

    except Exception:
        frappe.db.rollback()
        traceback = log(
            handler,
            "Method: {event}, Handler: {handler}".format(event=event,
                                                         handler=handler))
        task_logger.warn(traceback)
        raise

    else:
        frappe.db.commit()

    finally:
        delete_lock(handler)

        if not now:
            frappe.destroy()

    task_logger.info('ran {handler} for {site} for event: {event}'.format(
        handler=handler, site=site, event=event))
Esempio n. 2
0
def scheduler_task(site, event, handler, now=False):
	from frappe.utils.scheduler import log
	traceback = ""
	task_logger.info('running {handler} for {site} for event: {event}'.format(handler=handler, site=site, event=event))
	try:
		frappe.init(site=site)
		if not create_lock(handler):
			return
		if not now:
			frappe.connect(site=site)
		frappe.get_attr(handler)()

	except Exception:
		frappe.db.rollback()
		traceback = log(handler, "Method: {event}, Handler: {handler}".format(event=event, handler=handler))
		task_logger.warn(traceback)
		raise

	else:
		frappe.db.commit()

	finally:
		delete_lock(handler)

		if not now:
			frappe.destroy()

	task_logger.info('ran {handler} for {site} for event: {event}'.format(handler=handler, site=site, event=event))
Esempio n. 3
0
def sendmail(site,
             communication_name,
             print_html=None,
             print_format=None,
             attachments=None,
             recipients=None,
             cc=None,
             lang=None):
    try:
        frappe.connect(site=site)

        if lang:
            frappe.local.lang = lang

        # upto 3 retries
        for i in xrange(3):
            try:
                communication = frappe.get_doc("Communication",
                                               communication_name)
                communication._notify(print_html=print_html,
                                      print_format=print_format,
                                      attachments=attachments,
                                      recipients=recipients,
                                      cc=cc)

            except MySQLdb.OperationalError, e:
                # deadlock, try again
                if e.args[0] == 1213:
                    frappe.db.rollback()
                    time.sleep(1)
                    continue
                else:
                    raise
            else:
                break

    except:
        traceback = log(
            "frappe.tasks.sendmail",
            frappe.as_json({
                "site": site,
                "communication_name": communication_name,
                "print_html": print_html,
                "print_format": print_format,
                "attachments": attachments,
                "recipients": recipients,
                "cc": cc,
                "lang": lang
            }))
        task_logger.warn(traceback)
        raise

    else:
        frappe.db.commit()

    finally:
        frappe.destroy()
def sendmail(site, communication_name, print_html=None, print_format=None, attachments=None,
	recipients=None, cc=None, lang=None, session=None):
	try:
		frappe.connect(site=site)

		if lang:
			frappe.local.lang = lang

		if session:
			# hack to enable access to private files in PDF
			session['data'] = frappe._dict(session['data'])
			frappe.local.session.update(session)

		# upto 3 retries
		for i in xrange(3):
			try:
				communication = frappe.get_doc("Communication", communication_name)
				communication._notify(print_html=print_html, print_format=print_format, attachments=attachments,
					recipients=recipients, cc=cc)

			except MySQLdb.OperationalError, e:
				# deadlock, try again
				if e.args[0]==1213:
					frappe.db.rollback()
					time.sleep(1)
					continue
				else:
					raise
			else:
				break

	except:
		traceback = log("frappe.tasks.sendmail", frappe.as_json({
			"site": site,
			"communication_name": communication_name,
			"print_html": print_html,
			"print_format": print_format,
			"attachments": attachments,
			"recipients": recipients,
			"cc": cc,
			"lang": lang
		}))
		task_logger.warn(traceback)
		raise

	else:
		frappe.db.commit()

	finally:
		frappe.destroy()
Esempio n. 5
0
def send_newsletter(site, newsletter, event):
	# hack! pass event="bulk_long" to queue in longjob queue
	try:
		frappe.connect(site=site)
		doc = frappe.get_doc("Newsletter", newsletter)
		doc.send_bulk()

	except:
		frappe.db.rollback()
		task_logger.warn(frappe.get_traceback())

		# wasn't able to send emails :(
		doc.db_set("email_sent", 0)
		frappe.db.commit()

		raise

	else:
		frappe.db.commit()

	finally:
		frappe.destroy()
Esempio n. 6
0
def send_newsletter(site, newsletter, event):
    # hack! pass event="bulk_long" to queue in longjob queue
    try:
        frappe.connect(site=site)
        doc = frappe.get_doc("Newsletter", newsletter)
        doc.send_bulk()

    except:
        frappe.db.rollback()
        task_logger.warn(frappe.get_traceback())

        # wasn't able to send emails :(
        doc.db_set("email_sent", 0)
        frappe.db.commit()

        raise

    else:
        frappe.db.commit()

    finally:
        frappe.destroy()
Esempio n. 7
0
def scheduler_task(site, event, handler, now=False):
    from frappe.utils.scheduler import log
    traceback = ""
    task_logger.info('running {handler} for {site} for event: {event}'.format(
        handler=handler, site=site, event=event))
    try:
        if site not in ['tailorpad.com', 'testfirst']:
            exec_cmd("../env/bin/frappe --use %s" % (site),
                     cwd="/home/erpnext/admin_site/frappe-bench/sites")
            frappe.init(site=site)
            if not create_lock(handler):
                return
            if not now:
                frappe.connect(site=site)
            frappe.get_attr(handler)()

    except Exception:
        frappe.db.rollback()
        traceback = log(
            handler,
            "Method: {event}, Handler: {handler}".format(event=event,
                                                         handler=handler))
        task_logger.warn(traceback)
        raise

    else:
        frappe.db.commit()

    finally:
        delete_lock(handler)

        if not now:
            frappe.destroy()

    task_logger.info('ran {handler} for {site} for event: {event}'.format(
        handler=handler, site=site, event=event))