def start_import(self): from frappe.core.page.background_jobs.background_jobs import get_info from frappe.utils.scheduler import is_scheduler_inactive if is_scheduler_inactive() and not frappe.flags.in_test: frappe.throw( _("Scheduler is inactive. Cannot import data."), title=_("Scheduler Inactive") ) enqueued_jobs = [d.get("job_name") for d in get_info()] if self.name not in enqueued_jobs: enqueue( start_import, queue="default", timeout=6000, event="data_import", job_name=self.name, data_import=self.name, bank_account=self.bank_account, import_file_path=self.import_file, bank=self.bank, template_options=self.template_options, now=frappe.conf.developer_mode or frappe.flags.in_test, ) return True return False
def import_data(data_import): frappe.db.set_value("Data Import Legacy", data_import, "import_status", "In Progress", update_modified=False) frappe.publish_realtime("data_import_progress", { "progress": "0", "data_import": data_import, "reload": True }, user=frappe.session.user) from frappe.core.page.background_jobs.background_jobs import get_info enqueued_jobs = [d.get("job_name") for d in get_info()] if data_import not in enqueued_jobs: enqueue(upload, queue='default', timeout=6000, event='data_import', job_name=data_import, data_import_doc=data_import, from_data_import="Yes", user=frappe.session.user)
def import_data(data_import): frappe.db.set_value("Data Import", data_import, "import_status", "In Progress", update_modified=False) frappe.publish_realtime("data_import_progress", {"progress": "0", "data_import": data_import, "reload": True}, user=frappe.session.user) from frappe.core.page.background_jobs.background_jobs import get_info enqueued_jobs = [d.get("job_name") for d in get_info()] if data_import not in enqueued_jobs: enqueue(upload, queue='default', timeout=6000, event='data_import', job_name=data_import, data_import_doc=data_import, from_data_import="Yes", user=frappe.session.user)
def bulk_create_obp_records(self): enqueued_jobs = [d.get("job_name") for d in get_info()] if self.name in enqueued_jobs: frappe.throw( _("OBP record creation already in progress. Please wait for sometime." )) else: enqueue(create_obp_records, queue="default", timeout=6000, event="obp_record_creation", job_name=self.name, doc=self) frappe.throw( _("OBP record creation job added to queue. Please check after sometime." ))
def rematch_results(uploaded_doc_name): job_name = uploaded_doc_name + 'Rematch Results' enqueued_jobs = [d.get("job_name") for d in get_info()] if job_name in enqueued_jobs: frappe.msgprint( _("Rematching already in progress. Please wait for sometime.")) else: enqueue(link_documents, queue="default", timeout=6000, event='link_documents', uploaded_doc_name=uploaded_doc_name, job_name=job_name) frappe.msgprint( _("Rematching job added to the queue. Please check after sometime." ))
def start_import(self): if frappe.utils.scheduler.is_scheduler_inactive(): frappe.throw(_("Scheduler is inactive. Cannot import data."), title=_("Scheduler Inactive")) enqueued_jobs = [d.get("job_name") for d in get_info()] if self.name not in enqueued_jobs: enqueue( start_import, queue="default", timeout=6000, event="data_import", job_name=self.name, data_import=self.name, now=frappe.conf.developer_mode or frappe.flags.in_test, )
def after_insert(self): enqueued_jobs = [d.get("job_name") for d in get_info()] json_data = frappe.get_file_json(frappe.local.site_path + self.cf_upload_gstr_2b_data) if self.name in enqueued_jobs: frappe.msgprint( _("Create GSTR 2B entries already in progress. Please wait for sometime." )) else: enqueue(create_gstr2b_entries, queue="default", timeout=6000, event='create_gstr2b_entries', json_data=json_data, doc=self, job_name=self.name) frappe.msgprint( _("Create GSTR 2B entries job added to the queue. Please check after sometime." ))
def make_invoices(self): self.validate_company() invoices = self.get_invoices() if len(invoices) < 50: return start_import(invoices) else: from frappe.core.page.background_jobs.background_jobs import get_info from frappe.utils.scheduler import is_scheduler_inactive if is_scheduler_inactive() and not frappe.flags.in_test: frappe.throw(_("Scheduler is inactive. Cannot import data."), title=_("Scheduler Inactive")) enqueued_jobs = [d.get("job_name") for d in get_info()] if self.name not in enqueued_jobs: enqueue(start_import, queue="default", timeout=6000, event="opening_invoice_creation", job_name=self.name, invoices=invoices, now=frappe.conf.developer_mode or frappe.flags.in_test)
def start_merge(self): from frappe.core.page.background_jobs.background_jobs import get_info from frappe.utils.background_jobs import enqueue from frappe.utils.scheduler import is_scheduler_inactive if is_scheduler_inactive() and not frappe.flags.in_test: frappe.throw(_("Scheduler is inactive. Cannot merge accounts."), title=_("Scheduler Inactive")) enqueued_jobs = [d.get("job_name") for d in get_info()] if self.name not in enqueued_jobs: enqueue( start_merge, queue="default", timeout=6000, event="ledger_merge", job_name=self.name, docname=self.name, now=frappe.conf.developer_mode or frappe.flags.in_test, ) return True return False
def start_import(self): preview = frappe.get_doc("Bank Statement Import", self.name).get_preview_from_template( self.import_file, self.google_sheets_url) if 'Bank Account' not in json.dumps(preview['columns']): frappe.throw(_("Please add the Bank Account column")) from frappe.core.page.background_jobs.background_jobs import get_info from frappe.utils.scheduler import is_scheduler_inactive if is_scheduler_inactive() and not frappe.flags.in_test: frappe.throw(_("Scheduler is inactive. Cannot import data."), title=_("Scheduler Inactive")) enqueued_jobs = [d.get("job_name") for d in get_info()] if self.name not in enqueued_jobs: enqueue( start_import, queue="default", timeout=6000, event="data_import", job_name=self.name, data_import=self.name, bank_account=self.bank_account, import_file_path=self.import_file, google_sheets_url=self.google_sheets_url, bank=self.bank, template_options=self.template_options, now=frappe.conf.developer_mode or frappe.flags.in_test, ) return True return False
def job_already_enqueued(job_name): enqueued_jobs = [d.get("job_name") for d in get_info()] if job_name in enqueued_jobs: return True
def get_job_queue(job_name): queue_info = get_info() queue_by_job_name = [ queue for queue in queue_info if queue.get("job_name") == job_name ] return queue_by_job_name