2013-05-20 74 views
1

作爲一個集成測試的一部分,我在一個子文件夾中創建文檔:如何使用CMIS repo.query temp文件夾

class CmisTestBase(unittest.TestCase): 
    def setUp(self): 
     """ Create a root test folder for the test. """ 
     logger.debug("Creating client") 
     self.cmis_client = CmisClient(REPOSITORY_URL, USERNAME, PASSWORD) 
     logger.debug("Getting default repo") 
     self.repo = self.cmis_client.getDefaultRepository() 
     logger.debug("Getting root folder") 
     self.root_folder = self.repo.getObjectByPath(TEST_ROOT_PATH) 
     logger.debug("Creating test folder") 
     self.folder_name = ".".join(['cmislib', self.__class__.__name__, str(time.time())]) 
     self.test_folder = self.root_folder.createFolder(self.folder_name) 

    def tearDown(self): 
     """ Clean up after the test. """ 
     logger.debug("Deleting test folder") 
     self.test_folder.deleteTree() 

而在我的測試中,我創建文檔,然後測試,我可以查詢他們使用repo.query

class SearchNoauth(SearchTest): 
    def setUp(self): 
     super(SearchNoauth, self).setUp() 

    def tearDown(self): 
     super(SearchNoauth, self).tearDown() 

    def test_noauth_empty(self): 
     logger.debug("Calling test_noauth_empty") 
     # Create a single document 
     self.create_document_simple() 
     # Retrieve all documents (No argument passed) 
     response = self.client.profile_noauth() 
     self.assertEqual(response.status_code, 200) 
     result_data = response.json() 
     logger.debug("results: {0}".format(pformat(result_data, indent=4))) 
     self.assertEqual(len(result_data), 1) 

但儘可能接近我所知道的,在測試的範圍內創建我的自定義內容不被發現,因爲默認回購不搜索test文件夾。

我期望的API:

  • 允許對搜索的文件夾(不只是一個回購)或

  • 支持語法在特定文件夾找對象

如何構建在文件夾中找到匹配的自定義文檔的CMIS查詢?


多一點:

  • self.client.profile_noauth是一個Python客戶端庫
  • profile_noauth方法的調用命中一個金字塔服務器
  • 一個聚合多種服務,包括露天,
  • 並最終針對Alfresco默認存儲庫調用repo.query

這個問題很多都是如何修改外觀服務的CMIS查詢來查找文件夾。我想I may have an answer。其基本思想是讓該文件夾的ID和使用in_folder()

>>> folder = repo.getObjectByPath('/Sites/test-site-1/documentLibrary') 
>>> query = """ 
     select cmis:objectId, cmis:name 
     from cmis:document 
     where in_folder('%s') 
     order by cmis:lastModificationDate desc 
    """ % folder.id 

回答

3

你在帖子中回答了這個問題。如果要查詢特定文件夾中的文檔,則可以使用in folder子句,並且需要您要搜索的文件夾的ID。

+0

我應該補充說,如果你想查詢文件夾和文件夾的後代,你應該使用in_tree()而不是in_folder()。 –

相關問題