← Back to team overview

openerp-community-reviewer team mailing list archive

[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