From 6d724879a5ea883bdcfc9f6dcdf1a51edfc5b31b Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Tue, 6 Nov 2007 21:53:58 +0000 Subject: [PATCH] Rationalize: can now update aggregate values (conf_files, nodes) --- PLC/Methods/UpdateNodeGroup.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/PLC/Methods/UpdateNodeGroup.py b/PLC/Methods/UpdateNodeGroup.py index 78042be..c84c7f1 100644 --- a/PLC/Methods/UpdateNodeGroup.py +++ b/PLC/Methods/UpdateNodeGroup.py @@ -4,8 +4,10 @@ from PLC.Parameter import Parameter, Mixed from PLC.NodeGroups import NodeGroup, NodeGroups from PLC.Auth import Auth +related_fields = NodeGroup.related_fields.keys() can_update = lambda (field, value): field in \ - ['name', 'description'] + ['name', 'description'] + \ + related_fields class UpdateNodeGroup(Method): """ @@ -16,7 +18,7 @@ class UpdateNodeGroup(Method): roles = ['admin'] - nodegroup_fields = dict(filter(can_update, NodeGroup.fields.items())) + nodegroup_fields = dict(filter(can_update, NodeGroup.fields.items() + NodeGroup.related_fields.items())) accepts = [ Auth(), @@ -35,6 +37,12 @@ class UpdateNodeGroup(Method): if not nodegroups: raise PLCInvalidArgument, "No such nodegroup" nodegroup = nodegroups[0] + + # Make requested associations + for field in related_fields: + if field in nodegroup_fields: + nodegroup.associate(auth, field, nodegroup_fields[field]) + nodegroup_fields.pop(field) nodegroup.update(nodegroup_fields) nodegroup.sync() -- 2.43.0