統合テストの一環として、サブフォルダーにドキュメントを作成します。
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)
しかし、私が知る限り、デフォルト リポジトリはテスト フォルダーを検索しないため、テストのスコープで作成されたカスタム コンテンツは見つかりません。
私はAPIを期待しています:
(レポだけでなく) フォルダーに対する検索を許可するか、
特定のフォルダー内のオブジェクトを検索するための構文をサポートする
フォルダー内の一致するカスタム ドキュメントを検索する CMIS クエリを作成するにはどうすればよいですか?
もうちょっと:
self.client.profile_noauth
profile_noauth
Python クライアント ライブラリのメソッドの呼び出しです。- Pyramid サーバーにヒットする
- Alfresco、
- 最終的に
repo.query
、Alfresco のデフォルト リポジトリに対して呼び出します。
この質問の多くは、ファサード サービスの CMIS クエリを変更してフォルダーを検索する方法です。
後で: 私は答えがあるかもしれないと思います. 基本的な考え方は、フォルダーの 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