diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py index 8c55a6cb86e4b5c16bd8a3005fdb3686804f23d3..7711d288bde9f5d33301ff7b1f510c981238c135 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py +++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py @@ -155,7 +155,7 @@ class RADatabase: raise KeyError('No such status: %s. Valid values are: %s' % (status_name, ', '.join(self.getResourceClaimStatusNames()))) - def getTasks(self, lower_bound=None, upper_bound=None, task_ids=None): + def getTasks(self, lower_bound=None, upper_bound=None, task_ids=None, task_status=None, task_type=None): query = '''SELECT * from resource_allocation.task_view''' conditions = [] @@ -177,6 +177,16 @@ class RADatabase: conditions.append('id in %s') qargs.append(tuple(task_ids)) + task_status, task_type = self._convertTaskTypeAndStatusToIds(task_status, task_type) + + if task_status is not None: + conditions.append('status_id = %s') + qargs.append(task_status) + + if task_type is not None: + conditions.append('type_id = %s') + qargs.append(task_type) + if conditions: query += ' WHERE ' + ' AND '.join(conditions) diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py b/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py index 0a3edb4b68f6352aed5092909d1ac1c5314a0ed4..0952869f376c9b1d622d8ec0f9c9b01e0df3fb28 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/rpc.py @@ -178,8 +178,8 @@ class RARPC(RPCWrapper): otdb_id=otdb_id, status=status) - def getTasks(self, lower_bound=None, upper_bound=None, task_ids=None): - tasks = self.rpc('GetTasks', lower_bound=lower_bound, upper_bound=upper_bound, task_ids=task_ids) + def getTasks(self, lower_bound=None, upper_bound=None, task_ids=None, task_status=None, task_type=None): + tasks = self.rpc('GetTasks', lower_bound=lower_bound, upper_bound=upper_bound, task_ids=task_ids, task_status=task_status, task_type=task_type) for task in tasks: task['starttime'] = task['starttime'].datetime() task['endtime'] = task['endtime'].datetime() diff --git a/SAS/ResourceAssignment/ResourceAssignmentService/service.py b/SAS/ResourceAssignment/ResourceAssignmentService/service.py index 4b4128f5b7b33d2f960d96ecbf9e74cc5c5c52c5..7409475f2d42992d70afefec20c5dd029a6485cb 100644 --- a/SAS/ResourceAssignment/ResourceAssignmentService/service.py +++ b/SAS/ResourceAssignment/ResourceAssignmentService/service.py @@ -221,7 +221,9 @@ class RADBHandler(MessageHandlerInterface): logger.info('GetTasks: %s' % dict({k:v for k,v in kwargs.items() if v != None})) return self.radb.getTasks(lower_bound=kwargs.get('lower_bound').datetime() if kwargs.get('lower_bound') else None, upper_bound=kwargs.get('upper_bound').datetime() if kwargs.get('upper_bound') else None, - task_ids=kwargs.get('task_ids')) + task_ids=kwargs.get('task_ids'), + task_status=kwargs.get('task_status'), + task_type=kwargs.get('task_type')) def _getTask(self, **kwargs): logger.info('GetTask: %s' % dict({k:v for k,v in kwargs.items() if v != None}))