def _process_special_query(query): """ Processes the given special query; returns a list of resource ids matching the query; ids are the INTERNAL Django ids, not the StorageObject identifiers!!! """ query_type, resource_id = query.split(":") # get resource try: res = resourceInfoType_model.objects.get( storage_object__identifier=resource_id) except resourceInfoType_model.DoesNotExist: LOGGER.info('Ignoring unknown storage identifier "%s" in "%s" query.', resource_id, query_type) return [] # get related resources if query_type == MORE_FROM_SAME_CREATORS: rel_res = get_more_from_same_creators(res) elif query_type == MORE_FROM_SAME_PROJECTS: rel_res = get_more_from_same_projects(res) else: LOGGER.info('Ignoring unknown special query type "%s".', query_type) return [] # return internal ids from related resources return [x.id for x in rel_res]
def test_project(self): self.assertEquals(0, len(get_more_from_same_projects(self.res_1))) self.assertEquals(1, len(get_more_from_same_projects(self.res_2))) self.assertEquals(1, len(get_more_from_same_projects(self.res_3))) self.assertEquals(2, len(get_more_from_same_projects(self.res_4))) self.assertEquals(0, len(get_more_from_same_projects(self.res_5)))