X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FMethods%2FDeletePersonFromSlice.py;h=d36a1c37eddf1bed166318251c023bf2124a70a3;hb=49b6557372cb6cf7251755f8170e0fc884eddf88;hp=bca374c578bd839c4e6cd843a8298d365fef929a;hpb=d4c363a3ee55334eacd91f303adf6ecc20055d1e;p=plcapi.git diff --git a/PLC/Methods/DeletePersonFromSlice.py b/PLC/Methods/DeletePersonFromSlice.py index bca374c..d36a1c3 100644 --- a/PLC/Methods/DeletePersonFromSlice.py +++ b/PLC/Methods/DeletePersonFromSlice.py @@ -1,3 +1,5 @@ +# $Id$ +# $URL$ from PLC.Faults import * from PLC.Method import Method from PLC.Parameter import Parameter, Mixed @@ -25,22 +27,25 @@ class DeletePersonFromSlice(Method): returns = Parameter(int, '1 if successful') - def call(self, auth, person_id_or_email, slice_id_or_name): # Get account information persons = Persons(self.api, [person_id_or_email]) if not persons: raise PLCInvalidArgument, "No such account" - person = persons[0] # Get slice information slices = Slices(self.api, [slice_id_or_name]) if not slices: raise PLCInvalidArgument, "No such slice" - slice = slices[0] + # N.B. Allow foreign users to be added to local slices and + # local users to be added to foreign slices (and, of course, + # local users to be added to local slices). + if person['peer_id'] is not None and slice['peer_id'] is not None: + raise PLCInvalidArgument, "Cannot delete foreign users from foreign slices" + # If we are not admin, make sure the caller is a pi # of the site associated with the slice if 'admin' not in self.caller['roles']: @@ -50,6 +55,7 @@ class DeletePersonFromSlice(Method): if slice['slice_id'] in person['slice_ids']: slice.remove_person(person) - self.object_ids = [slice['slice_id']] + self.event_objects = {'Slice': [slice['slice_id']], + 'Person': [person['person_id']]} return 1