From 10608ba2a8a1a1bcefd33ab8bf1020028bea6857 Mon Sep 17 00:00:00 2001 From: Mateusz Kurek Date: Fri, 10 Oct 2014 10:11:10 +0200 Subject: [PATCH] added only-calculated-in-scrooge filter to scrooge api --- src/ralph/util/api_scrooge.py | 11 ++++++++++- src/ralph/util/tests/tests.py | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/ralph/util/api_scrooge.py b/src/ralph/util/api_scrooge.py index eee0f51f6d..50aaaaf814 100644 --- a/src/ralph/util/api_scrooge.py +++ b/src/ralph/util/api_scrooge.py @@ -199,7 +199,7 @@ def get_owners(): } -def get_services(): +def get_services(only_calculated_in_scrooge=False): """ Returns Services (CIs with type Service) with additional information like owners, business line etc. @@ -210,6 +210,15 @@ def get_services(): for service in CI.objects.filter( type=service_type ).select_related('relations'): + try: + calculate_in_scrooge = service.ciattributevalue_set.get( + attribute_id=7 + ).value + except CIAttributeValue.DoesNotExist: + calculate_in_scrooge = False + if only_calculated_in_scrooge and not calculate_in_scrooge: + continue + profit_center = service.child.filter( parent__type=profit_center_type ).values_list('parent__id', flat=True) diff --git a/src/ralph/util/tests/tests.py b/src/ralph/util/tests/tests.py index 466e2b49d6..bbd95c54ca 100644 --- a/src/ralph/util/tests/tests.py +++ b/src/ralph/util/tests/tests.py @@ -267,6 +267,27 @@ def test_get_services_without_profit_center(self): } self.assertEquals(result, [service_dict]) + def test_get_services_calc_in_scrooge(self): + service = utils.ServiceFactory() + utils.ServiceFactory() # service not calculated in scrooge + calc_in_scrooge_attr = models_ci.CIAttribute.objects.get(pk=7) + service.ciattributevalue_set.create( + attribute=calc_in_scrooge_attr, + value=True + ) + result = [a for a in api_scrooge.get_services(True)] + service_dict = { + 'name': service.name, + 'ci_id': service.id, + 'ci_uid': service.uid, + 'symbol': None, + 'profit_center': None, + 'technical_owners': [], + 'business_owners': [], + 'environments': [], + } + self.assertEquals(result, [service_dict]) + class UncompressBase64DataTest(TestCase):