openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #04076
[Merge] lp:~savoirfairelinux-openerp/partner-contact-management/partner-contact-management-base_contact_add_passport_passport_partner into lp:partner-contact-management
You have been requested to review the proposed merge of lp:~savoirfairelinux-openerp/partner-contact-management/partner-contact-management-base_contact_add_passport_passport_partner into lp:partner-contact-management.
For more details, see:
https://code.launchpad.net/~savoirfairelinux-openerp/partner-contact-management/partner-contact-management-base_contact_add_passport_passport_partner/+merge/204033
[ADD] Add passport and passport_partner modules: You can manage several passports for each contact.
--
https://code.launchpad.net/~savoirfairelinux-openerp/partner-contact-management/partner-contact-management-base_contact_add_passport_passport_partner/+merge/204033
Your team Partner and Contact Core Editors is requested to review the proposed merge of lp:~savoirfairelinux-openerp/partner-contact-management/partner-contact-management-base_contact_add_passport_passport_partner into lp:partner-contact-management.
=== added directory 'passport'
=== added file 'passport/__init__.py'
--- passport/__init__.py 1970-01-01 00:00:00 +0000
+++ passport/__init__.py 2014-02-25 00:25:27 +0000
@@ -0,0 +1,24 @@
+# -*- 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 res_passport
+from . import res_partner
=== added file 'passport/__openerp__.py'
--- passport/__openerp__.py 1970-01-01 00:00:00 +0000
+++ passport/__openerp__.py 2014-02-25 00:25:27 +0000
@@ -0,0 +1,50 @@
+# -*- 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/>.
+#
+##############################################################################
+
+{
+ 'name': 'Passport Management',
+ 'version': '0.1',
+ 'author': 'Savoir-faire Linux',
+ 'maintainer': 'Savoir-faire Linux',
+ 'website': 'http://www.savoirfairelinux.com',
+ 'license': 'AGPL-3',
+ 'category': 'Customer Relationship Management',
+ 'description': """
+Passport Management
+===================
+
+Contributors
+------------
+* El Hadji Dem (elhadji.dem@xxxxxxxxxxxxxxxxxxxx)
+* Sandy Carter (sandy.carter@xxxxxxxxxxxxxxxxxxxx)
+""",
+ 'depends': [],
+ 'external_dependencies': {},
+ 'data': [
+ 'res_passport_view.xml',
+ "res_partner_view.xml",
+ 'security/ir.model.access.csv',
+ ],
+ 'demo': [],
+ 'test': [],
+ 'installable': True,
+}
=== added directory 'passport/i18n'
=== added file 'passport/i18n/fr.po'
--- passport/i18n/fr.po 1970-01-01 00:00:00 +0000
+++ passport/i18n/fr.po 2014-02-25 00:25:27 +0000
@@ -0,0 +1,126 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * passport
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-02-24 23:40+0000\n"
+"PO-Revision-Date: 2014-02-24 18:47-0500\n"
+"Last-Translator: Sandy Carter <sandy.carter@xxxxxxxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+"X-Generator: Poedit 1.6.4\n"
+
+#. module: passport
+#: help:res.passport,country_id:0
+msgid "Country of deliverance."
+msgstr "Pays émetteur."
+
+#. module: passport
+#: help:res.passport,birth_date:0
+msgid "Date of birth on passport."
+msgstr "Date de naissance sur le passeport."
+
+#. module: passport
+#: help:res.passport,gender:0
+msgid "Gender."
+msgstr "Sexe."
+
+#. module: passport
+#: model:ir.actions.act_window,name:passport.action_passport_tree_list
+#: model:ir.model,name:passport.model_res_passport view:res.partner:0
+#: field:res.partner,passport_ids:0
+msgid "Passport"
+msgstr "Passeport"
+
+#. module: passport
+#: field:res.passport,country_id:0
+msgid "Delivery country"
+msgstr "Pays de délivrance"
+
+#. module: passport
+#: field:res.passport,name:0
+msgid "Owner name"
+msgstr "Nom du propriétaire"
+
+#. module: passport
+#: field:res.passport,gender:0
+msgid "Gender"
+msgstr "Sexe"
+
+#. module: passport
+#: field:res.passport,number:0
+msgid "Passport No"
+msgstr "No du passeport"
+
+#. module: passport
+#: help:res.passport,expiration_date:0
+msgid "Expiration date of passport."
+msgstr "Date d'expiration sur le passeport."
+
+#. module: passport
+#: view:res.passport:0
+msgid "PassportTree"
+msgstr "PassportTree"
+
+#. module: passport
+#: code:addons/passport/res_partner.py:39
+#, python-format
+msgid "New Passport"
+msgstr "Nouveau passeport"
+
+#. module: passport
+#: view:res.passport:0
+msgid "PassportForm"
+msgstr "PassportForm"
+
+#. module: passport
+#: field:res.passport,partner_id:0
+msgid "Contact"
+msgstr "Contact"
+
+#. module: passport
+#: help:res.passport,number:0
+msgid "Passport number."
+msgstr "Numéro du passeport."
+
+#. module: passport
+#: selection:res.passport,gender:0
+msgid "Female"
+msgstr "Femme"
+
+#. module: passport
+#: help:res.passport,name:0
+msgid "Owner name (As printed into the passport)."
+msgstr "Nom du propriétaire (Comme écrit sur le passeport)."
+
+#. module: passport
+#: model:ir.model,name:passport.model_res_partner
+msgid "Partner"
+msgstr "Organisme"
+
+#. module: passport
+#: selection:res.passport,gender:0
+msgid "Male"
+msgstr "Homme"
+
+#. module: passport
+#: view:res.passport:0
+msgid "Owner name (As printed into the passport)"
+msgstr "Nom du propriétaire (Comme écrit sur le passeport)"
+
+#. module: passport
+#: field:res.passport,expiration_date:0
+msgid "Expiration date"
+msgstr "Date d'expiration"
+
+#. module: passport
+#: field:res.passport,birth_date:0
+msgid "Birth Date"
+msgstr "Date de naissance"
=== added file 'passport/i18n/passport.pot'
--- passport/i18n/passport.pot 1970-01-01 00:00:00 +0000
+++ passport/i18n/passport.pot 2014-02-25 00:25:27 +0000
@@ -0,0 +1,125 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * passport
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-02-24 23:40+0000\n"
+"PO-Revision-Date: 2014-02-24 23:40+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: passport
+#: help:res.passport,country_id:0
+msgid "Country of deliverance."
+msgstr ""
+
+#. module: passport
+#: help:res.passport,birth_date:0
+msgid "Date of birth on passport."
+msgstr ""
+
+#. module: passport
+#: help:res.passport,gender:0
+msgid "Gender."
+msgstr ""
+
+#. module: passport
+#: model:ir.actions.act_window,name:passport.action_passport_tree_list
+#: model:ir.model,name:passport.model_res_passport
+#: view:res.partner:0
+#: field:res.partner,passport_ids:0
+msgid "Passport"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,country_id:0
+msgid "Delivery country"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,name:0
+msgid "Owner name"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,gender:0
+msgid "Gender"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,number:0
+msgid "Passport No"
+msgstr ""
+
+#. module: passport
+#: help:res.passport,expiration_date:0
+msgid "Expiration date of passport."
+msgstr ""
+
+#. module: passport
+#: view:res.passport:0
+msgid "PassportTree"
+msgstr ""
+
+#. module: passport
+#: code:addons/passport/res_partner.py:39
+#, python-format
+msgid "New Passport"
+msgstr ""
+
+#. module: passport
+#: view:res.passport:0
+msgid "PassportForm"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,partner_id:0
+msgid "Contact"
+msgstr ""
+
+#. module: passport
+#: help:res.passport,number:0
+msgid "Passport number."
+msgstr ""
+
+#. module: passport
+#: selection:res.passport,gender:0
+msgid "Female"
+msgstr ""
+
+#. module: passport
+#: help:res.passport,name:0
+msgid "Owner name (As printed into the passport)."
+msgstr ""
+
+#. module: passport
+#: model:ir.model,name:passport.model_res_partner
+msgid "Partner"
+msgstr ""
+
+#. module: passport
+#: selection:res.passport,gender:0
+msgid "Male"
+msgstr ""
+
+#. module: passport
+#: view:res.passport:0
+msgid "Owner name (As printed into the passport)"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,expiration_date:0
+msgid "Expiration date"
+msgstr ""
+
+#. module: passport
+#: field:res.passport,birth_date:0
+msgid "Birth Date"
+msgstr ""
=== added file 'passport/res_partner.py'
--- passport/res_partner.py 1970-01-01 00:00:00 +0000
+++ passport/res_partner.py 2014-02-25 00:25:27 +0000
@@ -0,0 +1,31 @@
+# -*- 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 openerp.osv import orm, fields
+
+
+class res_partner(orm.Model):
+ _inherit = 'res.partner'
+ _columns = {
+ 'passport_ids': fields.one2many(
+ 'res.passport', 'partner_id', 'Passport'),
+ }
=== added file 'passport/res_partner_view.xml'
--- passport/res_partner_view.xml 1970-01-01 00:00:00 +0000
+++ passport/res_partner_view.xml 2014-02-25 00:25:27 +0000
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <record id="view_partner_form" model="ir.ui.view">
+ <field name="model">res.partner</field>
+ <field name="inherit_id" ref="base.view_partner_form"/>
+ <field name="arch" type="xml">
+ <notebook position="inside">
+ <page string="Passport" attrs="{'invisible': [('is_company','=',True)]}">
+ <field name="passport_ids" nolabel="1"/>
+ </page>
+ </notebook>
+ </field>
+ </record>
+
+ </data>
+</openerp>
=== added file 'passport/res_passport.py'
--- passport/res_passport.py 1970-01-01 00:00:00 +0000
+++ passport/res_passport.py 2014-02-25 00:25:27 +0000
@@ -0,0 +1,56 @@
+# -*- 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 openerp.osv import fields, orm
+
+
+class res_passport(orm.Model):
+ _description = 'Passport'
+ _name = 'res.passport'
+ _columns = {
+ 'name': fields.char(
+ 'Owner name', help='Owner name (As printed into the passport).'),
+ 'number': fields.char(
+ 'Passport No', size=50, help='Passport number.'),
+ 'country_id': fields.many2one(
+ 'res.country', 'Delivery country', help="Country of deliverance."),
+ 'expiration_date': fields.date(
+ 'Expiration date', help="Expiration date of passport."),
+ 'birth_date': fields.date('Birth Date',
+ help="Date of birth on passport."),
+ 'gender': fields.selection(
+ [('male', 'Male'),
+ ('female', 'Female')],
+ 'Gender', help="Gender."),
+ 'partner_id': fields.many2one('res.partner', 'Contact'),
+ }
+
+ def name_get(self, cr, uid, ids, context=None):
+ if type(ids) in (int, long):
+ ids = [ids]
+ res = []
+ for res_passport in self.browse(cr, uid, ids, context=context):
+ name = res_passport.name
+ if res_passport.country_id and res_passport.country_id.name:
+ name = '%s | %s' % (res_passport.country_id.name, name)
+ res.append((res_passport.id, name))
+ return res
=== added file 'passport/res_passport_view.xml'
--- passport/res_passport_view.xml 1970-01-01 00:00:00 +0000
+++ passport/res_passport_view.xml 2014-02-25 00:25:27 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" ?>
+<openerp>
+ <data>
+ <!-- Tree Views passport-->
+ <record model="ir.ui.view" id="passport_tree_view">
+ <field name="name">Passport Tree View</field>
+ <field name="model">res.passport</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="PassportTree" version="7.0">
+ <field name="country_id"/>
+ <field name="number"/>
+ <field name="expiration_date"/>
+ <field name="name"/>
+ </tree>
+ </field>
+ </record>
+
+ <!-- Form Views passport-->
+ <record model="ir.ui.view" id="passport_form_view">
+ <field name="name">Passport Form View</field>
+ <field name="model">res.passport</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="PassportForm" version="7.0" >
+ <group col="4">
+ <field name="country_id"/>
+ <field name="name" string="Owner name (As printed into the passport)"/>
+ <field name="number"/>
+ <field name="gender"/>
+ <field name="expiration_date"/>
+ <field name="birth_date"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <!-- Actions -->
+ <record model="ir.actions.act_window" id="action_passport_tree_list">
+ <field name="name">Passport</field>
+ <field name="view_id" ref="passport_tree_view"/>
+ <field name="res_model">res.passport</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+ </data>
+</openerp>
=== added directory 'passport/security'
=== added file 'passport/security/ir.model.access.csv'
--- passport/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ passport/security/ir.model.access.csv 2014-02-25 00:25:27 +0000
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_res_passport","res_passport_user","model_res_passport","base.group_user",1,1,1,1
=== added directory 'passport/tests'
=== added file 'passport/tests/__init__.py'
--- passport/tests/__init__.py 1970-01-01 00:00:00 +0000
+++ passport/tests/__init__.py 2014-02-25 00:25:27 +0000
@@ -0,0 +1,27 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# This module copyright (C) 2013 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_passport
+
+checks = [
+ test_passport,
+]
=== added file 'passport/tests/test_passport.py'
--- passport/tests/test_passport.py 1970-01-01 00:00:00 +0000
+++ passport/tests/test_passport.py 2014-02-25 00:25:27 +0000
@@ -0,0 +1,109 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# This module copyright (C) 2013 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
+from openerp.osv.orm import browse_record
+from datetime import date
+
+
+class Base_Test_passport(TransactionCase):
+ """
+ Simple test creating a passport
+ This is a base class for passport test cases.
+ Inherit from this and setup values.
+ """
+
+ def setUp(self, vals={}):
+ """
+ Setting up passport.
+ """
+ # Default test values
+ self.vals = {'name': 'This is a test passport name',
+ 'number': 'A200124789',
+ 'country_id': 1,
+ 'expiration_date': date(2013, 11, 14),
+ 'birth_date': date(1980, 11, 21),
+ 'gender': 'male',
+ }
+ super(Base_Test_passport, self).setUp()
+ # Overwrite vals if needed
+ self.vals = dict(self.vals.items() + vals.items())
+ # Create the passport object; we will be testing this, so store in self
+ res_passport = self.registry('res.passport')
+ self.passport_id = res_passport.create(self.cr, self.uid, self.vals, context=None)
+
+ def test_passport(self):
+ """
+ Checking the passport creation.
+ """
+ res_passport = self.registry('res.passport')
+ passport_obj = res_passport.browse(self.cr, self.uid, self.passport_id, context=None)
+ for field in self.vals:
+ val = passport_obj[field]
+ if type(val) == browse_record:
+ self.assertEquals(self.vals[field], val.id,
+ "IDs for %s don't match: (%i != %i)" %
+ (field, self.vals[field], val.id))
+ else:
+ self.assertEquals(str(self.vals[field]), str(val),
+ "Values for %s don't match: (%s != %s)" %
+ (field, str(self.vals[field]), str(val)))
+
+
+class Test_passport_bad(Base_Test_passport):
+ """
+ Simple test creating a passport, test against bad values
+ """
+ def setUp(self):
+ """
+ Setting up passport, then changing the values to test against.
+ """
+ super(Test_passport_bad, self).setUp()
+ # Change vals to something wrong
+ self.vals = {
+ 'name': 'This is the wrong passport name',
+ 'number': 'A111111111',
+ 'country_id': 0,
+ 'expiration_date': date(1999, 11, 14),
+ 'birth_date': date(1999, 11, 21),
+ 'gender': '',
+ }
+
+ def test_passport(self):
+ """
+ Checking the passport creation, assertions should all be false.
+ """
+ res_passport = self.registry('res.passport')
+ passport_obj = res_passport.browse(self.cr, self.uid, self.passport_id, context=None)
+ for field in self.vals:
+ val = passport_obj[field]
+ if type(val) == browse_record:
+ self.assertNotEqual(self.vals[field], val.id,
+ "IDs for %s don't match: (%i != %i)" %
+ (field, self.vals[field], val.id))
+ else:
+ self.assertNotEqual(str(self.vals[field]), str(val),
+ "Values for %s don't match: (%s != %s)" %
+ (field, str(self.vals[field]), str(val)))
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
References