def upload_batch_to_alfresco(files): from cmislib import CmisClient def map_to_alfresco(prop): return { 'ag:{}'.format(k.lower().replace(' ', '_')): str(v) for k, v in prop.iteritems() } client = CmisClient(ATOM_URL, USER, PASSWORD) repo = client.getDefaultRepository() folder = repo.getObjectByPath(FILE_BASE_PATH) for index, (_properties, upload_file_path) in enumerate(files): try: properties = map_to_alfresco(_properties) properties.update({'cmis:objectTypeId': 'D:ag:consignment_note'}) upload_file = open(upload_file_path, 'rb') file_name = '{}.pdf'.format(properties['ag:consignment_name']) doc = folder.createDocument(file_name, properties, contentFile=upload_file) upload_file.close() print('File Uploaded ({} of {}) {}'.format(index + 1, len(files), properties)) except Exception as e: logging.error("Failed to upload file {} \n caused by {}".format( properties, e)) raise
class CmisAlfTestBase(unittest.TestCase): """ Common ancestor class for most cmislib unit test classes. """ def setUp(self): """ Create a root test folder for the test. """ self._cmisClient = CmisClient(REPOSITORY_URL, USERNAME, PASSWORD, **EXT_ARGS) self._repo = self._cmisClient.getDefaultRepository() self._rootFolder = self._repo.getObjectByPath(TEST_ROOT_PATH) self._folderName = " ".join(["cmislibalf", self.__class__.__name__, str(time())]) self._testFolder = self._rootFolder.createFolder(self._folderName) def tearDown(self): """ Clean up after the test. """ self._testFolder.deleteTree()
class CMISRepo(object): implements(ICMISRepo) def __init__(self, url, user, password, repository_id=None, document_root='/'): self.client = CmisClient(url, user, password) if not repository_id: self.repo = self.client.getDefaultRepository() else: self.repo = self.client.getRepository(repository_id) self.docroot = self.repo.getObjectByPath(document_root) def docroot_path(self): paths = self.docroot.getPaths() if paths: return paths[0] return None
def upload_document(self): configs = self.env['office.alfresco.configuration'].search([('is_default', '=', 'True')])[0] url = configs.url port = configs.port user = configs.user mp = configs.mp try: client = CmisClient('http://' + url + ':' + repr(port) + '/alfresco/service/cmis', user, mp) repo = client.defaultRepository except: print "failed to connect to Alfresco" quit() repo = client.getDefaultRepository() root = repo.rootFolder try: Client = repo.getObjectByPath('/Clients') except: Client = root.createFolder('Clients') try: eFolder = repo.getObjectByPath('/Clients/' + self._get_name(self.env.context)) except: eFolder = Client.createFolder(self._get_name(self.env.context)) try: sFolder = repo.getObjectByPath('/Clients/' + self._get_name(self.env.context) + '/Bons de commande') except: sFolder = eFolder.createFolder('Bons de commande') #added by salwa ksila 06/04/2017 data = base64.decodestring(self.chemin) # create a temporary file, and save the image fobj = tempfile.NamedTemporaryFile(delete=False) fname = fobj.name fobj.write(data) fobj.close() eContent = open(fname, 'r') eFile = sFolder.createDocument(self.nom_fichier, contentFile=eContent) self.env['office.document.alfresco.vente'].create({'node': eFile.id, 'nom_fichier': self.nom_fichier,'vente_id': self._get_active_id(self.env.context), 'nom_client': self._get_partner(self.env.context)})
def __init__(self, url=None, user=None, password=None): """ Connect to the CMIS repository and store the root folder for further operations. :param url: string, CMIS provider url. :param user: string, username to login on the document store :param password: string, password to login on the document store """ if url is None: url = settings.CMIS_CLIENT_URL if user is None: user = settings.CMIS_CLIENT_USER if password is None: password = settings.CMIS_CLIENT_USER_PASSWORD _client = CmisClient(url, user, password) self._repo = _client.getDefaultRepository() self._root_folder = self._repo.getObjectByPath('/') self.upload_to = import_string(settings.CMIS_UPLOAD_TO)
#!/usr/bin/env python # Alfresco extension to CMIS import cmislibalf from cmislib import CmisClient, Repository, Folder from cmislib.model import CmisId from cmislib.exceptions import CmisException, UpdateConflictException import os, sys try: # client = CmisClient('https://cmis.alfresco.com/api/-default-/public/cmis/versions/1.0/atom', 'admin', 'password') # http://172.20.19.50:8080/alfresco cmisClient = CmisClient('http://<IP>:8080/alfresco/service/cmis', 'admin', 'Tobereplaced') repo = cmisClient.getDefaultRepository() except CmisException as cme: print "failed to connect to Alfresco: \r\n%s" % cme quit() try: print 'Getting list of sites ..' folders = repo.query("select * from cmis:folder where cmis:objectTypeId='F:st:site'") docs = repo.query("select * from cmis:document where cmis:objectId='workspace://SpacesStore/dbac1e58-5b0b-4611-aafb-520df12f0bb1'") print 'Processing list ..' for folder in folders: obj = repo.getObject(folder.id) # properties items are key-value TUPLES .. for key,val in obj.properties.items(): if key=='cm:name' or key=='cm:title' or key=='cmis:path': print key,'=',val