← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~savoirfairelinux-openerp/knowledge-addons/cmis into lp:knowledge-addons/7.0

 

El Hadji Dem (http://www.savoirfairelinux.com) has proposed merging lp:~savoirfairelinux-openerp/knowledge-addons/cmis into lp:knowledge-addons/7.0.

Requested reviews:
  OpenERP Community Reviewer/Maintainer (openerp-community-reviewer)

For more details, see:
https://code.launchpad.net/~savoirfairelinux-openerp/knowledge-addons/cmis/+merge/212258

This module allows to configure a CMIS backend in OpenERP.
-- 
https://code.launchpad.net/~savoirfairelinux-openerp/knowledge-addons/cmis/+merge/212258
Your team OpenERP Community Reviewer/Maintainer is requested to review the proposed merge of lp:~savoirfairelinux-openerp/knowledge-addons/cmis into lp:knowledge-addons/7.0.
=== added directory 'cmis'
=== added file 'cmis/__init__.py'
--- cmis/__init__.py	1970-01-01 00:00:00 +0000
+++ cmis/__init__.py	2014-03-21 22:38:36 +0000
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    This module copyright (C) 2014 Savoir-faire Linux
+#    (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program 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 Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from . import cmis_model
+from . import backend
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'cmis/__openerp__.py'
--- cmis/__openerp__.py	1970-01-01 00:00:00 +0000
+++ cmis/__openerp__.py	2014-03-21 22:38:36 +0000
@@ -0,0 +1,62 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    This module copyright (C) 2014 Savoir-faire Linux
+#    (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program 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 Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+    'name': 'CMIS',
+    'version': '0.1',
+    'category': 'Connector',
+    'summary': 'Cmis Connector',
+    'description': """
+Cmis Connector
+==============
+
+This module is the base for OpenERP modules implementing different integration scenario with a CMIS server.
+It allows you to configure a CMIS backend in OpenERP.
+
+Configuration
+=============
+
+Create a new CMIS backend with the host, login and password.
+
+Contributors
+------------
+* El Hadji Dem (elhadji.dem@xxxxxxxxxxxxxxxxxxxx)
+""",
+    'author': 'Savoir-faire Linux',
+    'website': 'www.savoirfairelinux.com',
+    'license': 'AGPL-3',
+    'depends': [
+        'connector',
+    ],
+    'data': [
+        'cmis_model_view.xml',
+        'cmis_menu.xml',
+    ],
+    'js': [],
+    'qweb': [],
+    'test': [],
+    'demo': [],
+    'installable': True,
+    'auto_install': False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'cmis/backend.py'
--- cmis/backend.py	1970-01-01 00:00:00 +0000
+++ cmis/backend.py	2014-03-21 22:38:36 +0000
@@ -0,0 +1,32 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    This module copyright (C) 2014 Savoir-faire Linux
+#    (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program 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 Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import openerp.addons.connector.backend as backend
+
+
+cmis = backend.Backend('cmis')
+""" Generic CMIS Backend """
+
+cmis1700 = backend.Backend(parent=cmis, version='1.7')
+""" CMIS Backend for version 1.7 """
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'cmis/cmis_menu.xml'
--- cmis/cmis_menu.xml	1970-01-01 00:00:00 +0000
+++ cmis/cmis_menu.xml	2014-03-21 22:38:36 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+
+    <menuitem id="menu_cmis_root"
+              parent="connector.menu_connector_root"
+              name="Cmis"
+              sequence="10"
+              groups="connector.group_connector_manager"/>
+
+    <menuitem id="menu_cmis_backend"
+              name="Backends"
+              parent="menu_cmis_root"
+              action="action_cmis_backend"/>
+
+  </data>
+</openerp>

=== added file 'cmis/cmis_model.py'
--- cmis/cmis_model.py	1970-01-01 00:00:00 +0000
+++ cmis/cmis_model.py	2014-03-21 22:38:36 +0000
@@ -0,0 +1,121 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    This module copyright (C) 2014 Savoir-faire Linux
+#    (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program 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 Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import orm, fields, osv
+from openerp.tools.translate import _
+from openerp.addons.connector.queue.job import job
+from cmislib.model import CmisClient
+import openerp.addons.connector as connector
+from openerp.addons.connector.session import ConnectorSession
+
+
+class cmis_backend(orm.Model):
+    _name = 'cmis.backend'
+    _description = 'CMIS Backend'
+    _inherit = 'connector.backend'
+
+    _backend_type = 'cmis'
+
+    def _select_versions(self, cr, uid, context=None):
+        return [('1.7', '1.7')]
+
+    # Test connection with GED
+    def _auth(self, cr, uid, context=None):
+        if context is None:
+            context = {}
+        # Get the url, user and password for GED
+        ids = self.search(cr, uid, [])
+        res = self.read(cr, uid, ids,
+                        ['location',
+                         'username',
+                         'password'], context=context)[0]
+        url = res['location']
+        user_name = res['username']
+        user_password = res['password']
+        client = CmisClient(url, user_name, user_password)
+        if not client:
+            raise osv.except_osv(_('Cmis connection Error!'),
+                                 _("Check your cmis account configuration."))
+        return client
+
+    def test_directory_of_write(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        cmis_backend_obj = self.pool.get('cmis.backend')
+        #login with the cmis account
+        client = cmis_backend_obj._auth(cr, uid, context=context)
+        repo = client.defaultRepository
+        folder_path_write = cmis_backend_obj.read(cr, uid, ids, ['initial_directory_write'],
+                                                  context=context)[0]['initial_directory_write']
+        # Testing the path
+        rs = repo.query("SELECT cmis:path FROM  cmis:folder ")
+        bool_path_write = self.test_existing_path(rs, folder_path_write)
+        self.get_error_for_path(bool_path_write, folder_path_write)
+
+    def test_directory_of_read(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
+        cmis_backend_obj = self.pool.get('cmis.backend')
+        #login with the cmis account
+        client = cmis_backend_obj._auth(cr, uid, context=context)
+        repo = client.defaultRepository
+        folder_path_read = cmis_backend_obj.read(cr, uid, ids, ['initial_directory_read'],
+                                                 context=context)[0]['initial_directory_read']
+        # Testing the path
+        rs = repo.query("SELECT cmis:path FROM  cmis:folder ")
+        bool_path_read = self.test_existing_path(rs, folder_path_read)
+        self.get_error_for_path(bool_path_read, folder_path_read)
+
+    def test_existing_path(self, rs, folder_path):
+        for one_rs in rs:
+            # Print name of files
+            props = one_rs.getProperties()
+            if props['cmis:path'] != folder_path:
+                bool = False
+            else:
+                bool = True
+                break
+        return bool
+
+    def get_error_for_path(self, bool, path):
+        if bool:
+            raise osv.except_osv(_('Cmis  Message'),
+                                 _("Path is correct for : " + path))
+        else:
+            raise osv.except_osv(_('Cmis  Error!'),
+                                 _("Error path for : " + path))
+
+    _columns = {
+        'version': fields.selection(
+            _select_versions,
+            string='Version',
+            required=True),
+        'location': fields.char('Location', size=128, help="Location."),
+        'username': fields.char('Username', size=64, help="Username."),
+        'password': fields.char('Password', size=64, help="Password."),
+        'initial_directory_read': fields.char('Initial directory of read',
+                                              size=128, help="Initial directory of read."),
+        'initial_directory_write': fields.char('Initial directory of write',
+                                               size=128, help="Initial directory of write."),
+    }
+
+# vim:expandtab:smartindent:toabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'cmis/cmis_model_view.xml'
--- cmis/cmis_model_view.xml	1970-01-01 00:00:00 +0000
+++ cmis/cmis_model_view.xml	2014-03-21 22:38:36 +0000
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+
+      <record id="view_cmis_backend_form" model="ir.ui.view">
+        <field name="name">cmis.backend.form</field>
+        <field name="model">cmis.backend</field>
+        <field name="arch" type="xml">
+          <form string="CMIS Backend" version="7.0">
+            <sheet>
+              <label for="name" class="oe_edit_only"/>
+              <h1>
+                <field name="name" class="oe_inline" />
+              </h1>
+              <group name="cmis" string="Cmis Configuration">
+                <group colspan="4" col="4">
+                  <field name="version" colspan="4"/>
+                  <field name="location" placeholder="e.g. http://localhost:8081/alfresco/s/cmis";
+                      colspan="4"/>
+                  <field name="username" colspan="2"/>
+                  <field name="password" colspan="2" password="True"/>
+                </group>
+              </group>
+              <group name="directory_conf" string="Directory Configuration">
+                <group colspan="4" col="4">
+                  <field name="initial_directory_read" colspan="2"/>
+                  <field name="initial_directory_write" colspan="2"/>
+                </group>
+              </group>
+              <group colspan="4" col="4">
+              <div>
+                <button name="test_directory_of_read"
+                        type="object"
+                        class="oe_highlight"
+                        string="Test Directory of read"/>
+                <button name="test_directory_of_write"
+                        type="object"
+                        class="oe_highlight"
+                        string="Test Directory of write"/>
+              </div>
+              </group>
+            </sheet>
+          </form>
+        </field>
+      </record>
+
+      <record id="view_cmis_backend_tree" model="ir.ui.view">
+          <field name="name">cmis.backend.tree</field>
+          <field name="model">cmis.backend</field>
+          <field name="arch" type="xml">
+            <tree string="CMIS Backend" version="7.0">
+              <field name="name"/>
+              <field name="username"/>
+              <field name="location"/>
+            </tree>
+          </field>
+      </record>
+
+      <record id="action_cmis_backend" model="ir.actions.act_window">
+        <field name="name">CMIS Backends</field>
+        <field name="res_model">cmis.backend</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="view_id" ref="view_cmis_backend_tree"/>
+      </record>
+    </data>
+</openerp>

=== added file 'cmis/connector.py'
--- cmis/connector.py	1970-01-01 00:00:00 +0000
+++ cmis/connector.py	2014-03-21 22:38:36 +0000
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    This module copyright (C) 2014 Savoir-faire Linux
+#    (<http://www.savoirfairelinux.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program 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 Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv import orm, fields
+from openerp.addons.connector.connector import (Environment,
+                                                install_in_connector)
+
+install_in_connector()
+
+
+def get_environment(session, model_name, backend_id):
+    """ Create an environment to work with.  """
+    backend_record = session.browse('cmis.backend', backend_id)
+    env = Environment(backend_record, session, model_name)
+    lang = backend_record.default_lang_id
+    lang_code = lang.code if lang else 'en_US'
+    env.set_lang(code=lang_code)
+    return env
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:


Follow ups