diff options
author | WuKong <rebirthmonkey@gmail.com> | 2015-08-10 14:28:27 +0200 |
---|---|---|
committer | WuKong <rebirthmonkey@gmail.com> | 2015-08-10 14:28:27 +0200 |
commit | 67c5b73910f5fc437429c356978081b252a59480 (patch) | |
tree | 42357eb328f6ad366a42ab3f2af68b545bb153ae /keystone-moon/keystone/contrib | |
parent | b7666a6b98b4f935f0eb95826aa43610521ed6dc (diff) |
review code
Change-Id: Ie3be0aa22331803a9e2ef8837f8637bb762ae720
Signed-off-by: WuKong <rebirthmonkey@gmail.com>
Diffstat (limited to 'keystone-moon/keystone/contrib')
-rw-r--r-- | keystone-moon/keystone/contrib/moon/backends/sql.py | 26 | ||||
-rw-r--r-- | keystone-moon/keystone/contrib/moon/controllers.py | 49 | ||||
-rw-r--r-- | keystone-moon/keystone/contrib/moon/core.py | 285 |
3 files changed, 177 insertions, 183 deletions
diff --git a/keystone-moon/keystone/contrib/moon/backends/sql.py b/keystone-moon/keystone/contrib/moon/backends/sql.py index 5ceb5c5b..7a75af39 100644 --- a/keystone-moon/keystone/contrib/moon/backends/sql.py +++ b/keystone-moon/keystone/contrib/moon/backends/sql.py @@ -877,6 +877,13 @@ class IntraExtensionConnector(IntraExtensionDriver): # Getter and Setter for sub_meta_rule + def get_aggregation_algorithm_dict(self, intra_extension_id): + with sql.transaction() as session: + query = session.query(AggregationAlgorithm) + query = query.filter_by(intra_extension_id=intra_extension_id) + ref = query.first() + return {ref.id: ref.aggregation_algorithm} + def set_aggregation_algorithm_dict(self, intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict): with sql.transaction() as session: query = session.query(AggregationAlgorithm) @@ -898,19 +905,12 @@ class IntraExtensionConnector(IntraExtensionDriver): session.flush() return self.get_aggregation_algorithm_dict(intra_extension_id) - def get_aggregation_algorithm_dict(self, intra_extension_id): - with sql.transaction() as session: - query = session.query(AggregationAlgorithm) - query = query.filter_by(intra_extension_id=intra_extension_id) - ref = query.first() - return {ref.id: ref.aggregation_algorithm} - - def del_aggregation_algorithm(self, intra_extension_id, aggregation_algorithm_id): - with sql.transaction() as session: - query = session.query(AggregationAlgorithm) - query = query.filter_by(intra_extension_id=intra_extension_id, id=aggregation_algorithm_id) - ref = query.first() - session.delete(ref) + # def del_aggregation_algorithm(self, intra_extension_id, aggregation_algorithm_id): + # with sql.transaction() as session: + # query = session.query(AggregationAlgorithm) + # query = query.filter_by(intra_extension_id=intra_extension_id, id=aggregation_algorithm_id) + # ref = query.first() + # session.delete(ref) # Getter and Setter for sub_meta_rule diff --git a/keystone-moon/keystone/contrib/moon/controllers.py b/keystone-moon/keystone/contrib/moon/controllers.py index 46590892..8a950e7a 100644 --- a/keystone-moon/keystone/contrib/moon/controllers.py +++ b/keystone-moon/keystone/contrib/moon/controllers.py @@ -193,7 +193,7 @@ class IntraExtensions(controller.V3Controller): subject_category_dict = dict() subject_category_dict['name'] = kw.get('subject_category_name', None) subject_category_dict['description'] = kw.get('subject_category_description', None) - return self.admin_api.add_subject_category(user_id, intra_extension_id, subject_category_dict) + return self.admin_api.add_subject_category_dict(user_id, intra_extension_id, subject_category_dict) @controller.protected() def get_subject_category(self, context, **kw): @@ -217,7 +217,7 @@ class IntraExtensions(controller.V3Controller): subject_category_dict = dict() subject_category_dict['name'] = kw.get('subject_category_name', None) subject_category_dict['description'] = kw.get('subject_category_description', None) - return self.admin_api.set_subject_category(user_id, intra_extension_id, subject_category_id, subject_category_dict) + return self.admin_api.set_subject_category_dict(user_id, intra_extension_id, subject_category_id, subject_category_dict) @controller.protected() def get_object_categories(self, context, **kw): @@ -232,7 +232,7 @@ class IntraExtensions(controller.V3Controller): object_category_dict = dict() object_category_dict['name'] = kw.get('object_category_name', None) object_category_dict['description'] = kw.get('object_category_description', None) - return self.admin_api.add_object_category(user_id, intra_extension_id, object_category_dict) + return self.admin_api.add_object_category_dict(user_id, intra_extension_id, object_category_dict) @controller.protected() def get_object_category(self, context, **kw): @@ -256,7 +256,7 @@ class IntraExtensions(controller.V3Controller): object_category_dict = dict() object_category_dict['name'] = kw.get('object_category_name', None) object_category_dict['description'] = kw.get('object_category_description', None) - return self.admin_api.set_object_category(user_id, intra_extension_id, object_category_id, object_category_dict) + return self.admin_api.set_object_category_dict(user_id, intra_extension_id, object_category_id, object_category_dict) @controller.protected() def get_action_categories(self, context, **kw): @@ -271,7 +271,7 @@ class IntraExtensions(controller.V3Controller): action_category_dict = dict() action_category_dict['name'] = kw.get('action_category_name', None) action_category_dict['description'] = kw.get('action_category_description', None) - return self.admin_api.add_action_category(user_id, intra_extension_id, action_category_dict) + return self.admin_api.add_action_category_dict(user_id, intra_extension_id, action_category_dict) @controller.protected() def get_action_category(self, context, **kw): @@ -295,7 +295,7 @@ class IntraExtensions(controller.V3Controller): action_category_dict = dict() action_category_dict['name'] = kw.get('action_category_name', None) action_category_dict['description'] = kw.get('action_category_description', None) - return self.admin_api.set_action_category(user_id, intra_extension_id, action_category_id, action_category_dict) + return self.admin_api.set_action_category_dict(user_id, intra_extension_id, action_category_id, action_category_dict) # Perimeter functions @controller.protected() @@ -310,7 +310,7 @@ class IntraExtensions(controller.V3Controller): intra_extension_id = kw.get('intra_extension_id', None) subject_dict = dict() subject_dict['name'] = kw.get('subject_name', None) - subject_dict['description'] = kw.get('description', None) + subject_dict['description'] = kw.get('subject_description', None) return self.admin_api.add_subject_dict(user_id, intra_extension_id, subject_dict) @controller.protected() @@ -357,7 +357,7 @@ class IntraExtensions(controller.V3Controller): user_id = self._get_user_id_from_token(context.get('token_id')) intra_extension_id = kw.get('intra_extension_id', None) object_id = kw.get('object_id', None) - return self.admin_api.get_objects_dict(user_id, intra_extension_id, object_id) + return self.admin_api.get_object_dict(user_id, intra_extension_id, object_id) @controller.protected() def del_object(self, context, **kw): @@ -396,7 +396,7 @@ class IntraExtensions(controller.V3Controller): user_id = self._get_user_id_from_token(context.get('token_id')) intra_extension_id = kw.get('intra_extension_id', None) action_id = kw.get('action_id', None) - return self.admin_api.get_actions_dict(user_id, intra_extension_id, action_id) + return self.admin_api.get_action_dict(user_id, intra_extension_id, action_id) @controller.protected() def del_action(self, context, **kw): @@ -483,7 +483,7 @@ class IntraExtensions(controller.V3Controller): intra_extension_id = kw.get('intra_extension_id', None) object_category_id = kw.get('object_category_id', None) object_scope_id = kw.get('object_scope_id', None) - return self.admin_api.get_object_scopes_dict(user_id, intra_extension_id, object_category_id, object_scope_id) + return self.admin_api.get_object_scope_dict(user_id, intra_extension_id, object_category_id, object_scope_id) @controller.protected() def del_object_scope(self, context, **kw): @@ -527,7 +527,7 @@ class IntraExtensions(controller.V3Controller): intra_extension_id = kw.get('intra_extension_id', None) action_category_id = kw.get('action_category_id', None) action_scope_id = kw.get('action_scope_id', None) - return self.admin_api.get_action_scopes_dict(user_id, intra_extension_id, action_category_id, action_scope_id) + return self.admin_api.get_action_scope_dict(user_id, intra_extension_id, action_category_id, action_scope_id) @controller.protected() def del_action_scope(self, context, **kw): @@ -583,7 +583,7 @@ class IntraExtensions(controller.V3Controller): object_id = kw.get('object_id', None) object_category_id = kw.get('object_category_id', None) object_scope_id = kw.get('object_scope_id', None) - return self.admin_api.add_objecty_assignment_list(user_id, intra_extension_id, object_id, object_category_id, object_scope_id) + return self.admin_api.add_object_assignment_list(user_id, intra_extension_id, object_id, object_category_id, object_scope_id) @controller.protected() def get_object_assignment(self, context, **kw): @@ -629,19 +629,22 @@ class IntraExtensions(controller.V3Controller): self.admin_api.del_action_assignment(user_id, intra_extension_id, action_id, action_category_id, action_scope_id) # Metarule functions + @controller.protected() - def set_aggregation_algorithm(self, context, **kw): + def get_aggregation_algorithm(self, context, **kw): user_id = self._get_user_id_from_token(context.get('token_id')) intra_extension_id = kw.get('intra_extension_id', None) - aggregation_algorithm_id = kw.get('aggregation_algorithm_id', None) - aggregation_algorithm_dict = kw.get('aggregation_algorithm_dict', None) - return self.admin_api.set_aggregation_algorithm_dict(user_id, intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict) + return self.admin_api.get_aggregation_algorithm_dict(user_id, intra_extension_id) @controller.protected() - def get_aggregation_algorithm(self, context, **kw): + def set_aggregation_algorithm(self, context, **kw): user_id = self._get_user_id_from_token(context.get('token_id')) intra_extension_id = kw.get('intra_extension_id', None) - return self.admin_api.get_aggregation_algorithms_dict(user_id, intra_extension_id) + aggregation_algorithm_id = kw.get('aggregation_algorithm_id', None) + aggregation_algorithm_dict = dict() + aggregation_algorithm_dict['name'] = kw.get('aggregation_algorithm_name', None) + aggregation_algorithm_dict['description'] = kw.get('aggregation_algorithm_description', None) + return self.admin_api.set_aggregation_algorithm_dict(user_id, intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict) @controller.protected() def get_sub_meta_rules(self, context, **kw): @@ -666,12 +669,12 @@ class IntraExtensions(controller.V3Controller): user_id = self._get_user_id_from_token(context.get('token_id')) intra_extension_id = kw.get('intra_extension_id', None) sub_meta_rule_id = kw.get('sub_meta_rule_id', None) - return self.admin_api.get_sub_meta_rules_dict(user_id, intra_extension_id, sub_meta_rule_id) + return self.admin_api.get_sub_meta_rule_dict(user_id, intra_extension_id, sub_meta_rule_id) @controller.protected() def del_sub_meta_rule(self, context, **kw): user_id = self._get_user_id_from_token(context.get('token_id')) - intra_extension_id = kw.get('intra_extension_id') + intra_extension_id = kw.get('intra_extension_id', None) sub_meta_rule_id = kw.get('sub_meta_rule_id', None) self.admin_api.del_sub_meta_rule(user_id, intra_extension_id, sub_meta_rule_id) @@ -706,7 +709,7 @@ class IntraExtensions(controller.V3Controller): object_category_list = kw.get('object_categories', []) action_category_list = kw.get('action_categories', []) rule_list = subject_category_list + action_category_list + object_category_list - return self.admin_api.add_rule_list(user_id, intra_extension_id, sub_meta_rule_id, rule_list) + return self.admin_api.add_rule_dict(user_id, intra_extension_id, sub_meta_rule_id, rule_list) @controller.protected() def get_rule(self, context, **kw): @@ -714,7 +717,7 @@ class IntraExtensions(controller.V3Controller): intra_extension_id = kw.get('intra_extension_id', None) sub_meta_rule_id = kw.get('sub_meta_rule_id', None) rule_id = kw.get('rule_id', None) - return self.admin_api.get_rules_dict(user_id, intra_extension_id, sub_meta_rule_id, rule_id) + return self.admin_api.get_rule_dict(user_id, intra_extension_id, sub_meta_rule_id, rule_id) @controller.protected() def del_rule(self, context, **kw): @@ -735,7 +738,7 @@ class IntraExtensions(controller.V3Controller): object_category_list = kw.get('object_categories', []) action_category_list = kw.get('action_categories', []) rule_list = subject_category_list + action_category_list + object_category_list - return self.admin_api.set_rule_list(user_id, intra_extension_id, sub_meta_rule_id, rule_id, rule_list) + return self.admin_api.set_rule_dict(user_id, intra_extension_id, sub_meta_rule_id, rule_id, rule_list) @dependency.requires('authz_api') diff --git a/keystone-moon/keystone/contrib/moon/core.py b/keystone-moon/keystone/contrib/moon/core.py index 33f80b59..d82c9fcc 100644 --- a/keystone-moon/keystone/contrib/moon/core.py +++ b/keystone-moon/keystone/contrib/moon/core.py @@ -908,7 +908,7 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce(("read", "write"), "subject_categories") - def add_subject_category(self, user_id, intra_extension_id, subject_category_dict): + def add_subject_category_dict(self, user_id, intra_extension_id, subject_category_dict): subject_categories_dict = self.driver.get_subject_categories_dict(intra_extension_id) for subject_category_id in subject_categories_dict: if subject_categories_dict[subject_category_id]['name'] == subject_category_dict['name']: @@ -917,11 +917,11 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce("read", "subject_categories") - def get_subject_category(self, user_id, intra_extension_id, subject_category_id): - subject_category_dict = self.driver.get_subject_categories_dict(intra_extension_id) - if subject_category_id not in subject_category_dict: + def get_subject_category_dict(self, user_id, intra_extension_id, subject_category_id): + subject_categories_dict = self.driver.get_subject_categories_dict(intra_extension_id) + if subject_category_id not in subject_categories_dict: raise SubjectCategoryUnknown() - return subject_category_dict[subject_category_id] + return subject_categories_dict[subject_category_id] @filter_input @enforce(("read", "write"), "subject_categories") @@ -941,25 +941,20 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce(("read", "write"), "subject_categories") - def set_subject_category(self, user_id, intra_extension_id, subject_category_id, subject_category_dict): + def set_subject_category_dict(self, user_id, intra_extension_id, subject_category_id, subject_category_dict): if subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): raise SubjectCategoryUnknown() return self.driver.set_subject_category_dict(intra_extension_id, subject_category_id, subject_category_dict) @filter_input @enforce("read", "object_categories") - def get_object_category_dict(self, user_id, intra_extension_id): - """ - :param user_id: - :param intra_extension_id: - :return: - """ + def get_object_categories_dict(self, user_id, intra_extension_id): return self.driver.get_object_categories_dict(intra_extension_id) @filter_input @enforce(("read", "write"), "object_categories") @enforce(("read", "write"), "object_scopes") - def add_object_category(self, user_id, intra_extension_id, object_category_dict): + def add_object_category_dict(self, user_id, intra_extension_id, object_category_dict): object_categories_dict = self.driver.get_object_categories_dict(intra_extension_id) for object_category_id in object_categories_dict: if object_categories_dict[object_category_id]["name"] == object_category_dict['name']: @@ -968,11 +963,11 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce("read", "object_categories") - def get_object_category(self, user_id, intra_extension_id, object_category_id): - object_category_dict = self.driver.get_object_categories_dict(intra_extension_id) - if object_category_id not in object_category_dict: + def get_object_category_dict(self, user_id, intra_extension_id, object_category_id): + object_categories_dict = self.driver.get_object_categories_dict(intra_extension_id) + if object_category_id not in object_categories_dict: raise ObjectCategoryUnknown() - return object_category_dict[object_category_id] + return object_categories_dict[object_category_id] @filter_input @enforce(("read", "write"), "object_categories") @@ -991,19 +986,21 @@ class IntraExtensionManager(manager.Manager): self.driver.del_object_category(intra_extension_id, object_category_id) @filter_input + @enforce(("read", "write"), "object_categories") + def set_object_category_dict(self, user_id, intra_extension_id, object_category_id, object_category_dict): + if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): + raise ObjectCategoryUnknown() + return self.driver.set_object_category_dict(intra_extension_id, object_category_id, object_category_dict) + + @filter_input @enforce("read", "action_categories") - def get_action_category_dict(self, user_id, intra_extension_id): - """ - :param user_id: - :param intra_extension_id: - :return: - """ + def get_action_categories_dict(self, user_id, intra_extension_id): return self.driver.get_action_categories_dict(intra_extension_id) @filter_input @enforce(("read", "write"), "action_categories") @enforce(("read", "write"), "action_scopes") - def add_action_category(self, user_id, intra_extension_id, action_category_dict): + def add_action_category_dict(self, user_id, intra_extension_id, action_category_dict): action_categories_dict = self.driver.get_action_categories_dict(intra_extension_id) for action_category_id in action_categories_dict: if action_categories_dict[action_category_id]['name'] == action_category_dict['name']: @@ -1012,11 +1009,11 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce("read", "action_categories") - def get_action_category(self, user_id, intra_extension_id, action_category_id): - action_category_dict = self.driver.get_action_categories_dict(intra_extension_id) - if action_category_id not in action_category_dict: + def get_action_category_dict(self, user_id, intra_extension_id, action_category_id): + action_categories_dict = self.driver.get_action_categories_dict(intra_extension_id) + if action_category_id not in action_categories_dict: raise ActionCategoryUnknown() - return self.driver.get_action_categories_dict(intra_extension_id)[action_category_id] + return action_categories_dict[action_category_id] @filter_input @enforce(("read", "write"), "action_categories") @@ -1033,6 +1030,13 @@ class IntraExtensionManager(manager.Manager): self.driver.del_action_assignment(intra_extension_id, action_id, action_category_id, assignment_id) self.driver.del_action_category(intra_extension_id, action_category_id) + @filter_input + @enforce(("read", "write"), "action_categories") + def set_action_category_dict(self, user_id, intra_extension_id, action_category_id, action_category_dict): + if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): + raise ActionCategoryUnknown() + return self.driver.set_action_category_dict(intra_extension_id, action_category_id, action_category_dict) + # Perimeter functions @filter_input @@ -1056,10 +1060,10 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce("read", "subjects") def get_subject_dict(self, user_id, intra_extension_id, subject_id): - subject_dict = self.driver.get_subjects_dict(intra_extension_id) - if subject_id in subject_dict: + subjects_dict = self.driver.get_subjects_dict(intra_extension_id) + if subject_id not in subjects_dict: raise SubjectUnknown() - return subject_dict[subject_id] + return subjects_dict[subject_id] @filter_input @enforce(("read", "write"), "subjects") @@ -1093,34 +1097,25 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce(("read", "write"), "objects") - def add_object_dict(self, user_id, intra_extension_id, object_name): - object_dict = self.driver.get_objects_dict(intra_extension_id) - for object_id in object_dict: - if object_dict[object_id]["name"] == object_name: - raise ObjectNameExisting() - return self.driver.set_object_dict(intra_extension_id, uuid4().hex, object_name) - - @filter_input - @enforce(("read", "write"), "objects") - def set_object_dict(self, user_id, intra_extension_id, object_id, object_dict): + def add_object_dict(self, user_id, intra_extension_id, object_dict): objects_dict = self.driver.get_objects_dict(intra_extension_id) for object_id in objects_dict: if objects_dict[object_id]["name"] == object_dict['name']: raise ObjectNameExisting() - return self.driver.set_object_dict(intra_extension_id, object_id, object_dict) + return self.driver.set_object_dict(intra_extension_id, uuid4().hex, object_dict) @filter_input @enforce("read", "objects") def get_object_dict(self, user_id, intra_extension_id, object_id): - object_dict = self.driver.get_objects_dict(intra_extension_id) - if object_id in object_dict: + objects_dict = self.driver.get_objects_dict(intra_extension_id) + if object_id not in objects_dict: raise ObjectUnknown() - return object_dict[object_id] + return objects_dict[object_id] @filter_input @enforce(("read", "write"), "objects") def del_object(self, user_id, intra_extension_id, object_id): - if object_id in self.driver.get_objects_dict(intra_extension_id): + if object_id not in self.driver.get_objects_dict(intra_extension_id): raise ObjectUnknown() # Destroy assignments related to this category for object_category_id in self.driver.get_object_categories_dict(intra_extension_id): @@ -1130,40 +1125,40 @@ class IntraExtensionManager(manager.Manager): self.driver.del_object(intra_extension_id, object_id) @filter_input + @enforce(("read", "write"), "objects") + def set_object_dict(self, user_id, intra_extension_id, object_id, object_dict): + objects_dict = self.driver.get_objects_dict(intra_extension_id) + for object_id in objects_dict: + if objects_dict[object_id]["name"] == object_dict['name']: + raise ObjectNameExisting() + return self.driver.set_object_dict(intra_extension_id, object_id, object_dict) + + @filter_input @enforce("read", "actions") def get_actions_dict(self, user_id, intra_extension_id): return self.driver.get_actions_dict(intra_extension_id) @filter_input @enforce(("read", "write"), "actions") - def add_action_dict(self, user_id, intra_extension_id, action_name): - action_dict = self.driver.get_actions_dict(intra_extension_id) - for action_id in action_dict: - if action_dict[action_id]["name"] == action_name: - raise ActionNameExisting() - return self.driver.set_action_dict(intra_extension_id, uuid4().hex, action_name) - - @filter_input - @enforce(("read", "write"), "actions") - def set_action_dict(self, user_id, intra_extension_id, action_id, action_dict): + def add_action_dict(self, user_id, intra_extension_id, action_dict): actions_dict = self.driver.get_actions_dict(intra_extension_id) for action_id in actions_dict: if actions_dict[action_id]["name"] == action_dict['name']: raise ActionNameExisting() - return self.driver.set_action_dict(intra_extension_id, action_id, action_dict) + return self.driver.set_action_dict(intra_extension_id, uuid4().hex, action_dict) @filter_input @enforce("read", "actions") def get_action_dict(self, user_id, intra_extension_id, action_id): - action_dict = self.driver.get_actions_dict(intra_extension_id) - if action_id in action_dict: + actions_dict = self.driver.get_actions_dict(intra_extension_id) + if action_id not in actions_dict: raise ActionUnknown() - return action_dict[action_id] + return actions_dict[action_id] @filter_input @enforce(("read", "write"), "actions") def del_action(self, user_id, intra_extension_id, action_id): - if action_id in self.driver.get_actions_dict(intra_extension_id): + if action_id not in self.driver.get_actions_dict(intra_extension_id): raise ActionUnknown() # Destroy assignments related to this category for action_category_id in self.driver.get_action_categories_dict(intra_extension_id): @@ -1172,6 +1167,15 @@ class IntraExtensionManager(manager.Manager): self.driver.del_action_assignment(intra_extension_id, _action_id, action_category_id, assignment_id) return self.driver.del_action(intra_extension_id, action_id) + @filter_input + @enforce(("read", "write"), "actions") + def set_action_dict(self, user_id, intra_extension_id, action_id, action_dict): + actions_dict = self.driver.get_actions_dict(intra_extension_id) + for action_id in actions_dict: + if actions_dict[action_id]["name"] == action_dict['name']: + raise ActionNameExisting() + return self.driver.set_action_dict(intra_extension_id, action_id, action_dict) + # Scope functions @filter_input @@ -1205,8 +1209,7 @@ class IntraExtensionManager(manager.Manager): for _subject_scope_id in subject_scopes_dict: if subject_scope_dict['name'] == subject_scopes_dict[_subject_scope_id]['name']: raise SubjectScopeNameExisting() - subject_scope_id = uuid4().hex - return self.driver.set_subject_scope_dict(intra_extension_id, subject_category_id, subject_scope_id, subject_scope_dict) + return self.driver.set_subject_scope_dict(intra_extension_id, subject_category_id, uuid4().hex, subject_scope_dict) @filter_input @enforce("read", "subject_scopes") @@ -1237,17 +1240,17 @@ class IntraExtensionManager(manager.Manager): for rule_id in rules_dict: if subject_scope_id in rules_dict[rule_id]: self.driver.del_rule(intra_extension_id, sub_meta_rule_id, rule_id) - return self.driver.del_subject_scope(intra_extension_id, subject_category_id, subject_scope_id) + self.driver.del_subject_scope(intra_extension_id, subject_category_id, subject_scope_id) @filter_input @enforce(("read", "write"), "subject_scopes") @enforce("read", "subject_categories") - def set_subject_scope_dict(self, user_id, intra_extension_id, subject_category_id, subject_scope_id, subject_scope_name): + def set_subject_scope_dict(self, user_id, intra_extension_id, subject_category_id, subject_scope_id, subject_scope_dict): if subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): raise SubjectCategoryUnknown() - subject_scope_dict = self.driver.get_subject_scopes_dict(intra_extension_id, subject_category_id) - for _subject_scope_id in subject_scope_dict: - if subject_scope_name == subject_scope_dict[_subject_scope_id]['name']: + subject_scopes_dict = self.driver.get_subject_scopes_dict(intra_extension_id, subject_category_id) + for _subject_scope_id in subject_scopes_dict: + if subject_scopes_dict[_subject_scope_id]['name'] == subject_scope_dict['name']: raise SubjectScopeNameExisting() return self.driver.set_subject_scope_dict(intra_extension_id, subject_category_id, subject_scope_id, subject_scope_dict) @@ -1262,19 +1265,14 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce(("read", "write"), "object_scopes") @enforce("read", "object_categories") - def add_object_scope_dict(self, user_id, intra_extension_id, object_category_id, object_scope_name): + def add_object_scope_dict(self, user_id, intra_extension_id, object_category_id, object_scope_dict): if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): raise ObjectCategoryUnknown() - object_scope_dict = self.driver.get_object_scopes_dict(intra_extension_id, object_category_id) - for _object_scope_id in object_scope_dict: - if object_scope_name == object_scope_dict[_object_scope_id]['name']: + object_scopes_dict = self.driver.get_object_scopes_dict(intra_extension_id, object_category_id) + for _object_scope_id in object_scopes_dict: + if object_scopes_dict[_object_scope_id]['name'] == object_scope_dict['name']: raise ObjectScopeNameExisting() - object_scope_id = uuid4().hex - return self.driver.set_object_scope_dict( - intra_extension_id, - object_category_id, - object_scope_id, - object_scope_name) + return self.driver.set_object_scope_dict(intra_extension_id, object_category_id, uuid4().hex, object_scope_dict) @filter_input @enforce("read", "object_scopes") @@ -1282,10 +1280,10 @@ class IntraExtensionManager(manager.Manager): def get_object_scope_dict(self, user_id, intra_extension_id, object_category_id, object_scope_id): if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): raise ObjectCategoryUnknown() - object_scopte_dict = self.driver.get_object_scopes_dict(intra_extension_id, object_category_id) - if object_scope_id not in object_scopte_dict: + object_scopes_dict = self.driver.get_object_scopes_dict(intra_extension_id, object_category_id) + if object_scope_id not in object_scopes_dict: raise ObjectScopeUnknown() - return object_scopte_dict[object_scope_id] + return object_scopes_dict[object_scope_id] @filter_input @enforce(("read", "write"), "object_scopes") @@ -1305,17 +1303,17 @@ class IntraExtensionManager(manager.Manager): for rule_id in rules_dict: if object_scope_id in rules_dict[rule_id]: self.driver.del_rule(intra_extension_id, sub_meta_rule_id, rule_id) - return self.driver.del_object_scope(intra_extension_id, object_category_id, object_scope_id) + self.driver.del_object_scope(intra_extension_id, object_category_id, object_scope_id) @filter_input @enforce(("read", "write"), "object_scopes") @enforce("read", "object_categories") - def set_object_scope_dict(self, user_id, intra_extension_id, object_category_id, object_scope_id, object_scope_name): + def set_object_scope_dict(self, user_id, intra_extension_id, object_category_id, object_scope_id, object_scope_dict): if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): raise ObjectCategoryUnknown() - object_scope_dict = self.driver.get_object_scopes_dict(intra_extension_id, object_category_id) - for _object_scope_id in object_scope_dict: - if object_scope_name == object_scope_dict[_object_scope_id]['name']: + object_scopes_dict = self.driver.get_object_scopes_dict(intra_extension_id, object_category_id) + for _object_scope_id in object_scopes_dict: + if object_scopes_dict[_object_scope_id]['name'] == object_scope_dict['name']: raise ObjectScopeNameExisting() return self.driver.set_object_scope_dict(intra_extension_id, object_category_id, object_scope_id, object_scope_dict) @@ -1330,19 +1328,14 @@ class IntraExtensionManager(manager.Manager): @filter_input @enforce(("read", "write"), "action_scopes") @enforce("read", "action_categories") - def add_action_scope_dict(self, user_id, intra_extension_id, action_category_id, action_scope_name): + def add_action_scope_dict(self, user_id, intra_extension_id, action_category_id, action_scope_dict): if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): raise ActionCategoryUnknown() - action_scope_dict = self.driver.get_action_scopes_dict(intra_extension_id, action_category_id) - for _action_scope_id in action_scope_dict: - if action_scope_name == action_scope_dict[_action_scope_id]['name']: + action_scopes_dict = self.driver.get_action_scopes_dict(intra_extension_id, action_category_id) + for _action_scope_id in action_scopes_dict: + if action_scopes_dict[_action_scope_id]['name'] == action_scope_dict['name']: raise ActionScopeNameExisting() - action_scope_id = uuid4().hex - return self.driver.set_action_scope_dict( - intra_extension_id, - action_category_id, - action_scope_id, - action_scope_name) + return self.driver.set_action_scope_dict(intra_extension_id, action_category_id, uuid4().hex, action_scope_dict) @filter_input @enforce("read", "action_scopes") @@ -1350,10 +1343,10 @@ class IntraExtensionManager(manager.Manager): def get_action_scope_dict(self, user_id, intra_extension_id, action_category_id, action_scope_id): if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): raise ActionCategoryUnknown() - action_scopte_dict = self.driver.get_action_scopes_dict(intra_extension_id, action_category_id) - if action_scope_id not in action_scopte_dict: + action_scopes_dict = self.driver.get_action_scopes_dict(intra_extension_id, action_category_id) + if action_scope_id not in action_scopes_dict: raise ActionScopeUnknown() - return action_scopte_dict[action_scope_id] + return action_scopes_dict[action_scope_id] @filter_input @enforce(("read", "write"), "action_scopes") @@ -1373,23 +1366,19 @@ class IntraExtensionManager(manager.Manager): for rule_id in rules_dict: if action_scope_id in rules_dict[rule_id]: self.driver.del_rule(intra_extension_id, sub_meta_rule_id, rule_id) - return self.driver.del_action_scope(intra_extension_id, action_category_id, action_scope_id) + self.driver.del_action_scope(intra_extension_id, action_category_id, action_scope_id) @filter_input @enforce(("read", "write"), "action_scopes") @enforce("read", "action_categories") - def set_action_scope_dict(self, user_id, intra_extension_id, action_category_id, action_scope_id, action_scope_name): + def set_action_scope_dict(self, user_id, intra_extension_id, action_category_id, action_scope_id, action_scope_dict): if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): raise ActionCategoryUnknown() - action_scope_dict = self.driver.get_action_scopes_dict(intra_extension_id, action_category_id) - for _action_scope_id in action_scope_dict: - if action_scope_name == action_scope_dict[_action_scope_id]['name']: + action_scopes_dict = self.driver.get_action_scopes_dict(intra_extension_id, action_category_id) + for _action_scope_id in action_scopes_dict: + if action_scopes_dict[_action_scope_id]['name'] == action_scope_dict['name']: raise ActionScopeNameExisting() - return self.driver.set_action_scope_dict( - intra_extension_id, - action_category_id, - action_scope_id, - action_scope_name) + return self.driver.set_action_scope_dict(intra_extension_id, action_category_id, action_scope_id, action_scope_dict) # Assignment functions @@ -1398,9 +1387,18 @@ class IntraExtensionManager(manager.Manager): @enforce("read", "subjects") @enforce("read", "subject_categories") def get_subject_assignment_list(self, user_id, intra_extension_id, subject_id, subject_category_id): + """ + :param user_id: + :param intra_extension_id: + :param subject_id: + :param subject_category_id: + :return: [ + subject_scope_id1, ..., subject_scope_idn + ] + """ if subject_id not in self.driver.get_subjects_dict(intra_extension_id): raise SubjectUnknown() - elif subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): + if subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): raise SubjectCategoryUnknown() return self.driver.get_subject_assignment_list(intra_extension_id, subject_id, subject_category_id) @@ -1410,14 +1408,13 @@ class IntraExtensionManager(manager.Manager): @enforce("read", "subject_categories") @enforce("read", "subject_scopes") def add_subject_assignment_list(self, user_id, intra_extension_id, subject_id, subject_category_id, subject_scope_id): - print(subject_id, self.driver.get_subjects_dict(intra_extension_id)) if subject_id not in self.driver.get_subjects_dict(intra_extension_id): raise SubjectUnknown() if subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): raise SubjectCategoryUnknown() if subject_scope_id not in self.driver.get_subject_scopes_dict(intra_extension_id, subject_category_id): raise SubjectScopeUnknown() - if subject_scope_id in self.driver.get_subject_assignment_list(intra_extension_id, subject_id, subject_category_id): + elif subject_scope_id in self.driver.get_subject_assignment_list(intra_extension_id, subject_id, subject_category_id): raise SubjectAssignmentExisting() return self.driver.add_subject_assignment_list(intra_extension_id, subject_id, subject_category_id, subject_scope_id) @@ -1429,9 +1426,9 @@ class IntraExtensionManager(manager.Manager): def del_subject_assignment(self, user_id, intra_extension_id, subject_id, subject_category_id, subject_scope_id): if subject_id not in self.driver.get_subjects_dict(intra_extension_id): raise SubjectUnknown() - elif subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): + if subject_category_id not in self.driver.get_subject_categories_dict(intra_extension_id): raise SubjectCategoryUnknown() - elif subject_scope_id not in self.driver.get_subject_scopes_dict(intra_extension_id, subject_category_id): + if subject_scope_id not in self.driver.get_subject_scopes_dict(intra_extension_id, subject_category_id): raise SubjectScopeUnknown() elif subject_scope_id not in self.driver.get_subject_assignment_list(intra_extension_id, subject_id, subject_category_id): raise SubjectAssignmentUnknown() @@ -1444,7 +1441,7 @@ class IntraExtensionManager(manager.Manager): def get_object_assignment_list(self, user_id, intra_extension_id, object_id, object_category_id): if object_id not in self.driver.get_objects_dict(intra_extension_id): raise ObjectUnknown() - elif object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): + if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): raise ObjectCategoryUnknown() return self.driver.get_object_assignment_list(intra_extension_id, object_id, object_category_id) @@ -1455,9 +1452,9 @@ class IntraExtensionManager(manager.Manager): def add_object_assignment_list(self, user_id, intra_extension_id, object_id, object_category_id, object_scope_id): if object_id not in self.driver.get_objects_dict(intra_extension_id): raise ObjectUnknown() - elif object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): + if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): raise ObjectCategoryUnknown() - elif object_scope_id not in self.driver.get_object_scopes_dict(intra_extension_id, object_category_id): + if object_scope_id not in self.driver.get_object_scopes_dict(intra_extension_id, object_category_id): raise ObjectScopeUnknown() elif object_scope_id in self.driver.get_object_assignment_list(intra_extension_id, object_id, object_category_id): raise ObjectAssignmentExisting() @@ -1471,9 +1468,9 @@ class IntraExtensionManager(manager.Manager): def del_object_assignment(self, user_id, intra_extension_id, object_id, object_category_id, object_scope_id): if object_id not in self.driver.get_objects_dict(intra_extension_id): raise ObjectUnknown() - elif object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): + if object_category_id not in self.driver.get_object_categories_dict(intra_extension_id): raise ObjectCategoryUnknown() - elif object_scope_id not in self.driver.get_object_scopes_dict(intra_extension_id, object_category_id): + if object_scope_id not in self.driver.get_object_scopes_dict(intra_extension_id, object_category_id): raise ObjectScopeUnknown() elif object_scope_id not in self.driver.get_object_assignment_list(intra_extension_id, object_id, object_category_id): raise ObjectAssignmentUnknown() @@ -1486,7 +1483,7 @@ class IntraExtensionManager(manager.Manager): def get_action_assignment_list(self, user_id, intra_extension_id, action_id, action_category_id): if action_id not in self.driver.get_actions_dict(intra_extension_id): raise ActionUnknown() - elif action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): + if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): raise ActionCategoryUnknown() return self.driver.get_action_assignment_list(intra_extension_id, action_id, action_category_id) @@ -1497,9 +1494,9 @@ class IntraExtensionManager(manager.Manager): def add_action_assignment_list(self, user_id, intra_extension_id, action_id, action_category_id, action_scope_id): if action_id not in self.driver.get_actions_dict(intra_extension_id): raise ActionUnknown() - elif action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): + if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): raise ActionCategoryUnknown() - elif action_scope_id not in self.driver.get_action_scopes_dict(intra_extension_id, action_category_id): + if action_scope_id not in self.driver.get_action_scopes_dict(intra_extension_id, action_category_id): raise ActionScopeUnknown() elif action_scope_id in self.driver.get_action_assignment_list(intra_extension_id, action_id, action_category_id): raise ObjectAssignmentExisting() @@ -1513,27 +1510,17 @@ class IntraExtensionManager(manager.Manager): def del_action_assignment(self, user_id, intra_extension_id, action_id, action_category_id, action_scope_id): if action_id not in self.driver.get_actions_dict(intra_extension_id): raise ActionUnknown() - elif action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): + if action_category_id not in self.driver.get_action_categories_dict(intra_extension_id): raise ActionCategoryUnknown() - elif action_scope_id not in self.driver.get_action_scopes_dict(intra_extension_id, action_category_id): + if action_scope_id not in self.driver.get_action_scopes_dict(intra_extension_id, action_category_id): raise ActionScopeUnknown() elif action_scope_id not in self.driver.get_action_assignment_list(intra_extension_id, action_id, action_category_id): raise ActionAssignmentUnknown() - return self.driver.del_action_assignment(intra_extension_id, action_id, action_category_id, action_scope_id) + self.driver.del_action_assignment(intra_extension_id, action_id, action_category_id, action_scope_id) # Metarule functions @filter_input - @enforce(("read", "write"), "aggregation_algorithm") - def set_aggregation_algorithm_dict(self, user_id, intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict): - if aggregation_algorithm_id: - if aggregation_algorithm_id not in self.configuration_api.get_aggregation_algorithms_dict(ADMIN_ID): - raise AggregationAlgorithmUnknown() - else: - aggregation_algorithm_id = uuid4().hex - return self.driver.set_aggregation_algorithm_dict(intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict) - - @filter_input @enforce("read", "aggregation_algorithm") def get_aggregation_algorithm_dict(self, user_id, intra_extension_id): """ @@ -1549,6 +1536,16 @@ class IntraExtensionManager(manager.Manager): return aggregation_algorithm_dict @filter_input + @enforce(("read", "write"), "aggregation_algorithm") + def set_aggregation_algorithm_dict(self, user_id, intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict): + if aggregation_algorithm_id: + if aggregation_algorithm_id not in self.configuration_api.get_aggregation_algorithms_dict(ADMIN_ID): + raise AggregationAlgorithmUnknown() + else: + aggregation_algorithm_id = uuid4().hex + return self.driver.set_aggregation_algorithm_dict(intra_extension_id, aggregation_algorithm_id, aggregation_algorithm_dict) + + @filter_input @enforce("read", "sub_meta_rules") def get_sub_meta_rules_dict(self, user_id, intra_extension_id): """ @@ -1575,16 +1572,15 @@ class IntraExtensionManager(manager.Manager): for _sub_meta_rule_id in sub_meta_rules_dict: if sub_meta_rule_dict['name'] == sub_meta_rules_dict[_sub_meta_rule_id]["name"]: raise SubMetaRuleNameExisting() - elif sub_meta_rule_dict['subject_categories'] == sub_meta_rules_dict[_sub_meta_rule_id]["subject_categories"] and \ + if sub_meta_rule_dict['subject_categories'] == sub_meta_rules_dict[_sub_meta_rule_id]["subject_categories"] and \ sub_meta_rule_dict['object_categories'] == sub_meta_rules_dict[_sub_meta_rule_id]["object_categories"] and \ sub_meta_rule_dict['action_categories'] == sub_meta_rules_dict[_sub_meta_rule_id]["action_categories"] and \ sub_meta_rule_dict['algorithm'] == sub_meta_rules_dict[_sub_meta_rule_id]["algorithm"]: raise SubMetaRuleExisting() - algorithms = self.configuration_api.get_sub_meta_rule_algorithms_dict(user_id) - if sub_meta_rule_dict['algorithm'] not in algorithms.keys(): + if sub_meta_rule_dict['algorithm'] not in self.configuration_api.get_sub_meta_rule_algorithms_dict(user_id): raise SubMetaRuleAlgorithmNotExisting() sub_meta_rule_id = uuid4().hex - # TODO (dthom): add new sub-meta-rule to rule + # TODO (dthom): add new sub-meta-rule to rule dict # self.driver.add_rule(intra_extension_id, sub_meta_rule_id, []) return self.driver.set_sub_meta_rule_dict(intra_extension_id, sub_meta_rule_id, sub_meta_rule_dict) @@ -1612,8 +1608,6 @@ class IntraExtensionManager(manager.Manager): def set_sub_meta_rule_dict(self, user_id, intra_extension_id, sub_meta_rule_id, sub_meta_rule_dict): if sub_meta_rule_id not in self.driver.get_sub_meta_rules_dict(intra_extension_id): raise SubMetaRuleUnknown() - # TODO (dthom): add new sub-meta-rule to rule - # self.driver.add_rule(intra_extension_id, sub_meta_rule_id, []) return self.driver.set_sub_meta_rule_dict(intra_extension_id, sub_meta_rule_id, sub_meta_rule_dict) # Rule functions @@ -1639,8 +1633,7 @@ class IntraExtensionManager(manager.Manager): raise SubMetaRuleUnknown() if rule_list in self.driver.get_rules_dict(intra_extension_id, sub_meta_rule_id).values(): raise RuleExisting() - rule_id = uuid4().hex - return self.driver.set_rule_dict(intra_extension_id, sub_meta_rule_id, rule_id, rule_list) + return self.driver.set_rule_dict(intra_extension_id, sub_meta_rule_id, uuid4().hex, rule_list) @filter_input @enforce("read", "sub_meta_rules") @@ -1659,8 +1652,7 @@ class IntraExtensionManager(manager.Manager): def del_rule(self, user_id, intra_extension_id, sub_meta_rule_id, rule_id): if sub_meta_rule_id not in self.driver.get_sub_meta_rules_dict(intra_extension_id): raise SubMetaRuleUnknown() - rules_dict = self.driver.get_rules_dict(intra_extension_id, sub_meta_rule_id) - if rule_id not in rules_dict: + if rule_id not in self.driver.get_rules_dict(intra_extension_id, sub_meta_rule_id): raise RuleUnknown() self.driver.del_rule(intra_extension_id, sub_meta_rule_id, rule_id) @@ -1670,8 +1662,7 @@ class IntraExtensionManager(manager.Manager): def set_rule_dict(self, user_id, intra_extension_id, sub_meta_rule_id, rule_id, rule_list): if sub_meta_rule_id not in self.driver.get_sub_meta_rules_dict(intra_extension_id): raise SubMetaRuleUnknown() - rules_dict = self.driver.get_rules_dict(intra_extension_id, sub_meta_rule_id) - if rule_id not in rules_dict: + if rule_id not in self.driver.get_rules_dict(intra_extension_id, sub_meta_rule_id): raise RuleUnknown() return self.driver.set_rule_dict(intra_extension_id, sub_meta_rule_id, rule_id, rule_list) |