Browse Source

[IMP] partner_contact_department: black, isort, prettier

14.0
Harald Panten 4 years ago
committed by newtratip
parent
commit
98f2e9c336
  1. 23
      partner_contact_department/__manifest__.py
  2. 8
      partner_contact_department/migrations/12.0.1.0.0/post-migration.py
  3. 28
      partner_contact_department/models/res_partner.py
  4. 1
      partner_contact_department/readme/CONTRIBUTORS.rst
  5. 25
      partner_contact_department/tests/test_recursion.py
  6. 27
      partner_contact_department/views/res_partner_department_view.xml
  7. 50
      partner_contact_department/views/res_partner_view.xml

23
partner_contact_department/__manifest__.py

@ -4,22 +4,19 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Partner Contact Department',
"name": "Partner Contact Department",
"summary": "Assign contacts to departments",
'version': '12.0.1.0.0',
'category': 'Customer Relationship Management',
'author': 'Tecnativa, '
'Odoo Community Association (OCA)',
"version": "13.0.1.0.0",
"category": "Customer Relationship Management",
"author": "Tecnativa, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
'website': 'https://github.com/OCA/partner-contact',
"website": "https://github.com/OCA/partner-contact",
"application": False,
'depends': [
'contacts',
],
'data': [
'security/ir.model.access.csv',
'views/res_partner_department_view.xml',
'views/res_partner_view.xml',
"depends": ["contacts"],
"data": [
"security/ir.model.access.csv",
"views/res_partner_department_view.xml",
"views/res_partner_view.xml",
],
"installable": True,
}

8
partner_contact_department/migrations/12.0.1.0.0/post-migration.py

@ -1,8 +0,0 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openupgradelib import openupgrade
@openupgrade.migrate(use_env=True)
def migrate(env, version):
env['res.partner.department']._parent_store_compute()

28
partner_contact_department/models/res_partner.py

@ -2,45 +2,35 @@
# © 2016 Tecnativa S.L. - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models, _
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class ResPartner(models.Model):
_inherit = 'res.partner'
_inherit = "res.partner"
department_id = fields.Many2one(
"res.partner.department",
"Department",
oldname="department"
"res.partner.department", "Department", oldname="department"
)
class ResPartnerDepartment(models.Model):
_name = 'res.partner.department'
_name = "res.partner.department"
_order = "parent_path"
_parent_order = "name"
_parent_store = True
_description = "Department"
name = fields.Char(
required=True,
translate=True
)
name = fields.Char(required=True, translate=True)
parent_id = fields.Many2one(
"res.partner.department",
"Parent department",
ondelete='restrict'
"res.partner.department", "Parent department", ondelete="restrict"
)
child_ids = fields.One2many(
"res.partner.department",
"parent_id",
"Child departments"
"res.partner.department", "parent_id", "Child departments"
)
parent_path = fields.Char(index=True)
@api.constrains('parent_id')
@api.constrains("parent_id")
def _check_parent_id(self):
if not self._check_recursion():
raise ValidationError(
_('Error! You cannot create recursive departments.'))
raise ValidationError(_("Error! You cannot create recursive departments."))

1
partner_contact_department/readme/CONTRIBUTORS.rst

@ -5,3 +5,4 @@
* Vicent Cubells <vicent.cubells@tecnativa.com>
* David Vidal <david.vidal@tecnativa.com>
* Nikul Chaudhary <nikulchaudhary2112@gmail.com>
* Harald Panten <harald.panten@sygel.es>

25
partner_contact_department/tests/test_recursion.py

@ -1,29 +1,26 @@
# © 2016 Tecnativa - Vicent Cubells
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0).
from odoo.exceptions import UserError
from odoo.tests import common
from odoo.exceptions import ValidationError
class TestRecursion(common.SavepointCase):
@classmethod
def setUpClass(cls):
super(TestRecursion, cls).setUpClass()
cls.department_obj = cls.env['res.partner.department']
cls.department_obj = cls.env["res.partner.department"]
# Instances
cls.dpt1 = cls.department_obj.create({'name': 'Dpt. 1'})
cls.dpt2 = cls.department_obj.create({
'name': 'Dep. 2',
'parent_id': cls.dpt1.id
})
cls.dpt1 = cls.department_obj.create({"name": "Dpt. 1"})
cls.dpt2 = cls.department_obj.create(
{"name": "Dep. 2", "parent_id": cls.dpt1.id}
)
def test_recursion(self):
""" Testing recursion """
self.dpt3 = self.department_obj.create({
'name': 'Dep. 3',
'parent_id': self.dpt2.id
})
self.dpt3 = self.department_obj.create(
{"name": "Dep. 3", "parent_id": self.dpt2.id}
)
# Creating a parent's child department using dpt1.
with self.assertRaises(ValidationError):
self.dpt1.write(vals={'parent_id': self.dpt3.id})
with self.assertRaises(UserError):
self.dpt1.write(vals={"parent_id": self.dpt3.id})

27
partner_contact_department/views/res_partner_department_view.xml

@ -1,41 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="res_partner_department_action" model="ir.actions.act_window">
<field name="name">Departments</field>
<field name="res_model">res.partner.department</field>
<field name="view_type">form</field>
<field name="view_mode">tree</field>
</record>
<record id="res_partner_department_tree_view" model="ir.ui.view">
<field name="name">CRM department tree</field>
<field name="model">res.partner.department</field>
<field name="arch" type="xml">
<tree string="Departments" editable="top">
<field name="name"/>
<field name="parent_id"/>
<field name="name" />
<field name="parent_id" />
</tree>
</field>
</record>
<record id="res_partner_department_form_view" model="ir.ui.view">
<field name="name">CRM department form</field>
<field name="model">res.partner.department</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="parent_id"/>
<field name="child_ids"/>
<field name="name" />
<field name="parent_id" />
<field name="child_ids" />
</group>
</form>
</field>
</record>
<menuitem action="res_partner_department_action"
id="menu_res_partner_department"
parent="contacts.res_partner_menu_config"/>
<menuitem
action="res_partner_department_action"
id="menu_res_partner_department"
parent="contacts.res_partner_menu_config"
/>
</odoo>

50
partner_contact_department/views/res_partner_view.xml

@ -1,44 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="view_partner_form_department">
<field name="name">Partner form with department</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="//sheet/group//field[@name='function']" position="after">
<field name="department_id"
placeholder="Department"
attrs="{'invisible': [('is_company','=', True)]}"
options='{"no_open": True}'/>
<field
name="department_id"
placeholder="Department"
attrs="{'invisible': [('is_company','=', True)]}"
options='{"no_open": True}'
/>
</xpath>
<xpath expr="//field[@name='child_ids']/form//field[@name='function']"
position="after">
<field name="is_company" invisible="True"/>
<field name="department_id"
placeholder="Department"
attrs="{'invisible': [('is_company','=', True)]}"
options='{"no_open": True}'/>
<xpath
expr="//field[@name='child_ids']/form//field[@name='function']"
position="after"
>
<field name="is_company" invisible="True" />
<field
name="department_id"
placeholder="Department"
attrs="{'invisible': [('is_company','=', True)]}"
options='{"no_open": True}'
/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="view_res_partner_filter_department">
<field name="name">Partner search with department</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_res_partner_filter"/>
<field name="inherit_id" ref="base.view_res_partner_filter" />
<field name="arch" type="xml">
<field name="category_id" position="after">
<field name="department_id"/>
<field name="department_id" />
</field>
<filter name="salesperson" position="after">
<filter name="department"
string="Department"
domain="[('is_company', '=', False)]"
context="{'group_by': 'department_id'}"/>
<filter
name="department"
string="Department"
domain="[('is_company', '=', False)]"
context="{'group_by': 'department_id'}"
/>
</filter>
</field>
</record>
</odoo>
Loading…
Cancel
Save