diff --git a/src/caosdb/connection/streaminghttp.py b/src/caosdb/connection/streaminghttp.py index 85aa710a1ab3964735671513b61ebb6bc82745c8..01774301b9bdb55bdbf6b56695042aaf354dba97 100644 --- a/src/caosdb/connection/streaminghttp.py +++ b/src/caosdb/connection/streaminghttp.py @@ -72,13 +72,10 @@ class StreamingHTTPSConnection(client.HTTPSConnection, object): def __init__(self, socket_proxy=None, **kwargs): if socket_proxy is not None: - print("socket_proxy:" + socket_proxy) host, port = socket_proxy.split(":") socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, host, int(port)) socket.socket = socks.socksocket - else: - print("no socket_proxy") super(StreamingHTTPSConnection, self).__init__(**kwargs) def _send_output(self, body, **kwargs): diff --git a/src/caosdb/utils/caosdb_admin.py b/src/caosdb/utils/caosdb_admin.py index 24335d2b1d705f87181c5dc7f055abf2854f2b27..97a791578528c5cd5a2de5dfb83289e1062f2343 100755 --- a/src/caosdb/utils/caosdb_admin.py +++ b/src/caosdb/utils/caosdb_admin.py @@ -35,9 +35,9 @@ from argparse import ArgumentParser from argparse import RawDescriptionHelpFormatter __all__ = [] -__version__ = 0.2 +__version__ = 0.3 __date__ = '2016-09-19' -__updated__ = '2017-08-30' +__updated__ = '2018-12-11' def do_update_role(args): @@ -98,7 +98,7 @@ def do_insert(args): reconnect=True, query_dict=fdict, body=xml) - db.Container._response_to_entities(ret) + print(db.Container._response_to_entities(ret)) def _promt_for_pw(): @@ -216,6 +216,22 @@ def do_deny_role_permissions(args): perms.add(d) admin._set_permissions(role=args.role_name, permission_rules=perms) +def do_retrieve_entity_acl(args): + entities = db.execute_query(q=args.query, flags={"ACL": None}) + for entity in entities: + print(entity.id) + print(entity.acl) + +def do_action_entity_permissions(args): + entities = db.execute_query(q=args.query, flags={"ACL": None}) + for entity in entities: + for p in args.permissions: + getattr(entity, args.action)(role=args.role, priority=args.priority, + permission=p) + entities.update(flags={"ACL": None}) + for entity in entities: + print(entity.id) + print(entity.acl) def main(argv=None): """Command line options.""" @@ -233,14 +249,8 @@ def main(argv=None): program_shortdesc = __import__('__main__').__doc__ program_license = '''%s - Created by timm fitschen on %s. - Copyright 2016 BMPG. All rights reserved. - - Distributed on an "AS IS" basis without warranties - or conditions of any kind, either express or implied. - USAGE -''' % (program_shortdesc, str(__date__)) +''' % (program_shortdesc) # Setup argument parser parser = ArgumentParser(description=program_license, @@ -532,6 +542,36 @@ USAGE metavar="ROLENAME", help="The name of the existing role.") + # entity acl + retrieve_entity_acl_parser = subparsers.add_parser( + "retrieve_entity_acl", help="Retrieve an entity ACL.") + retrieve_entity_acl_parser.set_defaults(call=do_retrieve_entity_acl) + retrieve_entity_acl_parser.add_argument(dest="query", metavar="QUERY", + help="A FIND query.") + + for action in ["grant", "deny", "revoke_denial", "revoke_grant"]: + action_entity_permissions_parser = subparsers.add_parser( + "{}_entity_permissions".format(action), + help="{} entity permissions to a role.".format(action)) + action_entity_permissions_parser.set_defaults( + call=do_action_entity_permissions, action=action) + action_entity_permissions_parser.add_argument(dest="query", metavar="QUERY", + help="A FIND query.") + action_entity_permissions_parser.add_argument(dest="role", metavar="ROLE", + help="The name of an exising role.") + action_entity_permissions_parser.add_argument( + dest="permissions", + metavar="PERMISSION", + help="A list of permissions", + nargs='+') + action_entity_permissions_parser.add_argument( + '--priority', + dest="priority", + action="store_true", + default=False, + help="This flag enables priority permission rules.") + + # Process arguments args = parser.parse_args()