Пример #1
0
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()
Пример #3
0
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
Пример #4
0
    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)})
Пример #5
0
    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)
Пример #6
0
#!/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