oops - missing file
authorThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 19 Nov 2010 11:25:28 +0000 (12:25 +0100)
committerThierry Parmentelat <thierry.parmentelat@sophia.inria.fr>
Fri, 19 Nov 2010 11:25:28 +0000 (12:25 +0100)
PLC/AuthorizeHelpers.py [new file with mode: 0644]

diff --git a/PLC/AuthorizeHelpers.py b/PLC/AuthorizeHelpers.py
new file mode 100644 (file)
index 0000000..9c3e666
--- /dev/null
@@ -0,0 +1,38 @@
+#
+# Thierry Parmentelat - INRIA
+#
+from PLC.Faults import *
+
+class AuthorizeHelpers:
+
+    @staticmethod
+    def interface_belongs_to_person (api,interface, person):
+        try:
+            node=api.GetNodes(interface['node_id'])[0]
+            return node_belong_to_person (api, node, person)
+        except:
+            return False
+
+    @staticmethod
+    def node_belongs_to_person (api, node, person):
+        try:
+            site=api.GetSites(node['site_id'])[0]
+            return person_belongs_to_site (api, person, site)
+        except:
+            return False
+
+    @staticmethod
+    def person_belongs_to_site (api, person, site):
+        return site['site_id'] in person['site_ids']
+
+    @staticmethod
+    def person_access_tag_type (api, person, tag_type):
+        return len(set(person['roles']).intersection(set(tag_type['roles'])))!=0
+
+    @staticmethod
+    def person_access_person (api, caller_person, subject_person):
+        # keep it simple for now - could be a bit more advanced for PIs maybe
+        return caller_person['person_id'] == subject_person['person_id']
+
+
+