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
我應該補充說,如果你想查詢文件夾和文件夾的後代,你應該使用in_tree()而不是in_folder()。 –