openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #07256
Re: [Merge] lp:~savoirfairelinux-openerp/knowledge-addons/cmis into lp:knowledge-addons/7.0
Looking a lot better, still issues about the comments preceding functions which would be more useful as docstrings.
Diff comments:
> === added directory 'cmis'
> === added file 'cmis/__init__.py'
> --- cmis/__init__.py 1970-01-01 00:00:00 +0000
> +++ cmis/__init__.py 2014-06-12 19:47:23 +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-06-12 19:47:23 +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-06-12 19:47:23 +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 """
> +
> +cmis1000 = backend.Backend(parent=cmis, version='1.0')
> +""" CMIS Backend for version 1.0 """
> +
> +# 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-06-12 19:47:23 +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-06-12 19:47:23 +0000
> @@ -0,0 +1,183 @@
> +# -*- 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.tools.translate import _
> +from cmislib.model import CmisClient
> +import cmislib.exceptions
> +import urllib2
> +
> +
> +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.0', '1.0')]
> +
> + # 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)
> +
> + try:
> + return client.defaultRepository
> + except cmislib.exceptions.ObjectNotFoundException:
> + raise orm.except_orm(_('Cmis connection Error!'),
> + _("Check your cmis account configuration."))
> + except cmislib.exceptions.PermissionDeniedException:
> + raise orm.except_orm(_('Cmis connection Error!'),
> + _("Check your cmis account configuration."))
> + except urllib2.URLError:
> + raise orm.except_orm(_('Cmis connection Error!'),
> + _("SERVER is down."))
> +
> + # Function to check if we have access right to write from the path
This comment is better suited to be a docstring. This isn't java. Put it as the first line of your function in triple quotes (""")
There a few others which would benefit from this.
> + def check_directory_of_write(self, cr, uid, ids, context=None):
> + if context is None:
> + context = {}
> + cmis_backend_obj = self.pool.get('cmis.backend')
> + datas_fname = 'testdoc'
> + # login with the cmis account
> + repo = self._auth(cr, uid, context=context)
> + cmis_backend_rec = cmis_backend_obj.read(
> + cr, uid, ids, ['initial_directory_write'],
> + context=context)[0]
> + folder_path_write = cmis_backend_rec['initial_directory_write']
> + # Testing the path
> + rs = repo.query("SELECT cmis:path FROM cmis:folder")
> + bool_path_write = self.check_existing_path(rs, folder_path_write)
> + # Check if we can create a doc from OE to EDM
> + # Document properties
> + if bool_path_write:
> + sub = repo.getObjectByPath(folder_path_write)
> + try:
> + sub.createDocumentFromString(
> + datas_fname,
> + contentString='hello, world',
> + contentType='text/plain')
> + except cmislib.exceptions.UpdateConflictException:
> + raise orm.except_orm(
> + _('Cmis Error!'),
> + _("The test file is already existed in DMS. "
> + "Please remove it and try again."))
> + except cmislib.exceptions.RuntimeException:
> + raise orm.except_orm(
> + _('Cmis access right Error!'),
> + ("Please check your access right."))
> + self.get_error_for_path(bool_path_write, folder_path_write)
> +
> + # Function to check if we have access right to read from the path
> + def check_directory_of_read(self, cr, uid, ids, context=None):
> + ir_attach_obj = self.pool.get('ir.attachment')
> + if context is None:
> + context = {}
> + cmis_backend_obj = self.pool.get('cmis.backend')
> + cmis_backend_rec = cmis_backend_obj.read(
> + cr, uid, ids, ['initial_directory_read'],
> + context=context)[0]
> + # Login with the cmis account
> + repo = self._auth(cr, uid, context=context)
> + folder_path_read = cmis_backend_rec['initial_directory_read']
> + # Testing the path
> + rs = repo.query("SELECT cmis:path FROM cmis:folder ")
> + bool_path_read = self.check_existing_path(rs, folder_path_read)
> + self.get_error_for_path(bool_path_read, folder_path_read)
> +
> + # Function to check if the path is correct
> + def check_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
> +
> + # Function to return following the boolean the right error message
> + def get_error_for_path(self, bool, path):
> + if bool:
> + raise orm.except_orm(_('Cmis Message'),
> + _("Path is correct for : " + path))
> + else:
> + raise orm.except_orm(_('Cmis Error!'),
> + _("Error path for : " + path))
> +
> + # Escape the name for characters not supported in filenames
> + def sanitize_input(self, file_name):
> + # for avoiding SQL Injection
> + file_name = file_name.replace("'", "\\'")
> + file_name = file_name.replace("%", "\%")
> + file_name = file_name.replace("_", "\_")
> + return file_name
> +
> + def safe_query(self, query, file_name, repo):
> + args = map(self.sanitize_input, file_name)
> + return repo.query(query % ''.join(args))
> +
> + _columns = {
> + 'version': fields.selection(
> + _select_versions,
> + string='Version',
> + required=True),
> + 'location': fields.char('Location', size=128, required=True,
> + help="Location."),
> + 'username': fields.char('Username', size=64, required=True,
> + help="Username."),
> + 'password': fields.char('Password', size=64, required=True,
> + help="Password."),
> + 'initial_directory_read': fields.char(
> + 'Initial directory of read',
> + size=128,
> + required=True,
> + help="Initial directory of read."),
> + 'initial_directory_write': fields.char(
> + 'Initial directory of write',
> + size=128,
> + required=True,
> + help="Initial directory of write."),
> + 'browsing_ok': fields.boolean('Allow browsing this backend',
> + help="Allow browsing this backend."),
> + 'storing_ok': fields.boolean('Allow storing in this backend',
> + help="Allow storing in this backend."),
> + }
> + _defaults = {
> + 'initial_directory_read': '/',
> + 'initial_directory_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-06-12 19:47:23 +0000
> @@ -0,0 +1,74 @@
> +<?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 >
> + <field name="browsing_ok"/>
> + <newline/>
> + <group attrs="{'invisible':[('browsing_ok','=',False)]}"
> + colspan="4" col="4">
> + <field name="initial_directory_read"/>
> + <button name="check_directory_of_read"
> + type="object"
> + class="oe_highlight"
> + string="Test Directory of read"/>
> + </group>
> + <newline/>
> + <field name="storing_ok"/>
> + <newline/>
> + <group attrs="{'invisible':[('storing_ok','=',False)]}"
> + colspan="4" col="4">
> + <field name="initial_directory_write"/>
> + <button name="check_directory_of_write"
> + type="object"
> + class="oe_highlight"
> + string="Test Directory of write"/>
> + </group>
> + </group>
> + </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-06-12 19:47:23 +0000
> @@ -0,0 +1,38 @@
> +# -*- 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.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:
>
> === added directory 'cmis/security'
> === added file 'cmis/security/ir.model.access.csv'
> --- cmis/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
> +++ cmis/security/ir.model.access.csv 2014-06-12 19:47:23 +0000
> @@ -0,0 +1,2 @@
> +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
> +access_cmis_backend_user,access_cmis_backend_user,model_cmis_backend,base.group_user,1,0,0,0
>
> === added directory 'cmis/tests'
> === added file 'cmis/tests/__init__.py'
> --- cmis/tests/__init__.py 1970-01-01 00:00:00 +0000
> +++ cmis/tests/__init__.py 2014-06-12 19:47:23 +0000
> @@ -0,0 +1,29 @@
> +# -*- encoding: utf-8 -*-
> +##############################################################################
> +#
> +# OpenERP, Open Source Management Solution
> +# This module copyright (C) 2013-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 (
> + test_model,
> +)
> +
> +checks = [
> + test_model,
> +]
>
> === added file 'cmis/tests/test_model.py'
> --- cmis/tests/test_model.py 1970-01-01 00:00:00 +0000
> +++ cmis/tests/test_model.py 2014-06-12 19:47:23 +0000
> @@ -0,0 +1,53 @@
> +# -*- encoding: utf-8 -*-
> +###############################################################################
> +#
> +# OpenERP, Open Source Management Solution
> +# This module copyright (C) 2010 - 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.tests.common import TransactionCase
> +
> +
> +class test_model(TransactionCase):
> +
> + def setUp(self):
> + super(test_model, self).setUp()
> + # Clean up registries
> + self.registry('ir.model').clear_caches()
> + self.registry('ir.model.data').clear_caches()
> + self.user_model = self.registry("res.users")
> +
> + # Get registries
> + self.model = self.registry("cmis.backend")
> + # Get context
> + self.context = self.user_model.context_get(self.cr, self.uid)
> +
> + self.vals = {
> + 'name': "Test cmis",
> + 'version': '1.0',
> + 'location': "http://localhost:8081/alfresco/s/cmis",
> + 'username': 'admin',
> + 'password': 'admin',
> + 'initial_directory_read': '/',
> + 'initial_directory_write': '/',
> + }
> +
> + def test_create_model(self):
> + model_id = self.model.create(
> + self.cr, self.uid, self.vals, context=self.context)
> + self.assertTrue(model_id)
>
--
https://code.launchpad.net/~savoirfairelinux-openerp/knowledge-addons/cmis/+merge/212258
Your team OpenERP Community Reviewer/Maintainer is subscribed to branch lp:knowledge-addons/7.0.
References