"support user created slice conf files"
authorTony Mack <tmack@cs.princeton.edu>
Tue, 21 Oct 2008 19:42:38 +0000 (19:42 +0000)
committerTony Mack <tmack@cs.princeton.edu>
Tue, 21 Oct 2008 19:42:38 +0000 (19:42 +0000)
PLC/Methods/GetConfFiles.py

index 89d5250..2c7c18a 100644 (file)
@@ -15,7 +15,7 @@ class GetConfFiles(Method):
     details will be returned.
     """
 
-    roles = ['admin', 'node']
+    roles = ['admin', 'node', 'pi', 'user']
 
     accepts = [
         Auth(),
@@ -28,4 +28,19 @@ class GetConfFiles(Method):
 
 
     def call(self, auth, conf_file_filter = None, return_fields = None):
-        return ConfFiles(self.api, conf_file_filter, return_fields)
+        if 'node' in self.caller['roles']:
+           return ConfFiles(self.api, conf_file_filter, return_fields)
+       else:
+           if isinstance(self.caller, Person) and \
+               'admin' not in self.caller['roles']:
+                   if conf_file_filter is None:
+                       conf_file_filter = {'site_id': self.caller['site_ids']}
+
+       conf_files = ConfFiles(self.api, conf_file_filter, return_fields)
+       
+        # Filter out accounts that are not viewable
+        if isinstance(self.caller, ConfFiles) and \
+           'admin' not in self.caller['roles']:
+            conf_files = filter(lambda id: id in self.caller['site_ids'] , conf_files)
+       
+       return conf_files