merge from head - 1.21
[plcapi.git] / PLC / Methods / GetSlices.py
index 61f61c0..b2ddfde 100644 (file)
@@ -3,6 +3,7 @@ from PLC.Parameter import Parameter, Mixed
 from PLC.Filter import Filter
 from PLC.Auth import Auth
 from PLC.Persons import Person, Persons
 from PLC.Filter import Filter
 from PLC.Auth import Auth
 from PLC.Persons import Person, Persons
+from PLC.Sites import Site, Sites
 from PLC.Slices import Slice, Slices
 
 class GetSlices(Method):
 from PLC.Slices import Slice, Slices
 
 class GetSlices(Method):
@@ -30,7 +31,6 @@ class GetSlices(Method):
         ]
 
     returns = [Slice.fields]
         ]
 
     returns = [Slice.fields]
-    
 
     def call(self, auth, slice_filter = None, return_fields = None):
        # If we are not admin, make sure to return only viewable
 
     def call(self, auth, slice_filter = None, return_fields = None):
        # If we are not admin, make sure to return only viewable
@@ -50,6 +50,13 @@ class GetSlices(Method):
             if slice_filter is None:
                 slice_filter = valid_slice_ids
 
             if slice_filter is None:
                 slice_filter = valid_slice_ids
 
+        # Must query at least slice_id (see below)
+        if return_fields is not None and 'slice_id' not in return_fields:
+            return_fields.append('slice_id')
+            added_fields = True
+        else:
+            added_fields = False
+
         slices = Slices(self.api, slice_filter, return_fields)
 
         # Filter out slices that are not viewable
         slices = Slices(self.api, slice_filter, return_fields)
 
         # Filter out slices that are not viewable
@@ -57,4 +64,9 @@ class GetSlices(Method):
            'admin' not in self.caller['roles']:
             slices = filter(lambda slice: slice['slice_id'] in valid_slice_ids, slices)
 
            'admin' not in self.caller['roles']:
             slices = filter(lambda slice: slice['slice_id'] in valid_slice_ids, slices)
 
+        # Remove slice_id if not specified
+        if added_fields:
+            for slice in slices:
+                del slice['slice_id']
+
         return slices
         return slices