def setUp(self):
     super(BaseTestCmisProxy, self).setUp()
     cmis_location = os.environ.get('CMIS_LOCATION') or \
         ('http://10.7.20.179:8080/alfresco/api/-default-'
          '/public/cmis/versions/1.1/browser/')
     cmis_user = os.environ.get('CMIS_USER') or 'admin'
     cmis_pwd = os.environ.get('CMIS_PWD') or 'admin'
     self.cmis_test_root_path = os.environ.get('CMIS_ROOT') or '/Odoo_proxy'
     if not cmis_location or not cmis_user or not cmis_pwd:
         self.skipTest("To run these tests you must provide the following "
                       "env var: CMIS_LOCATION, CMIS_USER, CMIS_PWD")
     cmis_backend = self.env['cmis.backend']
     cmis_backend.search([(1, '=', 1)]).unlink()
     self.cmis_backend = cmis_backend.create({
         'name': 'TEST_CMIS_PROXY',
         'location': cmis_location,
         'is_cmis_proxy': True,
         'apply_odoo_security': False,
         'username': cmis_user,
         'password': cmis_pwd,
         'version': '1.0'
     })
     web_descr = self.cmis_backend.get_web_description()[
         self.cmis_backend.id]
     proxy_path = web_descr['cmis_location']
     self.authenticate('admin', 'admin')
     self.cmis_url = 'http://%s:%d%s' % (common.HOST, common.PORT,
                                         proxy_path)
     self.headers = {'Cookie': 'session_id=%s' % self.session_id}
     self.cmis_client = CmisClient(self.cmis_url,
                                   'admin',
                                   'admin',
                                   headers=self.headers)
     self.cmis_client.binding = BrowserBinding(headers=self.headers)
Exemple #2
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
Exemple #3
0
    def get_cmis_client(self, config_file):

        with open(config_file) as json_file:
            config = json.load(json_file)

        self.cmis_client = CmisClient(config['endpoint'], config['username'], config['password'])
        self.repo = self.cmis_client.defaultRepository
def setup_module(module):
    try:
        module.TestConnection.client = CmisClient(CMISURL, CMISUSER, CMISPASS)
        module.TestConnection.client.getDefaultRepository()
    except cmislib.exceptions.PermissionDeniedException:
        pytest.fail('Connection error')
    except Exception, e:
        pytest.fail('Error ', str(e))
Exemple #5
0
 def check_credentials(self, cr, uid, password):
     #~ if not password == config.get('admin_passwd',False) and uid not in CMIS_LOGIN.keys():  # admin_passwd overrides 
     global CMIS_CLIENT, CMIS_LOGIN, CMIS_SERVER
     
     if not CMIS_CLIENT:
         try:
             values = self.pool['ir.config_parameter'].get_param(cr,uid,'attachment_cmis.remote_server')
             CMIS_SERVER = values.split(',')[0]
             CMIS_CLIENT = CmisClient(CMIS_SERVER, values.split(',')[1], values.split(',')[2])
         except Exception as e:
             _logger.warn('CMIS_CLIENT: %s %s' %(e,values))
     if CMIS_CLIENT:
         if not cr.dbname in CMIS_LOGIN.keys():
             CMIS_LOGIN[cr.dbname] = {}
         if not uid in CMIS_LOGIN[cr.dbname].keys():
             CMIS_LOGIN[cr.dbname][uid] = {}
         CMIS_LOGIN[cr.dbname][uid]['password'] = password
         CMIS_LOGIN[cr.dbname][uid]['login'] = self.pool['res.users'].browse(cr,uid,uid).login
         try:
             CMIS_LOGIN[cr.dbname][uid]['client'] = CmisClient(CMIS_SERVER, CMIS_LOGIN[cr.dbname][uid]['login'], password)
         except Exception as e:
             _logger.warn('CMIS_LOGIN: %s %s %s' %(e, CMIS_SERVER, CMIS_LOGIN[cr.dbname][uid]['login']))
     _logger.warn('CMIS_CLIENT: %s CMIS_SERVER %s CMIS_LOGIN %s' %(CMIS_CLIENT, CMIS_SERVER,CMIS_LOGIN))
     return super(res_users, self).check_credentials(cr, uid, password)
Exemple #6
0
 def ensure_connection(self):
     if self.connection is None:
        self.cmis_client = CmisClient(
              self.settings_dict['HOST'],
              self.settings_dict['USER'],
              self.settings_dict['PASSWORD'],
              binding=self.cmis_binding()
        )
        repo_name = self.settings_dict['NAME']
        if repo_name == "default" or not repo_name:
           self.connection = self.cmis_client.defaultRepository
        else:
           self.connection = self.cmis_client.getRepository(repo_name)
        if django.conf.settings.DEBUG:
           print "Connected to Repository with ID %s" % self.connection.id
    def __init__(self, alfresco_repository_url, alfresco_cmis_rest_api_url,
                 alfresco_admin_user, alfresco_admin_password):
        self.alfresco_repository_url = alfresco_repository_url
        self.alfresco_cmis_rest_api_url = alfresco_cmis_rest_api_url
        self.alfresco_admin_user = alfresco_admin_user
        self.alfresco_admin_password = alfresco_admin_password

        try:
            self.cmis_client = CmisClient(self.alfresco_cmis_rest_api_url,
                                          self.alfresco_admin_user,
                                          self.alfresco_admin_password)

        except:
            return HttpResponseBadRequest(
                '<h1>Failed to connect to Alfresco</h1>')
Exemple #8
0
    def connect(self):
        """
        :return: Returns True if the connection succeeded, else False.
        Failure to connect can be due to invalid URL or wrong authentication
        credentials.
        :rtype: bool
        """
        status = False
        self._cmis_client = CmisClient(self.url, self.username, self.password)

        try:
            self._default_repo = self._cmis_client.defaultRepository
            self._connected = True
            status = True
        except Exception as ex:
            pass

        return status
Exemple #9
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)})
Exemple #10
0
 def setUp(self):
     super(BaseTestCmisProxy, self).setUp()
     cmis_location = os.environ.get("CMIS_LOCATION") or (
         "http://10.7.20.179:8080/alfresco/api/-default-"
         "/public/cmis/versions/1.1/browser/"
     )
     cmis_user = os.environ.get("CMIS_USER") or "admin"
     cmis_pwd = os.environ.get("CMIS_PWD") or "admin"
     self.cmis_test_root_path = os.environ.get("CMIS_ROOT") or "/Odoo_proxy"
     if not cmis_location or not cmis_user or not cmis_pwd:
         self.skipTest(
             "To run these tests you must provide the following "
             "env var: CMIS_LOCATION, CMIS_USER, CMIS_PWD"
         )
     cmis_backend = self.env["cmis.backend"]
     cmis_backend.search([(1, "=", 1)]).unlink()
     self.cmis_backend = cmis_backend.create(
         {
             "name": "TEST_CMIS_PROXY",
             "location": cmis_location,
             "is_cmis_proxy": True,
             "apply_odoo_security": False,
             "username": cmis_user,
             "password": cmis_pwd,
             "version": "1.0",
         }
     )
     web_descr = self.cmis_backend.get_web_description()[
         self.cmis_backend.id
     ]
     proxy_path = web_descr["cmis_location"]
     self.authenticate("admin", "admin")
     self.cmis_url = "http://%s:%d%s" % (
         common.HOST,
         common.PORT,
         proxy_path,
     )
     self.headers = {"Cookie": "session_id=%s" % self.session_id}
     self.cmis_client = CmisClient(
         self.cmis_url, "admin", "admin", headers=self.headers
     )
     self.cmis_client.binding = BrowserBinding(headers=self.headers)
    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)
Exemple #12
0
 def __init__(self, fw):
     global CMIS_CLIENT,CMIS_LOGIN,CMIS_SERVER
     self.env = fw.env
     try:
         self.personal_repo = CMIS_LOGIN[self.env.cr.dbname][self.env.uid]['client'].defaultRepository
     except Exception as e:
         self.personal_repo = None
     try:
         self.repo = CMIS_CLIENT.defaultRepository
     except Exception as e:
         self.repo = None
     if not self.repo:
         remote_server = fw.env['ir.config_parameter'].get_param('attachment_cmis.remote_server', '').split(',', 2)
         if len(remote_server) != 3:
             self.repo = None
             return
         (CMIS_SERVER, user, password) = [fw.env['ir.config_parameter'].get_param(v) for v in remote_server]
         CMIS_CLIENT = CmisClient(CMIS_SERVER, user, password)
         _logger.error('server: %s user: %s password: %s' % (CMIS_SERVER, user, password))
         self.repo = CMIS_CLIENT.defaultRepository
     _logger.warn('CMIS_repo : general %s personal %s'  %(self.repo,self.personal_repo))
def main():
    """ Main function """
    # Read info from file
    filename = 'config.json'

    # Open file
    try:
        with open(filename) as fileIn:
            data = json.load(fileIn)
    except EnvironmentError:
        print("Settings file does not exist!")
        exit(1)

    # Set the variables
    # File with 4 lines, info on each.
    try:
        repository = data['repository']
        user = data['user']
        password = data['password']
        folder = data['folder']
    except Exception as e:
        print('Error reading file')
        exit(1)

    # Connect to the repository
    try:
        print(repository, user, password)
        repository = CmisClient(repository, user, password)

        if not repository:
            print('Error retrying info from repository.Exiting.')
            exit(1)

        print('Connected to repository')
        # Get the default repository
        repo = repository.defaultRepository
        if not repo:
            print('Error retrying info from repository.Exiting.')
            exit(1)

        print(repo)
        # Query folder
        repoResults = repo.getObjectByPath(folder)

        print('Looking inside %s folder', folder)
        # Print name of contents in folder
        children = repoResults.getChildren()

        if not children:
            print("Error while retrying results! Exiting...")
            exit(1)

        # Loop and print
        i = 0
        for child in children:
            print("Item: %s is called %s" % (i, child.name))

            # Get object's properties
            childProperties = child.getProperties()
            # Now I want to check the StreamMimeType
            stream = childProperties['cmis:contentStreamMimeType']
            # If framemaker, do something
            if ('framemaker' in stream):
                changeUrl(child)
            i = i + 1

    except Exception as e:
        print('There is an error connecting to the repo')
        print(e)
Exemple #14
0
GESTDOC = 'https://gestdoc.cnr.it/alfresco'
AS7PREPROD = 'http://as7preprod.cedrc.cnr.it:8080/alfresco'
AS8PREPROD = 'http://as8preprod.cedrc.cnr.it:8080/alfresco'
TEST7 = 'http://test7.si.cnr.it/alfresco'
LOCALHOST = 'http://fuliana.si.cnr.it:8181/alfresco-app-doccnr'

USER = '******'
PASSW = 'admin'

HOST = TEST7
#HOST = AS11

if HOST == GESTDOC:
  print colored('PRODUZIONE !!!', 'red')

REPO = CmisClient(HOST + '/cmisatom', USER, PASSW).defaultRepository

INFO = REPO.getRepositoryInfo()
print INFO.get('vendorName') + ' ' + INFO.get('productVersion')
print USER + '@' + HOST

def print_title(folder):
    """print title"""
    print folder.getTitle()

def sons(parent, callback=print_title, height=0):
    """apply parameter callback to each parent's son"""
    prefix = ''
    for _ in range(height + 1):
        prefix += '-'
    for doc in parent.getChildren():
Exemple #15
0
#    (at your option) any later version.
#
#    CMIS MARCH test is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################

from cmislib import CmisClient
from common import CMISURL, CMISUSER, CMISPASS

client = CmisClient(CMISURL, CMISUSER, CMISPASS)

# Number of repositories
print "Number of repositories: %d\n" % len(client.repositories)

# List of all repositories
print '=======[ REPOSITORIES INFORMATIONS ]============='
for r in client.repositories:
    print 'Repository Name: %s' % r['repositoryName']
    print 'Reporistory ID: %s' % r['repositoryId']
    print '----'

print '=======[ END REPOSITORIES INFORMATIONS ]=========\n'

repo = client.defaultRepository