diff --git a/frappe/integration_broker/doctype/integration_request/integration_request.json b/frappe/integration_broker/doctype/integration_request/integration_request.json index 542d5e7d71..e32450d9bb 100644 --- a/frappe/integration_broker/doctype/integration_request/integration_request.json +++ b/frappe/integration_broker/doctype/integration_request/integration_request.json @@ -9,11 +9,13 @@ "doctype": "DocType", "document_type": "", "editable_grid": 1, + "engine": "InnoDB", "fields": [ { "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "integration_type", "fieldtype": "Select", "hidden": 0, @@ -40,6 +42,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "integration_request_service", "fieldtype": "Data", "hidden": 0, @@ -66,6 +69,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "Queued", "fieldname": "status", "fieldtype": "Select", @@ -73,7 +77,7 @@ "ignore_user_permissions": 0, "ignore_xss_filter": 0, "in_filter": 0, - "in_list_view": 0, + "in_list_view": 1, "label": "Status", "length": 0, "no_copy": 0, @@ -93,6 +97,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "data", "fieldtype": "Code", "hidden": 0, @@ -118,6 +123,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "output", "fieldtype": "Code", "hidden": 0, @@ -143,6 +149,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "error", "fieldtype": "Code", "hidden": 0, @@ -175,7 +182,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2016-08-11 10:40:32.231331", + "modified": "2016-10-13 05:01:14.913553", "modified_by": "Administrator", "module": "Integration Broker", "name": "Integration Request", @@ -192,6 +199,7 @@ "export": 1, "if_owner": 0, "import": 0, + "is_custom": 0, "permlevel": 0, "print": 1, "read": 1, @@ -208,5 +216,6 @@ "read_only_onload": 0, "sort_field": "modified", "sort_order": "DESC", + "title_field": "integration_request_service", "track_seen": 0 } \ No newline at end of file diff --git a/frappe/integration_broker/doctype/integration_service/integration_service.py b/frappe/integration_broker/doctype/integration_service/integration_service.py index 9b79d0307f..65755c6e11 100644 --- a/frappe/integration_broker/doctype/integration_service/integration_service.py +++ b/frappe/integration_broker/doctype/integration_service/integration_service.py @@ -6,7 +6,6 @@ from __future__ import unicode_literals import frappe from frappe import _ from frappe.model.document import Document -from frappe.utils.background_jobs import enqueue, get_jobs import json, urlparse from frappe.utils import get_request_session @@ -17,6 +16,8 @@ class IntegrationService(Document): self.enable_service() self.install_fixtures() + frappe.cache().delete_value('scheduler_events') + def install_fixtures(self): pass @@ -96,13 +97,15 @@ def get_integration_services(): return services -def trigger_integration_service_events(): - for service in frappe.get_all("Integration Service", filters={"enabled": 1}, fields=["name"]): +def get_integration_service_events(): + '''Get scheduler events for enabled integrations''' + events = {} + for service in frappe.get_all("Integration Service", filters={"enabled": 1}, + fields=["name"]): controller = get_integration_controller(service.name) - if hasattr(controller, "scheduled_jobs"): - for job in controller.scheduled_jobs: - for event, handlers in job.items(): - for handler in handlers: - if handler not in get_jobs(): - enqueue(handler, queue='short', event=event) \ No newline at end of file + if hasattr(controller, "scheduler_events"): + for key, handlers in controller.scheduler_events: + events.setdefault(key, []).extend(handlers) + + return events diff --git a/frappe/integration_broker/doctype/integration_service/test_integration_service.py b/frappe/integration_broker/doctype/integration_service/test_integration_service.py index 0db29654cc..e9f662e69f 100644 --- a/frappe/integration_broker/doctype/integration_service/test_integration_service.py +++ b/frappe/integration_broker/doctype/integration_service/test_integration_service.py @@ -5,8 +5,16 @@ from __future__ import unicode_literals import frappe import unittest +from frappe.utils.scheduler import get_scheduler_events # test_records = frappe.get_test_records('Integration Service') class TestIntegrationService(unittest.TestCase): - pass + def test_scheudler_events(self): + dropbox_settings = frappe.get_doc('Dropbox Settings') + dropbox_settings.db_set('enabled', 1) + + events = get_scheduler_events('daily_long') + self.assertTrue('frappe.integrations.dropbox_integration.take_backups_daily' in events) + + dropbox_settings.db_set('enabled', 0) diff --git a/frappe/integrations/doctype/dropbox_settings/dropbox_settings.py b/frappe/integrations/doctype/dropbox_settings/dropbox_settings.py index 3400971087..2c54c09882 100644 --- a/frappe/integrations/doctype/dropbox_settings/dropbox_settings.py +++ b/frappe/integrations/doctype/dropbox_settings/dropbox_settings.py @@ -15,17 +15,15 @@ from frappe.integration_broker.doctype.integration_service.integration_service i ignore_list = [".DS_Store"] class DropboxSettings(IntegrationService): - scheduled_jobs = [ - { - "daily_long": [ - "frappe.integrations.dropbox_integration.take_backups_daily" - ], - "weekly_long": [ - "frappe.integrations.dropbox_integration.take_backups_weekly" - ] - } - ] - + scheduler_events = { + "daily_long": [ + "frappe.integrations.dropbox_integration.take_backups_daily" + ], + "weekly_long": [ + "frappe.integrations.dropbox_integration.take_backups_weekly" + ] + } + def validate(self): if not self.flags.ignore_mandatory: self.validate_dropbox_credentails() @@ -49,10 +47,10 @@ class DropboxSettings(IntegrationService): from dropbox import session except: raise Exception(_("Please install dropbox python module")) - + if not (self.app_access_key or self.app_secret_key): raise Exception(_("Please set Dropbox access keys in your site config")) - + sess = session.DropboxSession(self.app_access_key, self.get_password(fieldname="app_secret_key", raise_exception=False), "app_folder") @@ -64,13 +62,13 @@ def get_service_details():
Steps to configure Service