diff --git a/transfer_service/db_connector.py b/transfer_service/db_connector.py index cbe8a3d3689fe26c7f3d0fae1a1053bb4a3b6fef..a47254ce1452deee0d0d2813c4fb9d0ae8653b0f 100644 --- a/transfer_service/db_connector.py +++ b/transfer_service/db_connector.py @@ -85,6 +85,48 @@ class DbConnector(object): conn.rollback() print(e) return result[0]["creator_id"] + + def getGroupRead(self, vospacePath): + """Returns the 'group_read' for a given VOSpace path representing a node.""" + with self.getConnection() as conn: + try: + cursor = conn.cursor(cursor_factory = RealDictCursor) + cursor.execute(""" + SELECT unnest(group_read) as group_read + FROM node_vos_path nvp + JOIN node n ON nvp.node_id = n.node_id + WHERE vos_path = %s; + """, + (vospacePath,)) + result = cursor.fetchall() + except Exception as e: + if not conn.closed: + conn.rollback() + print(e) + for i in range(0, len(result)): + result[i]["group_read"] = result[i]["group_read"].split("people.")[-1].replace("\\", "") + return result + + def getGroupWrite(self, vospacePath): + """Returns the 'group_write' for a given VOSpace path representing a node.""" + with self.getConnection() as conn: + try: + cursor = conn.cursor(cursor_factory = RealDictCursor) + cursor.execute(""" + SELECT unnest(group_write) as group_write + FROM node_vos_path nvp + JOIN node n ON nvp.node_id = n.node_id + WHERE vos_path = %s; + """, + (vospacePath,)) + result = cursor.fetchall() + except Exception as e: + if not conn.closed: + conn.rollback() + print(e) + for i in range(0, len(result)): + result[i]["group_write"] = result[i]["group_write"].split("people.")[-1].replace("\\", "") + return result def getOSPath(self, vospacePath): """Returns a list containing full path, storage type and username for a VOSpace path."""