def test_user_not_owner_cannot_perform_operation(self): self.mock_request.user = self.users["user"] with self.assertRaises(AccessControlError): data_structure_element_api.get_root_element( self.fixtures.data_structure_element_collection["1121"], self.mock_request, )
def _get_curate_datastructure_from_module_id(module_id, request): module_element = data_structure_element_api.get_by_id(module_id, request) data_structure_element = data_structure_element_api.get_root_element( module_element, request ) return curate_data_structure_api.get_by_data_structure_element_root_id( data_structure_element, request.user )
def test_superuser_can_perform_operation(self): self.mock_request.user = self.users["superuser"] result = data_structure_element_api.get_root_element( self.fixtures.data_structure_element_collection["1121"], self.mock_request ) self.assertEquals( result, self.fixtures.data_structure_element_collection["root"], )
def test_get_root_element_returns_root_for_root(self): # Arrange mock_request = Mock(spec=HttpRequest) mock_request.user = self.fixtures.default_owner_with_perm # Act result = data_structure_element_api.get_root_element( self.fixtures.data_structure_element_collection["root"], mock_request) # Assert self.assertEqual( result, self.fixtures.data_structure_element_collection["root"])
def test_get_root_element_return_same_root_for_elements_of_same_tree(self): # Arrange mock_request = Mock(spec=HttpRequest) mock_request.user = self.fixtures.default_owner_with_perm for element in self.fixtures.data_structure_element_collection.values( ): # Act result = data_structure_element_api.get_root_element( element, mock_request) # Assert self.assertEqual( result, self.fixtures.data_structure_element_collection["root"])
def test_get_root_element_return_same_root_for_elements_of_same_tree(self): for element in [ self.fixture.data_structure_element_root, self.fixture.data_structure_element_1, self.fixture.data_structure_element_2, self.fixture.data_structure_element_1_1, self.fixture.data_structure_element_1_1_1, self.fixture.data_structure_element_1_1_2, self.fixture.data_structure_element_1_1_3, self.fixture.data_structure_element_1_1_2_1 ]: # Act result = api_data_structure_element.get_root_element(element) # Assert self.assertEqual(result, self.fixture.data_structure_element_root) for element in [ self.fixture.data_structure_element_root_2, self.fixture.data_structure_element_test ]: # Act result = api_data_structure_element.get_root_element(element) # Assert self.assertEqual(result, self.fixture.data_structure_element_root_2)
def _retrieve_data(self, request): """ Args: request: Returns: """ data = "" if request.method == "GET": try: # get module id module_id = request.GET["module_id"] # get module element form module id module = data_structure_element_api.get_by_id( module_id, request) # get key id form module key_id = module.options["params"]["key"] # get XML document root element from module element root_element = data_structure_element_api.get_root_element( module, request) try: # get auto key manager from db auto_key = auto_key_api.get_by_root(root_element) except: # create auto key manager if doesn't exist auto_key = AutoKey(root=root_element) auto_key_api.upsert(auto_key) # if key id not already present in auto key manager if key_id not in list(auto_key.keys.keys()): # initialize key id entry auto_key.keys[key_id] = [] # if module id not already present in auto key manager if str(module_id) not in auto_key.keys[key_id]: # add module id to auto key manager auto_key.keys[key_id].append(str(module_id)) # update auto key auto_key_api.upsert(auto_key) # if data are present if "data" in request.GET: # set the key coming from data data = request.GET["data"] else: # get the list of values for this key values = [] module_ids = auto_key.keys[key_id] for key_module_id in module_ids: try: key_module = data_structure_element_api.get_by_id( key_module_id, request) if key_module.options["data"] is not None: values.append(key_module.options["data"]) except Exception as e: logger.warning( "_retrieve_data threw an exception: {0}". format(str(e))) # generate next key data = str(self.key_gen_func(values)) except Exception as e: raise ModuleError( "An unexpected error occurred in AutoKeyModule: " + str(e)) return data
def _retrieve_data(self, request): """Retrieve module's data Args: request: Returns: """ data = "" if request.method == "GET": # look for existing values try: # get module id module_id = request.GET["module_id"] # get module element from module id module = data_structure_element_api.get_by_id( module_id, request) # get keyref id in moduke keyref_id = module.options["params"]["keyref"] # get XML document root element root_element = data_structure_element_api.get_root_element( module, request) try: # get auto keyref manager by root auto_keyref = auto_keyref_api.get_by_root(root_element) except: # if auto keyref manager does not exist, create it auto_keyref = AutoKeyref(root=root_element) auto_keyref_api.upsert(auto_keyref) # if keyref id not already present if keyref_id not in list(auto_keyref.keyrefs.keys()): # initialize keyref entry auto_keyref.keyrefs[keyref_id] = [] # if module id not already registered if str(module_id) not in auto_keyref.keyrefs[keyref_id]: # add module id to keyref manager auto_keyref.keyrefs[keyref_id].append(str(module_id)) # update auto keyref auto_keyref_api.upsert(auto_keyref) # get key id from root element key_id = root_element.options["keyrefs"][keyref_id]["refer"] try: # get auto key auto_key = auto_key_api.get_by_root(root_element) # get list of module ids for the given key id modules_ids = auto_key.keys[key_id] except: # no auto key found, create an empty list of module ids modules_ids = [] self.values = [] for key_module_id in modules_ids: key_module = data_structure_element_api.get_by_id( key_module_id, request) if key_module.options["data"] is not None: self.values.append(key_module.options["data"]) # get data from request if "data" in request.GET: data = request.GET["data"] # get data from db elif "data" in module.options and module.options[ "data"] is not None: data = str(module.options["data"]) except Exception as e: raise ModuleError( "An unexpected error occurred in AutoKeyrefModule: " + str(e)) elif request.method == "POST": if "data" in request.POST: data = request.POST["data"] return data
def test_get_root_element_returns_root_for_root(self): # Act result = api_data_structure_element.get_root_element( self.fixture.data_structure_element_root) # Assert self.assertEqual(result, self.fixture.data_structure_element_root)