Интеграция Showcase и Alfresco
Содержание
- 1 Класс AlfrescoManager
- 1.1 Функция login
- 1.2 Функция uploadFile
- 1.2.1 Примеры задания alfUploadParams
- 1.2.1.1 Загрузка файла на сайт
- 1.2.1.2 Загрузка файла в ноду
- 1.2.1.3 Загрузка нового файла (если в директории загрузки уже есть файл с таким названием, то имя файла будет немного измененным (например, name-1.ext))
- 1.2.1.4 Загрузка новой версии определенного файла (при этом, загружаемый файл может иметь другое имя)
- 1.2.1 Примеры задания alfUploadParams
- 1.3 Функция getFileMetaData
- 1.4 Функция setFileMetaData
- 1.5 Функция getFileVersions
- 1.6 Функция deleteFile
- 1.7 Функция createFolder
- 2 Примеры использования
- 2.1 Получение файла из Alfresco для отображения на странице
- 2.2 Получение определенной версии файла из Alfresco для отображения на странице
- 2.3 Загрузка файла в Alfresco
- 2.4 Получение метаданных файла из Alfresco
- 2.5 Задание метаданных файла в Alfresco
- 2.6 Получение версий файла из Alfresco
- 2.7 Удаление файла из Alfresco
- 2.8 Создание директории в Alfresco
Класс AlfrescoManager
Основной класс интеграции с Alfresco, находится в package ru.curs.showcase.util.alfresco. Ниже представлены функции этого класса
Функция login
AlfrescoLoginResult login(String alfURL, String alfUser, String alfPass)
Осуществляет логин пользователя в Alfresco и получает тикет для передачи в другие функции взаимодействия с Alfresco
Входные параметры
- alfURL - URL Alfresco,
- alfUser - пользователь Alfresco,
- alfPass - пароль пользователя Alfresco
Возвращает объект класса AlfrescoLoginResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке,
- String getTicket() - тикет для залогиненного пользователя
Функция uploadFile
AlfrescoUploadFileResult uploadFile(String fileName, InputStream file, String alfURL, String alfTicket, PyDictionary alfUploadParams)
Загружает файл в Alfresco
Входные параметры
- fileName - название файла,
- file - сам файл,
- alfURL - URL Alfresco,
- alfTicket - тикет, полученный в результате логина пользователя Alfresco, под которым будет загружен файл,
- alfUploadParams - параметры, определяющие как и куда именно будет загружен файл в Alfresco
Допустимы -- согласно документации Alfresco -- следующие значения параметров alfUploadParams:
- siteid - идентификатор сайта,
- containerid - идентификатор контейнера,
- uploaddirectory - директория загрузки,
- updatenoderef - идентификатор файла для обновления (в случае загрузки новой версии),
- description - описание загружаемого файла,
- contenttype - тип контента загружаемого файла,
- majorversion - major версия загружаемого файла,
- overwrite - переписать ли содержимое загружаемого файла,
- thumbnails - создавать ли thumbnail для загружаемого файла.
При этом, особенность Alfresco состоит в том, что не все эти параметры будут учитываться на стороне Alfresco при загрузке файла (похоже, зависит от версии Alfresco). Так, например, в версии 5.0.d Alfresco Community Edition не учитываются параметры majorversion, thumbnails.
Примеры задания alfUploadParams
Загрузка файла на сайт
alfUploadParams = {}
alfUploadParams["siteid"] = "demo"
alfUploadParams["containerid"] = "documentlibrary"
alfUploadParams["uploaddirectory"] = "/abc"
Файл будет загружен на сайт "demo", в "documentlibrary", в директорию "/abc"
Загрузка файла в ноду
alfUploadParams = {}
alfUploadParams["destination"] = "workspace://SpacesStore/8096d4bd-4e97-4c4d-9849-73275b722f0f"
alfUploadParams["uploaddirectory"] = "/folder1"
Файл будет загружен в ноду Alfresco "workspace://SpacesStore/8096d4bd-4e97-4c4d-9849-73275b722f0f", в директорию "/folder1"
Загрузка нового файла (если в директории загрузки уже есть файл с таким названием, то имя файла будет немного измененным (например, name-1.ext))
alfUploadParams = {}
alfUploadParams["overwrite"] = "no"
Загрузка новой версии определенного файла (при этом, загружаемый файл может иметь другое имя)
alfUploadParams = {}
alfUploadParams["updatenoderef"] = "workspace://SpacesStore/97cf8b94-0407-40ed-9582-711f4d42dfa0"
alfUploadParams["description"] = "Это комментарий44"
- updatenoderef - идентификатор файла в Alfresco, новая версия которого загружается,
- description - описание загружаемой версии.
Функция uploadFile возвращает объект класса AlfrescoUploadFileResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке,
- String getNodeRef() - координаты загруженного файла в Alfresco
Функция getFileMetaData
AlfrescoGetFileMetaDataResult getFileMetaData(String alfFileId, String alfURL, String alfTicket, String acceptLanguage)
Получает метаданные файла из Alfresco
Входные параметры
- alfFileId - идентификатор файла,
- alfURL - URL Alfresco,
- alfTicket - тикет, полученный в результате логина пользователя Alfresco,
- acceptLanguage - acceptLanguage броузера (выяснилось, что для разных acceptLanguage Alfresco хранит разные метаданные. Если этот параметр не задан или равен "", то будет использоваться acceptLanguage броузера по умолчанию).
Функция getFileMetaData возвращает объект класса AlfrescoGetFileMetaDataResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке,
- String getMetaData() - метаданные файла в формате json.
Функция setFileMetaData
AlfrescoSetFileMetaDataResult setFileMetaData(String alfFileId, String metaData, String alfURL, String alfTicket, String acceptLanguage)
Задает (обновляет) метаданные файла в Alfresco
Входные параметры
- alfFileId - идентификатор файла,
- metaData - метаданные файла,
- alfURL - URL Alfresco,
- alfTicket - тикет, полученный в результате логина пользователя Alfresco,
- acceptLanguage - acceptLanguage броузера (выяснилось, что для разных acceptLanguage Alfresco хранит разные метаданные. Если этот параметр не задан или равен "", то будет использоваться acceptLanguage броузера по умолчанию).
Функция setFileMetaData возвращает объект класса AlfrescoSetFileMetaDataResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке,
Функция getFileVersions
AlfrescoGetFileVersionsResult getFileVersions(String alfFileId, String alfURL, String alfTicket)
Получает версии файла из Alfresco
Входные параметры
- alfFileId - идентификатор файла,
- alfURL - URL Alfresco,
- alfTicket - тикет, полученный в результате логина пользователя Alfresco.
Функция getFileVersions возвращает объект класса AlfrescoGetFileVersionsResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке,
- String getVersions() - список версий файла в формате json.
Функция deleteFile
AlfrescoDeleteFileResult deleteFile(String alfFileId, String alfURL, String alfTicket)
Удаляет файл из Alfresco
Входные параметры
- alfFileId - идентификатор файла,
- alfURL - URL Alfresco,
- alfTicket - тикет, полученный в результате логина пользователя Alfresco, под которым будет загружен файл,
Функция deleteFile возвращает объект класса AlfrescoDeleteFileResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке.
Функция createFolder
AlfrescoCreateFolderResult createFolder(String alfParentFolderId, String alfCreateFolderParams, String alfURL, String alfTicket)
Создает новую директорию в Alfresco
Входные параметры
- alfParentFolderId - идентификатор родительской директории (той, в которой будет создана новая),
- alfCreateFolderParams - параметры создания новой директории (в формате json),
- alfURL - URL Alfresco,
- alfTicket - тикет, полученный в результате логина пользователя Alfresco.
Параметры создания новой директории alfCreateFolderParams
alfCreateFolderParams = unicode("{\"name\": \"Новая директория1\", \"title\": \"Заголовок новой директории1\", \"description\": \"Описание новой директории1\", \"type\": \"cm:folder\"}")
где
- name - название новой директории,
- title - заголовок новой директории,
- description - описание новой директории,
- type - тип создаваемой ноды (в данном случае, это директория, поэтому "cm:folder"). Данный параметр можно не указывать, в таком случае значение по умолчанию будет "cm:folder. Нужен для возможности задания специфических типов директорий, наследников от "cm:folder" (см. документацию по Alfresco).
Функция createFolder возвращает объект класса AlfrescoCreateFolderResult со следующими функциями:
- int getResult() - целочисленный признак успешности, значение 0 - успех, отличное от 0 - неудача,
- String getErrorMessage() - сообщение об ошибке,
- String getNodeRef() - координаты созданной директории в Alfresco
Для удаления, получения/задания метаданных директории можно использовать те же функции, что и для файла.
Примеры использования
Находятся в тестовом решении на Дженкинсе, перспектива celesta, пункт навигатора Alfresco
Получение файла из Alfresco для отображения на странице
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def webtext(context, main, add, filterinfo, session, elementId):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfTicket = ""
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
alfTicket = resultLogin.getTicket()
else:
context.error(resultLogin.getErrorMessage());
data = u'''
<h1>
<!-- Guest
<a href="#">
<img src="http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/SpacesStore/2c31a645-549c-4479-b939-9cd11cbf8f10?guest=true"
width="1100px" height="700px" alt="lorem"></img>
</a>
-->
<a href="#">
<img src="http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/SpacesStore/2c31a645-549c-4479-b939-9cd11cbf8f10?alf_ticket='''+alfTicket+'''"
width="1100px" height="700px" alt="lorem"></img>
</a>
</h1>
'''
settings = u'''
<properties>
<event name="single_click" linkId="testIdClient">
<action >
<main_context>Москва</main_context>
<client>
<activity id="activityClientID" name="showcaseShowAddContext">
<add_context>
add_context действия.
</add_context>
</activity>
</client>
</action>
</event>
<event name="single_click" linkId="testIdServer">
<action >
<main_context>Москва</main_context>
<server>
<activity id="activityServerID" name="g1.activity.simple.celesta">
<add_context>
add_context для действия
</add_context>
</activity>
</server>
</action>
</event>
</properties>
'''
return JythonDTO(data, settings)
При этом, файл может быть получен под пользователем Guest Alfresco, тогда в url файла должен быть добавлен параметр guest=true. А может быть получен под конкретным пользователем Alfresco, тогда сначала логинимся и получаем тикет, а после добавляем его в url файла: alf_ticket="TICKET_7ce821cf644e2fa2a1c004bf806e0bbd9c05f715"
Получение определенной версии файла из Alfresco для отображения на странице
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def webtextParticularVersion(context, main, add, filterinfo, session, elementId):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfTicket = ""
alfFileId = "97cf8b94-0407-40ed-9582-711f4d42dfa0"
alfVersionId = ""
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
alfTicket = resultLogin.getTicket()
resultGetFileVersions = AlfrescoManager.getFileVersions(alfFileId, alfURL, resultLogin.getTicket());
if resultGetFileVersions.getResult() == 0:
versions = resultGetFileVersions.getVersions()
# Далее на основе полученных версий, находим идентификатор нужной нам версии. Предположим, что это
alfVersionId = "b3984526-43e8-44d7-9ba5-b50318959750"
else:
context.error(resultGetFileVersions.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
data = u'''
<h1>
<a href="#" onclick="gwtWebTextFunc('${elementId}','testIdClient');">Показать сообщение (client activity)</a>
<br/>
<a href="#" onclick="gwtWebTextFunc('${elementId}','testIdServer');">Показать сообщение (server activity)</a>
<br/>
<a href="#">
<img src="http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/version2Store/'''+alfVersionId+'''?alf_ticket='''+alfTicket+'''"
width="1100px" height="700px" alt="lorem"></img>
</a>
</h1>
'''
settings = u'''
<properties>
<event name="single_click" linkId="testIdClient">
<action >
<main_context>Москва</main_context>
<client>
<activity id="activityClientID" name="showcaseShowAddContext">
<add_context>
add_context действия.
</add_context>
</activity>
</client>
</action>
</event>
<event name="single_click" linkId="testIdServer">
<action >
<main_context>Москва</main_context>
<server>
<activity id="activityServerID" name="g1.activity.simple.celesta">
<add_context>
add_context для действия
</add_context>
</activity>
</server>
</action>
</event>
</properties>
'''
return JythonDTO(data, settings)
Обратите, внимание, что, в отличие от получения файла, получение версии происходит по URL несколько другой конструкции,
получение файла
"http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/SpacesStore/id"
получение версии файла
"http://127.0.0.1:8080/alfresco/service/api/node/content/workspace/version2Store/id"
Загрузка файла в Alfresco
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def uploadFile(context, main, add, filterinfo, session, elementId, data, fileName, file):
# alfUploadParams = {}
# alfUploadParams["siteid"] = "demo"
# alfUploadParams["containerid"] = "documentlibrary"
# alfUploadParams["uploaddirectory"] = "/abc"
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfUploadParams = {}
alfUploadParams["destination"] = "workspace://SpacesStore/4bb7e4a3-7281-4d37-ba80-bcd4cba22f45"
alfUploadParams["uploaddirectory"] = "/test_folder1"
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
resultUploadFile = AlfrescoManager.uploadFile(fileName, file, alfURL, resultLogin.getTicket(), alfUploadParams);
if resultUploadFile.getResult() == 0:
context.message(u"Файл успешно загружен в Alfresco. Координаты файла в Alfresco: "+resultUploadFile.getNodeRef());
else:
context.error(resultUploadFile.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
При этом, сначала логинимся и получаем тикет, а затем передаем его в uploadFile для непосредственной загрузки файла
Получение метаданных файла из Alfresco
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def submitGetFileMetaData(context, main, add, filterinfo, session, data):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfFileId = "97cf8b94-0407-40ed-9582-711f4d42dfa0"
# acceptLanguage = ""
acceptLanguage = "en-US,en;"
# acceptLanguage = "ru-RU,ru;"
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
resultGetFileMetaData = AlfrescoManager.getFileMetaData(alfFileId, alfURL, resultLogin.getTicket(), acceptLanguage);
if resultGetFileMetaData.getResult() == 0:
metaData = resultGetFileMetaData.getMetaData()
# Далее использование полученных метаданных
# ............
else:
context.error(resultGetFileMetaData.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
return XMLJSONConverter.jsonToXml(data);
При этом, сначала логинимся и получаем тикет, а затем передаем его в getFileMetaData для получения метаданных файла
Пример возвращаемых метаданных
{
"nodeRef": "workspace://SpacesStore/97cf8b94-0407-40ed-9582-711f4d42dfa0",
"aspects": ["{http://www.alfresco.org/model/rendition/1.0}renditioned",
"{http://www.alfresco.org/model/content/1.0}versionable",
"{http://www.alfresco.org/model/system/1.0}referenceable",
"{http://www.alfresco.org/model/content/1.0}taggable",
"{http://www.alfresco.org/model/system/1.0}localized",
"{http://www.alfresco.org/model/content/1.0}thumbnailModification",
"{http://www.alfresco.org/model/forum/1.0}discussable",
"{http://www.alfresco.org/model/exif/1.0}exif",
"{http://www.alfresco.org/model/content/1.0}titled",
"{http://www.alfresco.org/model/content/1.0}auditable",
"{http://www.alfresco.org/model/forum/1.0}commentsRollup",
"{http://www.alfresco.org/model/content/1.0}failedThumbnailSource",
"{http://www.alfresco.org/model/content/1.0}author"],
"mimetype": "image/png",
"type": "{http://www.alfresco.org/model/content/1.0}content",
"properties": {
"{http://www.alfresco.org/model/exif/1.0}yResolution": 96,
"{http://www.alfresco.org/model/content/1.0}created": "2015-08-18T10:48:52.081Z",
"{http://www.alfresco.org/model/content/1.0}lastThumbnailModification": ["doclib:1440406448405",
"imgpreview:1440406448898"],
"{http://www.alfresco.org/model/content/1.0}description": "1Описание файла",
"{http://www.alfresco.org/model/forum/1.0}commentCount": 3,
"{http://www.alfresco.org/model/content/1.0}creator": "user222",
"{http://www.alfresco.org/model/system/1.0}node-uuid": "97cf8b94-0407-40ed-9582-711f4d42dfa0",
"{http://www.alfresco.org/model/content/1.0}name": "small.png",
"{http://www.alfresco.org/model/content/1.0}content": "contentUrl=store://2015/8/24/11/58/bc8b6213-bb9a-4a8c-ac59-5bfbf2d13398.bin|mimetype=image/png|size=8596|encoding=UTF-8|locale=ru_RU_|id=320",
"{http://www.alfresco.org/model/system/1.0}store-identifier": "SpacesStore",
"{http://www.alfresco.org/model/content/1.0}versionLabel": "1.8",
"{http://www.alfresco.org/model/content/1.0}autoVersion": true,
"{http://www.alfresco.org/model/content/1.0}initialVersion": true,
"{http://www.alfresco.org/model/exif/1.0}pixelYDimension": 12,
"{http://www.alfresco.org/model/content/1.0}autoVersionOnUpdateProps": false,
"{http://www.alfresco.org/model/content/1.0}title": "1Название файла",
"{http://www.alfresco.org/model/exif/1.0}xResolution": 96,
"{http://www.alfresco.org/model/content/1.0}taggable": null,
"{http://www.alfresco.org/model/system/1.0}store-protocol": "workspace",
"{http://www.alfresco.org/model/system/1.0}node-dbid": 866,
"{http://www.alfresco.org/model/system/1.0}locale": "ru_RU",
"{http://www.alfresco.org/model/content/1.0}modifier": "user222",
"{http://www.alfresco.org/model/content/1.0}modified": "2015-08-24T08:58:09.220Z",
"{http://www.alfresco.org/model/exif/1.0}pixelXDimension": 12,
"{http://www.alfresco.org/model/content/1.0}author": "Boris1"
}
}
Задание метаданных файла в Alfresco
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def submitSetFileMetaData(context, main, add, filterinfo, session, data):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfFileId = "97cf8b94-0407-40ed-9582-711f4d42dfa0"
# acceptLanguage = ""
acceptLanguage = "en-US,en;"
# acceptLanguage = "ru-RU,ru;"
metaData = unicode("{\"properties\":{\"title\":\"1Название файла\",\"description\":\"1Описание файла\"}}")
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
resultSetFileMetaData = AlfrescoManager.setFileMetaData(alfFileId, metaData, alfURL, resultLogin.getTicket(), acceptLanguage);
if resultSetFileMetaData.getResult() == 0:
context.message(u"Метаданные файла из Alfresco успешно заданы.");
else:
context.error(resultSetFileMetaData.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
return XMLJSONConverter.jsonToXml(data);
При этом, сначала логинимся и получаем тикет, а затем передаем его в setFileMetaData для задания метаданных файла
Получение версий файла из Alfresco
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def submitSetFileMetaData(context, main, add, filterinfo, session, data):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfFileId = "97cf8b94-0407-40ed-9582-711f4d42dfa0"
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
resultGetFileVersions = AlfrescoManager.getFileVersions(alfFileId, alfURL, resultLogin.getTicket());
if resultGetFileVersions.getResult() == 0:
versions = resultGetFileVersions.getVersions()
# Далее использование полученных версий
# ............
else:
context.error(resultGetFileVersions.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
return XMLJSONConverter.jsonToXml(data);
При этом, сначала логинимся и получаем тикет, а затем передаем его в setFileMetaData для задания метаданных файла
Пример полученных версий файла
[{
"nodeRef": "versionStore:\/\/version2Store\/b3984526-43e8-44d7-9ba5-b50318959750",
"name": "small.png",
"label": "1.3",
"description": "\u042d\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",
"createdDate": "18 \u0430\u0432\u0433 2015 16:42:06 GMT+0300 (MSK)",
"createdDateISO": "2015-08-18T16:42:06.962+03:00",
"creator": {
"userName": "user222",
"firstName": "user222",
"lastName": ""
}
},
{
"nodeRef": "versionStore:\/\/version2Store\/72aa198e-c98b-4258-afb7-d97c2852b773",
"name": "small.png",
"label": "1.2",
"description": "\u042d\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",
"createdDate": "18 \u0430\u0432\u0433 2015 16:41:51 GMT+0300 (MSK)",
"createdDateISO": "2015-08-18T16:41:51.361+03:00",
"creator": {
"userName": "user222",
"firstName": "user222",
"lastName": ""
}
},
{
"nodeRef": "versionStore:\/\/version2Store\/9d873d2c-2a54-4d2f-9e8f-593fa34602e9",
"name": "small.png",
"label": "1.1",
"description": "\u042d\u0442\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",
"createdDate": "18 \u0430\u0432\u0433 2015 13:51:14 GMT+0300 (MSK)",
"createdDateISO": "2015-08-18T13:51:14.432+03:00",
"creator": {
"userName": "user222",
"firstName": "user222",
"lastName": ""
}
},
{
"nodeRef": "versionStore:\/\/version2Store\/87f24241-0f87-4338-bd03-155dfe2b5f38",
"name": "small.png",
"label": "1.0",
"description": "",
"createdDate": "18 \u0430\u0432\u0433 2015 13:48:52 GMT+0300 (MSK)",
"createdDateISO": "2015-08-18T13:48:52.081+03:00",
"creator": {
"userName": "user222",
"firstName": "user222",
"lastName": ""
}
}]
Удаление файла из Alfresco
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def submitDeleteFile(context, main, add, filterinfo, session, data):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfFileId = "50694ed0-63b7-47d8-8e54-67ad19e3c359"
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
resultDeleteFile = AlfrescoManager.deleteFile(alfFileId, alfURL, resultLogin.getTicket());
if resultDeleteFile.getResult() == 0:
context.message(u"Файл успешно удален из Alfresco.");
else:
context.error(resultDeleteFile.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
return XMLJSONConverter.jsonToXml(data);
При этом, сначала логинимся и получаем тикет, а затем передаем его в deleteFile для непосредственного удаления файла
Создание директории в Alfresco
...
from ru.curs.showcase.util.alfresco import AlfrescoManager
...
def submitCreateFolder(context, main, add, filterinfo, session, data):
alfURL = "http://127.0.0.1:8080/alfresco"
alfUser = "user222"
alfPass = "пароль"
alfParentFolderId = "a9488807-c96c-41e9-a9ee-8a176ae1ccf6"
alfCreateFolderParams = unicode("{\"name\": \"Новая директория1\", \"title\": \"Заголовок новой директории1\", \"description\": \"Описание новой директории1\", \"type\": \"cm:folder\"}")
resultLogin = AlfrescoManager.login(alfURL, alfUser, alfPass)
if resultLogin.getResult() == 0:
resultCreateFolder = AlfrescoManager.createFolder(alfParentFolderId, alfCreateFolderParams, alfURL, resultLogin.getTicket());
if resultCreateFolder.getResult() == 0:
nodeRef = resultCreateFolder.getNodeRef()
# Далее использование nodeRef созданной директории
# ............
else:
context.error(resultCreateFolder.getErrorMessage());
else:
context.error(resultLogin.getErrorMessage());
return XMLJSONConverter.jsonToXml(data);
При этом, сначала логинимся и получаем тикет, а затем передаем его в createFolder для создания директории