diff --git a/dynamic_partner_fields/README.rst b/dynamic_partner_fields/README.rst new file mode 100644 index 000000000..a8ea735ee --- /dev/null +++ b/dynamic_partner_fields/README.rst @@ -0,0 +1,44 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Partner Custom Fields +===================== + +Partner Custom Fields + +Installation +============ +- www.odoo.com/documentation/13.0/setup/install.html +- Install our custom addon + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: + Ajmal J K @ Cybrosys + Version 14: Minhaj T @cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ \ No newline at end of file diff --git a/dynamic_partner_fields/__init__.py b/dynamic_partner_fields/__init__.py new file mode 100644 index 000000000..350976f47 --- /dev/null +++ b/dynamic_partner_fields/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +from . import models +from . import wizard diff --git a/dynamic_partner_fields/__manifest__.py b/dynamic_partner_fields/__manifest__.py new file mode 100644 index 000000000..9d4278a36 --- /dev/null +++ b/dynamic_partner_fields/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +{ + 'name': 'Partner Custom Fields', + 'version': '14.0.1.0.0', + 'summary': """Ability To Add Custom Fields in Partner From User Level""", + 'description': """Ability To Add Custom Fields in Partner From User Level,Partner Custom Fields, + Partner Dynamic Fields, odoo13, Dynamic Partner Fields, Dynamic Fields, Create Dynamic Fields, Community odoo Studio""", + 'category': 'Extra Tools', + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['contacts'], + 'data': [ + 'data/widget_data.xml', + 'security/ir.model.access.csv', + 'security/partner_security_group.xml', + 'wizard/partner_fields_view.xml', + 'views/partner_form_view.xml', + 'views/ir_fields_search_view.xml', + ], + 'images': ['static/description/banner.png'], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/dynamic_partner_fields/data/widget_data.xml b/dynamic_partner_fields/data/widget_data.xml new file mode 100644 index 000000000..afa0417a4 --- /dev/null +++ b/dynamic_partner_fields/data/widget_data.xml @@ -0,0 +1,40 @@ + + + + + + image + Image + + + + many2many_tags + Many2many Tags + + + + binary + Binary + + + + radio + Radio + + + + priority + Priority + + + + monetary + Monetary + + + + selection + Selection + + + diff --git a/dynamic_partner_fields/doc/RELEASE_NOTES.md b/dynamic_partner_fields/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..5bbeab9da --- /dev/null +++ b/dynamic_partner_fields/doc/RELEASE_NOTES.md @@ -0,0 +1,9 @@ +## Module + +#### 05.10.2020 +#### Version 14.0.1.0.0 +##### ADD + +- Initial Commit for dynamic_partner_fields + + diff --git a/dynamic_partner_fields/models/__init__.py b/dynamic_partner_fields/models/__init__.py new file mode 100644 index 000000000..08bc69f73 --- /dev/null +++ b/dynamic_partner_fields/models/__init__.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +from . import ir_model_fields +from . import field_widgets + + diff --git a/dynamic_partner_fields/models/field_widgets.py b/dynamic_partner_fields/models/field_widgets.py new file mode 100644 index 000000000..a49619825 --- /dev/null +++ b/dynamic_partner_fields/models/field_widgets.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +from odoo import api, models, fields, _ + + +class FieldWidgets(models.Model): + """We can't filter a selection field dynamically + so when we select a field its widgets also need to change according to the selected + field type, we can't do it by a 'selection' field, need a 'Many2one' field. + """ + + _name = 'partner.field.widgets' + _rec_name = 'description' + _description = 'Field Widgets' + + name = fields.Char(string="Name") + description = fields.Char(string="Description") diff --git a/dynamic_partner_fields/models/ir_model_fields.py b/dynamic_partner_fields/models/ir_model_fields.py new file mode 100644 index 000000000..d514533ae --- /dev/null +++ b/dynamic_partner_fields/models/ir_model_fields.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +from odoo import api, models, fields, _ + + +class IrModelFields(models.Model): + """Adding a new field to understand the dynamically created fields.""" + + _inherit = 'ir.model.fields' + + is_partner_dynamic = fields.Boolean(string="Dynamic Field") diff --git a/dynamic_partner_fields/security/ir.model.access.csv b/dynamic_partner_fields/security/ir.model.access.csv new file mode 100644 index 000000000..b564eb3b0 --- /dev/null +++ b/dynamic_partner_fields/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +"access_wizard_partner_dynamic_fields_base_user","wizard.partner.dynamic.fields.base.user","model_partner_dynamic_fields","base.group_user",1,1,1,1 +"access_partner_field_widgets_base_user","wizard.partner.field.widgets.base.user","model_partner_field_widgets","base.group_user",1,1,1,1 + diff --git a/dynamic_partner_fields/security/partner_security_group.xml b/dynamic_partner_fields/security/partner_security_group.xml new file mode 100644 index 000000000..b67fa16f6 --- /dev/null +++ b/dynamic_partner_fields/security/partner_security_group.xml @@ -0,0 +1,8 @@ + + + + + Create Partner Custom Fields + + + diff --git a/dynamic_partner_fields/static/description/banner.png b/dynamic_partner_fields/static/description/banner.png new file mode 100644 index 000000000..bcbc7f7af Binary files /dev/null and b/dynamic_partner_fields/static/description/banner.png differ diff --git a/dynamic_partner_fields/static/description/icon.png b/dynamic_partner_fields/static/description/icon.png new file mode 100644 index 000000000..3a915229a Binary files /dev/null and b/dynamic_partner_fields/static/description/icon.png differ diff --git a/dynamic_partner_fields/static/description/images/banner_barcode_scanning.jpeg b/dynamic_partner_fields/static/description/images/banner_barcode_scanning.jpeg new file mode 100644 index 000000000..529143e4e Binary files /dev/null and b/dynamic_partner_fields/static/description/images/banner_barcode_scanning.jpeg differ diff --git a/dynamic_partner_fields/static/description/images/banner_currency_total.png b/dynamic_partner_fields/static/description/images/banner_currency_total.png new file mode 100644 index 000000000..6153ed719 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/banner_currency_total.png differ diff --git a/dynamic_partner_fields/static/description/images/banner_customer_sequence.jpeg b/dynamic_partner_fields/static/description/images/banner_customer_sequence.jpeg new file mode 100644 index 000000000..7451342d6 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/banner_customer_sequence.jpeg differ diff --git a/dynamic_partner_fields/static/description/images/banner_previous_rates.jpeg b/dynamic_partner_fields/static/description/images/banner_previous_rates.jpeg new file mode 100644 index 000000000..e10c28799 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/banner_previous_rates.jpeg differ diff --git a/dynamic_partner_fields/static/description/images/banner_product_branding.png b/dynamic_partner_fields/static/description/images/banner_product_branding.png new file mode 100644 index 000000000..aa12beabb Binary files /dev/null and b/dynamic_partner_fields/static/description/images/banner_product_branding.png differ diff --git a/dynamic_partner_fields/static/description/images/banner_product_expiry.jpeg b/dynamic_partner_fields/static/description/images/banner_product_expiry.jpeg new file mode 100644 index 000000000..84a872d44 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/banner_product_expiry.jpeg differ diff --git a/dynamic_partner_fields/static/description/images/checked.png b/dynamic_partner_fields/static/description/images/checked.png new file mode 100644 index 000000000..578cedb80 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/checked.png differ diff --git a/dynamic_partner_fields/static/description/images/cybrosys.png b/dynamic_partner_fields/static/description/images/cybrosys.png new file mode 100644 index 000000000..d76b5bafb Binary files /dev/null and b/dynamic_partner_fields/static/description/images/cybrosys.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_1.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_1.png new file mode 100644 index 000000000..191c3de6e Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_1.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_2.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_2.png new file mode 100644 index 000000000..41f98e400 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_2.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_3.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_3.png new file mode 100644 index 000000000..f6f576c94 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_3.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_4.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_4.png new file mode 100644 index 000000000..978fda97b Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_4.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_5.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_5.png new file mode 100644 index 000000000..7e9715c88 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_5.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_6.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_6.png new file mode 100644 index 000000000..1a843b713 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_6.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_7.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_7.png new file mode 100644 index 000000000..06ef319d3 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_7.png differ diff --git a/dynamic_partner_fields/static/description/images/dynamic_partner_fields_8.png b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_8.png new file mode 100644 index 000000000..286635d68 Binary files /dev/null and b/dynamic_partner_fields/static/description/images/dynamic_partner_fields_8.png differ diff --git a/dynamic_partner_fields/static/description/index.html b/dynamic_partner_fields/static/description/index.html new file mode 100644 index 000000000..0c20f90e1 --- /dev/null +++ b/dynamic_partner_fields/static/description/index.html @@ -0,0 +1,593 @@ +
+ cybrosys-logo
+
+
+
+

Partner Custom Fields

+

Create Custom Fields on Partner from User + level.

+
+

Key Highlights

+
    +
  • checkCreates + custom fields on partner. +
  • +
+
+
+
+
+
+
+
+ +
+
+ +

Overview

+
+

+ The Partner Custom Fields helps with easy creation of custom fields on partner without any coding. This module helps to add new fields on the partner’s form as per one’s requirement. From the partner view, one can click create fields and can create a new custom field without any coding. +

+
+
+ +

Dynamic Partner Fields

+
+
    +
  • + Creates + custom fields on the partner without coding +
  • +
  • + Can + easily set the position of fields +
  • +
  • + Can + select widgets for fields +
  • +
  • + Can + set the field properties (help,required,copied,read-only,indexed). +
  • +
  • + Can + easily filter the dynamically created fields from settings. +
  • +
+
+ +
+
+

Screenshots

+
+
+
+ +
+
+
+
+ + + + + + + + + + + + + + +
+
    +
+
+
+
+
+
+
+

Suggested Products

+
+ +
+
+

Our Service

+
+ +
+
+
+

Our Industries

+
+ +
+
+
+
+ Odoo Industry
+
+
+

+ + Trading

+

+ Easily procure and sell your products.

+
+
+
+
+
+ Odoo Industry +
+
+
+

+ + Manufacturing

+

+ Plan, track and schedule your operations.

+
+
+
+
+
+ + Odoo Industry
+
+
+

+ + Restaurant

+

+ Run your bar or restaurant methodical.

+
+
+
+
+
+ Odoo Industry
+
+
+

+ + POS

+

+ Easy configuring and convivial selling.

+
+
+
+
+
+ Odoo Industry
+
+
+

+ + E-commerce & Website

+

+ Mobile friendly, awe-inspiring product pages.

+
+
+
+
+
+ + Odoo Industry
+
+
+

+ + Hotel Management

+

+ An all-inclusive hotel management application.

+
+
+
+
+
+ + Odoo Industry
+
+
+

+ + Education

+

+ A Collaborative platform for educational management.

+
+
+
+
+
+ Odoo Industry
+
+
+

+ + Service Management

+

+ Keep track of services and invoice accordingly.

+
+
+
+
+
+ +
+
+
+

Need Any Help?

+
+

If you have anything to share with us based on your use of this module, please + let us know. We are ready to offer our support.

+
+

Email us

+

odoo@cybrosys.com / info@cybrosys.com

+
+
+

Contact Us

+ www.cybrosys.com +
+
+
+
+
+
+
+
+
+ +
+ + + + + + + +
+
+
+ \ No newline at end of file diff --git a/dynamic_partner_fields/views/ir_fields_search_view.xml b/dynamic_partner_fields/views/ir_fields_search_view.xml new file mode 100644 index 000000000..7e7093ce1 --- /dev/null +++ b/dynamic_partner_fields/views/ir_fields_search_view.xml @@ -0,0 +1,15 @@ + + + + + ir.model.fields.partner.dynamic.fields + ir.model.fields + + + + + + + + + diff --git a/dynamic_partner_fields/views/partner_form_view.xml b/dynamic_partner_fields/views/partner_form_view.xml new file mode 100644 index 000000000..224527776 --- /dev/null +++ b/dynamic_partner_fields/views/partner_form_view.xml @@ -0,0 +1,23 @@ + + + + + view.partner.form.dynamic.fields + res.partner + + + + +
+ +
+
+
+
+
diff --git a/dynamic_partner_fields/wizard/__init__.py b/dynamic_partner_fields/wizard/__init__.py new file mode 100644 index 000000000..9195f5daa --- /dev/null +++ b/dynamic_partner_fields/wizard/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +from . import partner_fields + + diff --git a/dynamic_partner_fields/wizard/partner_fields.py b/dynamic_partner_fields/wizard/partner_fields.py new file mode 100644 index 000000000..93d40453c --- /dev/null +++ b/dynamic_partner_fields/wizard/partner_fields.py @@ -0,0 +1,136 @@ +# -*- coding: utf-8 -*- +################################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2019-TODAY Cybrosys Technologies (). +# Author: Ajmal JK () +# +# This program is free software: you can modify +# it under the terms of the GNU Affero General Public License (AGPL) 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 . +# +################################################################################### + +import xml.etree.ElementTree as xee +from odoo import api, models, fields, _ + + +class PartnerDynamicFields(models.TransientModel): + _name = 'partner.dynamic.fields' + _description = 'Dynamic Fields' + _inherit = 'ir.model.fields' + + @api.model + def get_possible_field_types(self): + """Return all available field types other than 'one2many' and 'reference' fields.""" + field_list = sorted((key, key) for key in fields.MetaField.by_type) + print("field_list", field_list) + field_list.remove(('one2many', 'one2many')) + field_list.remove(('reference', 'reference')) + return field_list + + def set_domain(self): + """Return the fields that currently present in the form""" + view_id = self.env.ref('base.view_partner_form') + view_arch = str(view_id.arch_base) + doc = xee.fromstring(view_arch) + field_list = [] + for tag in doc.findall('.//field'): + if tag.attrib.get('invisible'): + pass + else: + field_list.append(tag.attrib['name']) + model_id = self.env['ir.model'].sudo().search([('model', '=', 'res.partner')]) + return [('model_id', '=', model_id.id), ('state', '=', 'base'), ('name', 'in', field_list)] + + def _set_default(self): + model_id = self.env['ir.model'].sudo().search([('model', '=', 'res.partner')]) + return [('id', '=', model_id.id)] + + def create_fields(self): + self.env['ir.model.fields'].sudo().create({'name': self.name, + 'field_description': self.field_description, + 'model_id': self.model_id.id, + 'ttype': self.field_type, + 'relation': self.ref_model_id.model, + 'required': self.required, + 'index': self.index, + 'store': self.store, + 'help': self.help, + 'readonly': self.readonly, + 'selection': self.selection_field, + 'copied': self.copied, + 'is_partner_dynamic': True + }) + inherit_id = self.env.ref('base.view_partner_form') + arch_base = _('' + '' + '' + '' + '' + '') % (self.position_field.name, self.position, self.name) + if self.widget: + arch_base = _('' + '' + '' + '' + '' + '') % (self.position_field.name, self.position, self.name, self.widget.name) + + self.env['ir.ui.view'].sudo().create({'name': 'partner.dynamic.fields.%s' % self.name, + 'type': 'form', + 'model': 'res.partner', + 'mode': 'extension', + 'inherit_id': inherit_id.id, + 'arch_base': arch_base, + 'active': True}) + return { + 'type': 'ir.actions.client', + 'tag': 'reload', + } + + position_field = fields.Many2one('ir.model.fields', string='Field Name', + domain=set_domain, required=True, + help="Note: Choosing the Fields 'Phone', 'Email', 'Mobile' and 'Address' as Position" + " field may displace the newly created field. ") + position = fields.Selection([('before', 'Before'), + ('after', 'After')], string='Position', required=True) + model_id = fields.Many2one('ir.model', string='Model', required=True, index=True, ondelete='cascade', + help="The model this field belongs to", domain=_set_default) + ref_model_id = fields.Many2one('ir.model', string='Model', index=True) + # In odoo 13 the field 'selection' is deprecated, so adding a new field to get the selection values. + selection_field = fields.Char(string="Selection Options") + rel_field = fields.Many2one('ir.model.fields', string='Related Field') + field_type = fields.Selection(selection='get_possible_field_types', string='Field Type', required=True) + ttype = fields.Selection(string="Field Type", related='field_type') + widget = fields.Many2one('partner.field.widgets', string='Widget') + groups = fields.Many2many('res.groups', 'partner_dynamic_fields_group_rel', 'field_id', 'group_id') + extra_features = fields.Boolean(string="Show Extra Properties") + + @api.depends('field_type') + @api.onchange('field_type') + def onchange_field_type(self): + if self.field_type: + if self.field_type == 'binary': + return {'domain': {'widget': [('name', '=', 'image')]}} + elif self.field_type == 'many2many': + return {'domain': {'widget': [('name', 'in', ['many2many_tags', 'binary'])]}} + elif self.field_type == 'selection': + return {'domain': {'widget': [('name', 'in', ['radio', 'priority'])]}} + elif self.field_type == 'float': + return {'domain': {'widget': [('name', '=', 'monetary')]}} + elif self.field_type == 'many2one': + return {'domain': {'widget': [('name', '=', 'selection')]}} + else: + return {'domain': {'widget': [('id', '=', False)]}} + return {'domain': {'widget': [('id', '=', False)]}} diff --git a/dynamic_partner_fields/wizard/partner_fields_view.xml b/dynamic_partner_fields/wizard/partner_fields_view.xml new file mode 100644 index 000000000..db884f495 --- /dev/null +++ b/dynamic_partner_fields/wizard/partner_fields_view.xml @@ -0,0 +1,65 @@ + + + + + partner.dynamic.fields.form + partner.dynamic.fields + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + + Create Custom Fields + partner.dynamic.fields + form + + new + + +