From a049bf8840c2c2c72b7a90a373f2fa642ddd2f4a Mon Sep 17 00:00:00 2001 From: Mark Huang <mlhuang@cs.princeton.edu> Date: Wed, 18 Oct 2006 20:36:36 +0000 Subject: [PATCH] fix slice check --- PLC/Methods/GetSliceAttributes.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/PLC/Methods/GetSliceAttributes.py b/PLC/Methods/GetSliceAttributes.py index be646c86..f69d86b7 100644 --- a/PLC/Methods/GetSliceAttributes.py +++ b/PLC/Methods/GetSliceAttributes.py @@ -33,14 +33,20 @@ class GetSliceAttributes(Method): # If we are not admin, make sure to only return our own slice # and sliver attributes. if 'admin' not in self.caller['roles']: + # Get list of slices that we are able to view + slices = Slices(self.api, self.caller['slice_ids']).values() + if 'pi' in self.caller['roles']: + sites = Sites(self.api, self.caller['site_ids']).values() + slices += Slices(self.api, sites['slice_ids']).values() + + valid_slice_attribute_ids = set() + for slice in slices: + valid_slice_attribute_ids = valid_slice_attribute_ids.union(slice['slice_attribute_ids']) + if not slice_attribute_ids: - slice_attribute_ids = [] - slices = Slices(self.api, self.caller['slice_ids']).values() - if 'pi' in self.caller['roles']: - sites = Sites(self.api, self.caller['site_ids']).values() - slices += Slices(self.api, sites['slice_ids']).values() - for slice in slices: - slice_attribute_ids = set(slice_attribute_ids).union(slice['slice_attribute_ids']) + slice_attribute_ids = valid_slice_attribute_ids + else: + slice_attribute_ids = valid_slice_attribute_ids.intersection(slice_attribute_ids) slice_attributes = SliceAttributes(self.api, slice_attribute_ids).values() -- 2.47.0