diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py index c16481807e60c7ca925a44e60f38dcf3f24daf4b..0df9611f2f8ce275f8ad1e98085c294f5f888d91 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/radbchangeshandler.py @@ -44,7 +44,7 @@ CHANGE_INSERT_TYPE = 'insert' CHANGE_DELETE_TYPE = 'delete' class RADBChangesHandler(RADBBusListener): - def __init__(self, busname=DEFAULT_NOTIFICATION_BUSNAME, subjects=DEFAULT_NOTIFICATION_SUBJECTS, broker=None, momqueryrpc=None, **kwargs): + def __init__(self, busname=DEFAULT_NOTIFICATION_BUSNAME, subjects=DEFAULT_NOTIFICATION_SUBJECTS, broker=None, momqueryrpc=None, radbrpc=None, **kwargs): """ RADBChangesHandler listens on the lofar notification message bus and keeps track of all the change notifications. :param broker: valid Qpid broker host (default: None, which means localhost) @@ -61,6 +61,7 @@ class RADBChangesHandler(RADBBusListener): self._changedCondition = Condition() self._changeNumber = 0L self._momqueryrpc = momqueryrpc + self._radbrpc = radbrpc def _handleChange(self, change): '''_handleChange appends a change in the changes list and calls the onChangedCallback. @@ -77,18 +78,19 @@ class RADBChangesHandler(RADBBusListener): self._changedCondition.notifyAll() def onTaskUpdated(self, old_task, new_task): - '''onTaskUpdated is called upon receiving a TaskUpdated message. - :param task: dictionary with the updated task''' - new_task['starttime'] = new_task['starttime'].datetime() - new_task['endtime'] = new_task['endtime'].datetime() - task_change = {'changeType':CHANGE_UPDATE_TYPE, 'objectType':'task', 'value':new_task} + '''onTaskUpdated is called upon receiving a TaskUpdated message.''' + #ignore old_task and new_task, which miss some properties via this update mechanism + #get task with all expected properties via radbrpc + task = self._radbrpc.getTask(new_task['id']) + task_change = {'changeType':CHANGE_UPDATE_TYPE, 'objectType':'task', 'value':task} self._handleChange(task_change) def onTaskInserted(self, task): '''onTaskInserted is called upon receiving a TaskInserted message. :param task: dictionary with the inserted task''' - task['starttime'] = task['starttime'].datetime() - task['endtime'] = task['endtime'].datetime() + #ignore old_task and new_task, which miss some properties via this update mechanism + #get task with all expected properties via radbrpc + task = self._radbrpc.getTask(task['id']) updateTaskMomDetails(task, self._momqueryrpc) task_change = {'changeType':CHANGE_INSERT_TYPE, 'objectType':'task', 'value':task} self._handleChange(task_change) diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py index 7a040d9c6bffd4c1e03b183259844eb6e56b9d37..8b80f2d00accf07d921e10125e3088515909a6ae 100755 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py @@ -673,7 +673,7 @@ def main(): global momqueryrpc momqueryrpc = MoMQueryRPC(busname=options.mom_query_busname, servicename=options.mom_query_servicename, timeout=2.5, broker=options.broker) global radbchangeshandler - radbchangeshandler = RADBChangesHandler(options.radb_notification_busname, subjects=options.radb_notification_subjects, broker=options.broker, momqueryrpc=momqueryrpc) + radbchangeshandler = RADBChangesHandler(options.radb_notification_busname, subjects=options.radb_notification_subjects, broker=options.broker, momqueryrpc=momqueryrpc, radbrpc=rarpc) with radbchangeshandler, rarpc, curpc, sqrpc, momrpc, momqueryrpc: '''Start the webserver'''