- if self.caller['person_id'] in slice['person_ids']:
- pass
- elif 'pi' not in self.caller['roles']:
- raise PLCPermissionDenied, "Not a member of the specified slice"
- elif slice['site_id'] not in self.caller['site_ids']:
- raise PLCPermissionDenied, "Specified slice not associated with any of your sites"
-
- if slice_attribute_id_list is None:
- slice_attribute_id_list = slice['slice_attribute_ids']
- else:
- if set(slice_attribute_id_list).intersection(slice['slice_attribute_ids']) != \
- set(slice_attribute_id_list):
- raise PLCInvalidArgument, "Invalid slice attribute ID(s)"
-
- slice_attributes = SliceAttributes(self.api, slice_attribute_id_list).values()
- # turn each slice attribute into a real dict
- slice_attributes = [dict(slice_attribute) \
- for slice_attribute in slice_attributes]
+ 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_attributes = SliceAttributes(self.api, slice_attribute_ids).values()
+
+ slice_attributes = [dict(slice_attribute) for slice_attribute in slice_attributes]