From a170a4ca3bd8d9e57a43991540ee5b9ee06e0b32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Wed, 31 Aug 2016 16:00:40 +0200 Subject: [PATCH] Added task manager that responds to tasks mentioned in SVN logs. The task manager doesn't do anything yet, it just logs the fact that a task has been mentioned. --- attract_server/__init__.py | 13 ++++++++++++- attract_server/task_manager.py | 21 +++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 attract_server/task_manager.py diff --git a/attract_server/__init__.py b/attract_server/__init__.py index c947e4d..d935e32 100644 --- a/attract_server/__init__.py +++ b/attract_server/__init__.py @@ -1,12 +1,16 @@ from pillar.extension import PillarExtension from .modules import blueprint +from . import task_manager class AttractExtension(PillarExtension): + def __init__(self): + self.task_manager = task_manager.TaskManager() + @property def name(self): - return 'Attract' + return 'attract' def flask_config(self): """Returns extension-specific defaults for the Flask configuration. @@ -52,3 +56,10 @@ class AttractExtension(PillarExtension): :rtype: list of flask.Blueprint objects. """ return [blueprint] + + def setup_app(self, app): + """Connects Blinker signals.""" + + from . import subversion + + subversion.task_logged.connect(self.task_manager.task_logged_in_svn) diff --git a/attract_server/task_manager.py b/attract_server/task_manager.py new file mode 100644 index 0000000..ad98840 --- /dev/null +++ b/attract_server/task_manager.py @@ -0,0 +1,21 @@ +"""Task management.""" + +import attr + +from . import attrs_extra + + +@attr.s +class TaskManager(object): + _log = attrs_extra.log('%s.TaskManager' % __name__) + + def task_logged_in_svn(self, sender, task_id, log_entry): + """Blinker signal receiver; connects the logged commit with the task. + + :param sender: sender of the signal + :type sender: attract_server.subversion.CommitLogObserver + :param task_info: {'task_id': '123', 'log_entry': LogEntry} dict. + :type task_info: dict + """ + + self._log.info("Task '%s' logged in SVN: %s", task_id, log_entry)