changes to the DB are committed at once, rather than once at the end of the job
[plcapi.git] / PLC / Methods / UpdateSliceAttribute.py
index 81096a4..3c21403 100644 (file)
@@ -3,6 +3,7 @@ from PLC.Method import Method
 from PLC.Parameter import Parameter, Mixed
 from PLC.SliceAttributes import SliceAttribute, SliceAttributes
 from PLC.Slices import Slice, Slices
 from PLC.Parameter import Parameter, Mixed
 from PLC.SliceAttributes import SliceAttribute, SliceAttributes
 from PLC.Slices import Slice, Slices
+from PLC.InitScripts import InitScript, InitScripts
 from PLC.Auth import Auth
 
 class UpdateSliceAttribute(Method):
 from PLC.Auth import Auth
 
 class UpdateSliceAttribute(Method):
@@ -22,7 +23,8 @@ class UpdateSliceAttribute(Method):
     accepts = [
         Auth(),
         SliceAttribute.fields['slice_attribute_id'],
     accepts = [
         Auth(),
         SliceAttribute.fields['slice_attribute_id'],
-        SliceAttribute.fields['value']
+       Mixed(SliceAttribute.fields['value'],
+              InitScript.fields['name'])
         ]
 
     returns = Parameter(int, '1 if successful')
         ]
 
     returns = Parameter(int, '1 if successful')
@@ -32,13 +34,11 @@ class UpdateSliceAttribute(Method):
         if not slice_attributes:
             raise PLCInvalidArgument, "No such slice attribute"
         slice_attribute = slice_attributes[0]
         if not slice_attributes:
             raise PLCInvalidArgument, "No such slice attribute"
         slice_attribute = slice_attributes[0]
-       PLCCheckLocalSliceAttribute(slice_attribute,"UpdateSliceAttribute")
 
         slices = Slices(self.api, [slice_attribute['slice_id']])
         if not slices:
             raise PLCInvalidArgument, "No such slice"
         slice = slices[0]
 
         slices = Slices(self.api, [slice_attribute['slice_id']])
         if not slices:
             raise PLCInvalidArgument, "No such slice"
         slice = slices[0]
-       PLCCheckLocalSlice(slice,"UpdateSliceAttribute")
 
         assert slice_attribute['slice_attribute_id'] in slice['slice_attribute_ids']
 
 
         assert slice_attribute['slice_attribute_id'] in slice['slice_attribute_ids']
 
@@ -53,8 +53,13 @@ class UpdateSliceAttribute(Method):
             if slice_attribute['min_role_id'] is not None and \
                min(self.caller['role_ids']) > slice_attribute['min_role_id']:
                 raise PLCPermissionDenied, "Not allowed to update the specified attribute"
             if slice_attribute['min_role_id'] is not None and \
                min(self.caller['role_ids']) > slice_attribute['min_role_id']:
                 raise PLCPermissionDenied, "Not allowed to update the specified attribute"
+       
+       if slice_attribute['tagname'] in ['initscript']:
+            initscripts = InitScripts(self.api, {'enabled': True, 'name': value})
+            if not initscripts:
+                raise PLCInvalidArgument, "No such plc initscript"     
 
 
-        slice_attribute['value'] = value
+        slice_attribute['value'] = unicode(value)
         slice_attribute.sync()
         slice_attribute.sync()
-       self.object_ids = [slice_attribute['slice_attribute_id']]
+       self.event_objects = {'SliceAttribute': [slice_attribute['slice_attribute_id']]}
         return 1
         return 1