From 298f75a2e712b7c3de4a0563d20528b4b170c797 Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Wed, 3 Aug 2016 13:00:30 +0200 Subject: [PATCH 1/7] [CHG] base_custom_info: Relicense to LGPL with all authors' consent # Conflicts: # base_custom_info/__manifest__.py --- base_custom_info/README.rst | 6 +++--- base_custom_info/__init__.py | 2 +- base_custom_info/__manifest__.py | 2 +- base_custom_info/models/__init__.py | 2 +- base_custom_info/models/custom_info.py | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/base_custom_info/README.rst b/base_custom_info/README.rst index 005080fa4..60eecd504 100644 --- a/base_custom_info/README.rst +++ b/base_custom_info/README.rst @@ -1,6 +1,6 @@ -.. 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 +.. image:: https://img.shields.io/badge/licence-LGPL--3-blue.svg + :target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 ================ Base Custom Info diff --git a/base_custom_info/__init__.py b/base_custom_info/__init__.py index 5faa0139b..cc6e9affa 100644 --- a/base_custom_info/__init__.py +++ b/base_custom_info/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # © 2015 Antiun Ingeniería S.L. - Sergio Teruel # © 2015 Antiun Ingeniería S.L. - Carlos Dauden -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html from . import models diff --git a/base_custom_info/__manifest__.py b/base_custom_info/__manifest__.py index b64308e55..603362e2f 100644 --- a/base_custom_info/__manifest__.py +++ b/base_custom_info/__manifest__.py @@ -31,5 +31,5 @@ 'Odoo Community Association (OCA)', 'website': 'http://www.antiun.com', 'license': 'AGPL-3', - 'installable': False, + 'installable': True, } diff --git a/base_custom_info/models/__init__.py b/base_custom_info/models/__init__.py index 278faf2ff..4ce49af98 100644 --- a/base_custom_info/models/__init__.py +++ b/base_custom_info/models/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # © 2015 Antiun Ingeniería S.L. - Sergio Teruel # © 2015 Antiun Ingeniería S.L. - Carlos Dauden -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html from . import custom_info diff --git a/base_custom_info/models/custom_info.py b/base_custom_info/models/custom_info.py index ed353cce2..297a25ade 100644 --- a/base_custom_info/models/custom_info.py +++ b/base_custom_info/models/custom_info.py @@ -2,7 +2,7 @@ # © 2015 Antiun Ingeniería S.L. - Sergio Teruel # © 2015 Antiun Ingeniería S.L. - Carlos Dauden # © 2015 Antiun Ingeniería S.L. - Jairo Llopis -# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html from openerp import api, fields, models From 4378c7d4be00e96c2f105a8e9a7ea0b2203dc224 Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Wed, 3 Aug 2016 17:18:46 +0200 Subject: [PATCH 2/7] [IMP]base_custom_info: New types and access rules system. * Now you can define properties types, and access rules are inherited from the model/record linked to the custom info record. * Simplified version of computed value. * Implement for res.partner. * Add tests and fix bugs discovered in the meantime. * Allow to disable partner custom info tab, and custom info menu. * All of it can be set within general settings. * Now, by default, this module does not display custom info for partners unless in demo mode. Better fit for a base module. * You can disable the top menu entry too if it disturbs you, or enable it for everybody. * Give a special form when editing in partner custom info tab. * Sortable properties. * Sort values at onchange time. * Improve performance in onchange. * Split in several model files. # Conflicts: # base_custom_info/__manifest__.py # base_custom_info/i18n/es.po --- base_custom_info/README.rst | 158 +++++++++- base_custom_info/__init__.py | 2 +- base_custom_info/__manifest__.py | 19 +- base_custom_info/demo/custom.info.option.csv | 4 + .../demo/custom.info.property.csv | 6 + .../demo/custom.info.template.csv | 2 + base_custom_info/demo/res_groups.xml | 12 + .../migrations/9.0.2.0.0/pre-migrate.py | 10 + base_custom_info/models/__init__.py | 11 +- base_custom_info/models/custom_info.py | 134 +++------ .../models/custom_info_category.py | 34 +++ base_custom_info/models/custom_info_option.py | 38 +++ .../models/custom_info_property.py | 113 +++++++ .../models/custom_info_template.py | 69 +++++ base_custom_info/models/custom_info_value.py | 283 ++++++++++++++++++ base_custom_info/models/res_partner.py | 22 ++ base_custom_info/security/ir.model.access.csv | 13 +- base_custom_info/security/res_groups.xml | 31 ++ base_custom_info/tests/__init__.py | 5 + base_custom_info/tests/test_partner.py | 119 ++++++++ .../tests/test_value_conversion.py | 131 ++++++++ .../views/custom_info_category_view.xml | 53 ++++ .../views/custom_info_option_view.xml | 52 ++++ .../views/custom_info_property_view.xml | 63 +++- .../views/custom_info_template_view.xml | 38 ++- .../views/custom_info_value_view.xml | 80 ++++- base_custom_info/views/menu.xml | 44 ++- base_custom_info/views/res_partner_view.xml | 28 ++ base_custom_info/wizard/__init__.py | 6 + .../wizard/base_config_settings.py | 20 ++ .../wizard/base_config_settings_view.xml | 33 ++ 31 files changed, 1480 insertions(+), 153 deletions(-) create mode 100644 base_custom_info/demo/custom.info.option.csv create mode 100644 base_custom_info/demo/custom.info.property.csv create mode 100644 base_custom_info/demo/custom.info.template.csv create mode 100644 base_custom_info/demo/res_groups.xml create mode 100644 base_custom_info/migrations/9.0.2.0.0/pre-migrate.py create mode 100644 base_custom_info/models/custom_info_category.py create mode 100644 base_custom_info/models/custom_info_option.py create mode 100644 base_custom_info/models/custom_info_property.py create mode 100644 base_custom_info/models/custom_info_template.py create mode 100644 base_custom_info/models/custom_info_value.py create mode 100644 base_custom_info/models/res_partner.py create mode 100644 base_custom_info/security/res_groups.xml create mode 100644 base_custom_info/tests/__init__.py create mode 100644 base_custom_info/tests/test_partner.py create mode 100644 base_custom_info/tests/test_value_conversion.py create mode 100644 base_custom_info/views/custom_info_category_view.xml create mode 100644 base_custom_info/views/custom_info_option_view.xml create mode 100644 base_custom_info/views/res_partner_view.xml create mode 100644 base_custom_info/wizard/__init__.py create mode 100644 base_custom_info/wizard/base_config_settings.py create mode 100644 base_custom_info/wizard/base_config_settings_view.xml diff --git a/base_custom_info/README.rst b/base_custom_info/README.rst index 60eecd504..6d6c57177 100644 --- a/base_custom_info/README.rst +++ b/base_custom_info/README.rst @@ -6,8 +6,126 @@ Base Custom Info ================ -This module allows to create custom fields in models without altering model's -structure. +This module allows you to attach custom information to records without the need +to alter the database structure too much. + +Definitions +=========== + +This module defines several concepts that you have to understand. + +Templates +--------- + +A *template* is a collection of *properties* that a record should have. +*Templates* always apply to a given model, and then you can choose among the +current templates for the model you are using when you edit a record of that +model. + +I.e., This addon includes a demo template called "Smart partners", that applies +to the model ``res.partner``, so if you edit any partner, you can choose that +template and get its properties autofilled. + +Properties +---------- + +A *property* is the "name" of the field. *Templates* can have any amount of +*properties*, and when you apply a *template* to a record, it automatically +gets all of its *properties* filled, empty (unless they have a *Default +value*), ready to assign *values*. + +You can set a property to as *required* to force it have a value, although you +should keep in mind that for yes/no properties, this would mean that only *yes* +can be selected, and for numeric properties, zero would be forbidden. + +Also you can set *Minimum* and *Maximum* limits for every *property*, but those +limits are only used when the data type is text (to constrain its length) or +number. To skip this constraint, just set a maximum smaller than the minimum. + +*Properties* always belong to a template, and as such, to a model. + +*Properties* define the data type (text, number, yes/no...), and when the type +is "Selection", then you can define what *options* are available. + +I.e., the "Smart partners" *template* has the following *properties*: + +- Name of his/her teacher +- Amount of people that hates him/her for being so smart +- Average note on all subjects +- Does he/she believe he/she is the smartest person on earth? +- What weaknesses does he/she have? + +When you set that template to any partner, you will then be able to fill these +*properties* with *values*. + +Categories +---------- + +*Properties* can also belong to a *category*, which allows you to sort them in +a logical way, and makes further development easier. + +For example, the ``website_sale_custom_info`` addon uses these to display a +technical datasheet per product in your online shop, sorted and separated by +category. + +You are not required to give a *category* to every *property*. + +Options +------- + +When a *property*'s type is "Selection", then you define the *options* +available, so the *value* must be one of these *options*. + +I.e., the "What weaknesses does he/she have?" *property* has some options: + +- Loves junk food +- Needs videogames +- Huge glasses + +The *value* will always be one of these. + +Value +----- + +When you assign a *template* to a partner, and then you get the *properties* it +should have, you still have to set a *value* for each property. + +*Values* can be of different types (whole numbers, constrained selection, +booleans...), depending on how the *property* was defined. However, there is +always the ``value`` field, that is a text string, and converts automatically +to/from the correct type. + +Why would I need this? +~~~~~~~~~~~~~~~~~~~~~~ + +Imagine you have some partners that are foreign, and that for those partners +you need some extra information that is not needed for others, and you do not +want to fill the partners model with a lot of fields that will be empty most of +the time. + +In this case, you could define a *template* called "Foreign partners", which +will be applied to ``res.partner`` objects, and defines some *properties* that +these are expected to have. + +Then you could assign that *template* to a partner, and automatically you will +get a subtable of all the properties it should have, with tools to fill their +*values* correctly. + +Does this work with any model? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Yes and no. + +Yes, because this is a base module that provides the tools to make this work +with any model. + +No, because, although the tools are provided, they are only applied to the +``res.partner`` model. This is by design, because different models can have +different needs, and we don't want to depend on every possible model. + +So, if you want to apply this to other models, you will have to develop a +little additional addon that depends on this one. If you are a developer, refer +to the *Development* section below. Installation ============ @@ -18,6 +136,17 @@ concrete models. This module is a technical dependency and is to be installed in parallel to other modules. +Configuration +============= + +To enable the main *Custom Info* menu: + +#. Enable *Settings > General Settings > Manage custom information*. + +To enable partner's custom info tab: + +#. Enable *Settings > General Settings > Edit custom information in partners*. + Usage ===== @@ -26,7 +155,7 @@ expected for a given record. To define a template, you need to: -* Go to *Settings > Custom Info > Templates*. +* Go to *Custom Info > Templates*. * Create one. * Add some *Properties* to it. @@ -35,11 +164,19 @@ properties. To manage the properties, you need to: -* Go to *Settings > Custom Info > Properties*. +* Go to *Custom Info > Properties*. + +To manage the property categories, you need to: + +* Go to *Custom Info > Categories*. + +Some properties can have a number of options to choose, to manage them: + +* Go to *Custom Info > Options*. To manage their values, you need to: -* Go to *Settings > Custom Info > Values*. +* Go to *Custom Info > Values*. .. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas :alt: Try me on Runbot @@ -51,10 +188,19 @@ Development To create a module that supports custom information, just depend on this module and inherit from the ``custom.info`` model. +See an example in the ``product_custom_info`` addon. + Known issues / Roadmap ====================== -* All data types of custom information values are text strings. +* Custom properties cannot be shared among templates. +* You get an error if you press *Save & New* when setting property values in + partner form. +* `There seems to be a bug in the web client that makes subviews appear empty + after an onchange + `_. + This module includes a workaround for that, but the bug should be fixed and + the workaround removed. Bug Tracker =========== diff --git a/base_custom_info/__init__.py b/base_custom_info/__init__.py index cc6e9affa..a518dce55 100644 --- a/base_custom_info/__init__.py +++ b/base_custom_info/__init__.py @@ -3,4 +3,4 @@ # © 2015 Antiun Ingeniería S.L. - Carlos Dauden # License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html -from . import models +from . import models, wizard diff --git a/base_custom_info/__manifest__.py b/base_custom_info/__manifest__.py index 603362e2f..907468d1e 100644 --- a/base_custom_info/__manifest__.py +++ b/base_custom_info/__manifest__.py @@ -8,16 +8,27 @@ 'name': "Base Custom Info", 'summary': "Add custom field in models", 'category': 'Tools', - 'version': '9.0.1.0.0', + 'version': '9.0.2.0.0', 'depends': [ - 'base', + 'base_setup', ], 'data': [ + 'security/ir.model.access.csv', + 'security/res_groups.xml', + 'views/custom_info_category_view.xml', + 'views/custom_info_option_view.xml', 'views/custom_info_template_view.xml', 'views/custom_info_property_view.xml', 'views/custom_info_value_view.xml', 'views/menu.xml', - 'security/ir.model.access.csv', + 'views/res_partner_view.xml', + 'wizard/base_config_settings_view.xml', + ], + 'demo': [ + 'demo/custom.info.template.csv', + 'demo/custom.info.property.csv', + 'demo/custom.info.option.csv', + 'demo/res_groups.xml', ], "images": [ "images/menu.png", @@ -29,7 +40,7 @@ 'Incaser Informatica S.L., ' 'Tecnativa, ' 'Odoo Community Association (OCA)', - 'website': 'http://www.antiun.com', + 'website': 'https://www.tecnativa.com', 'license': 'AGPL-3', 'installable': True, } diff --git a/base_custom_info/demo/custom.info.option.csv b/base_custom_info/demo/custom.info.option.csv new file mode 100644 index 000000000..aa072dc80 --- /dev/null +++ b/base_custom_info/demo/custom.info.option.csv @@ -0,0 +1,4 @@ +id,name,property_ids:id +opt_food,Loves junk food,prop_weaknesses +opt_videogames,Needs videogames,prop_weaknesses +opt_glasses,Huge glasses,prop_weaknesses diff --git a/base_custom_info/demo/custom.info.property.csv b/base_custom_info/demo/custom.info.property.csv new file mode 100644 index 000000000..64c3a3066 --- /dev/null +++ b/base_custom_info/demo/custom.info.property.csv @@ -0,0 +1,6 @@ +id,name,template_id:id,field_type,default_value,required +prop_teacher,Name of his/her teacher,tpl_smart,str,, +prop_haters,Amount of people that hates him/her for being so smart,tpl_smart,int,, +prop_avg_note,Average note on all subjects,tpl_smart,float,,True +prop_smartypants,Does he/she believe he/she is the smartest person on earth?,tpl_smart,bool,, +prop_weaknesses,What weaknesses does he/she have?,tpl_smart,id,Huge glasses, diff --git a/base_custom_info/demo/custom.info.template.csv b/base_custom_info/demo/custom.info.template.csv new file mode 100644 index 000000000..1ec9e2bfd --- /dev/null +++ b/base_custom_info/demo/custom.info.template.csv @@ -0,0 +1,2 @@ +id,name,model +tpl_smart,Smart partners,res.partner diff --git a/base_custom_info/demo/res_groups.xml b/base_custom_info/demo/res_groups.xml new file mode 100644 index 000000000..be6dcbc2f --- /dev/null +++ b/base_custom_info/demo/res_groups.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/base_custom_info/migrations/9.0.2.0.0/pre-migrate.py b/base_custom_info/migrations/9.0.2.0.0/pre-migrate.py new file mode 100644 index 000000000..574e261dd --- /dev/null +++ b/base_custom_info/migrations/9.0.2.0.0/pre-migrate.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Jairo Llopis +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +# pragma: no-cover + + +def migrate(cr, version): + """Update database from previous versions, before updating module.""" + cr.execute( + "ALTER TABLE custom_info_value RENAME COLUMN value TO value_str") diff --git a/base_custom_info/models/__init__.py b/base_custom_info/models/__init__.py index 4ce49af98..e0593f285 100644 --- a/base_custom_info/models/__init__.py +++ b/base_custom_info/models/__init__.py @@ -1,6 +1,15 @@ # -*- coding: utf-8 -*- # © 2015 Antiun Ingeniería S.L. - Sergio Teruel # © 2015 Antiun Ingeniería S.L. - Carlos Dauden +# © 2016 Jairo Llopis # License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html -from . import custom_info +from . import ( + custom_info_template, + custom_info_property, + custom_info_category, + custom_info_option, + custom_info_value, + custom_info, + res_partner, +) diff --git a/base_custom_info/models/custom_info.py b/base_custom_info/models/custom_info.py index 297a25ade..7ef469e3a 100644 --- a/base_custom_info/models/custom_info.py +++ b/base_custom_info/models/custom_info.py @@ -1,121 +1,61 @@ # -*- coding: utf-8 -*- # © 2015 Antiun Ingeniería S.L. - Sergio Teruel # © 2015 Antiun Ingeniería S.L. - Carlos Dauden -# © 2015 Antiun Ingeniería S.L. - Jairo Llopis +# © 2016 Jairo Llopis # License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html from openerp import api, fields, models -class CustomInfoModelLink(models.AbstractModel): - _description = "A model that gets its ``ir.model`` computed" - _name = "custom.info.model_link" - - model = fields.Char( - index=True, - readonly=True, - required=True) - model_id = fields.Many2one( - 'ir.model', - 'Model', - compute="_compute_model_id", - store=True) - - @api.multi - @api.depends("model") - def _compute_model_id(self): - """Get a related model from its name, for better UI.""" - for s in self: - s.model_id = self.env["ir.model"].search([("model", "=", s.model)]) - - -class CustomInfoTemplate(models.Model): - """Defines custom properties expected for a given database object.""" - _description = "Custom information template" - _name = "custom.info.template" - _inherit = "custom.info.model_link" - _sql_constraints = [ - ("name_model", - "UNIQUE (name, model)", - "Another template with that name exists for that model."), - ] - - name = fields.Char(required=True, translate=True) - info_ids = fields.One2many( - 'custom.info.property', - 'template_id', - 'Properties') - - -class CustomInfoProperty(models.Model): - """Name of the custom information property.""" - _description = "Custom information property" - _name = "custom.info.property" - _sql_constraints = [ - ("name_template", - "UNIQUE (name, template_id)", - "Another property with that name exists for that template."), - ] - - name = fields.Char(required=True, translate=True) - template_id = fields.Many2one( - comodel_name='custom.info.template', - string='Template', - required=True) - info_value_ids = fields.One2many( - comodel_name="custom.info.value", - inverse_name="property_id", - string="Property Values") - - -class CustomInfoValue(models.Model): - _description = "Custom information value" - _name = "custom.info.value" - _inherit = "custom.info.model_link" - _rec_name = 'value' - _sql_constraints = [ - ("property_model_res", - "UNIQUE (property_id, model, res_id)", - "Another property with that name exists for that resource."), - ] - - res_id = fields.Integer("Resource ID", index=True, required=True) - property_id = fields.Many2one( - comodel_name='custom.info.property', - required=True, - string='Property') - name = fields.Char(related='property_id.name', readonly=True) - value = fields.Char(translate=True, index=True) +class CustomInfo(models.AbstractModel): + """Models that inherit this one will get custom information for free! + They will probably want to declare a default model in the context of the + :attr:`custom_info_template_id` field. -class CustomInfo(models.AbstractModel): + See example in :mod:`res_partner`. + """ _description = "Inheritable abstract model to add custom info in any model" _name = "custom.info" custom_info_template_id = fields.Many2one( comodel_name='custom.info.template', + domain=lambda self: [("model", "=", self._name)], string='Custom Information Template') custom_info_ids = fields.One2many( comodel_name='custom.info.value', inverse_name='res_id', domain=lambda self: [("model", "=", self._name)], + context={"embed": True}, auto_join=True, string='Custom Properties') @api.multi @api.onchange('custom_info_template_id') def _onchange_custom_info_template_id(self): - if not self.custom_info_template_id: - self.custom_info_ids = False - else: - info_list = self.custom_info_ids.mapped('property_id') - for info_name in self.custom_info_template_id.info_ids: - if info_name not in info_list: - self.custom_info_ids |= self.custom_info_ids.new({ - 'model': self._name, - 'property_id': info_name.id, - "res_id": self.id, - }) + new = [(5, False, False)] + for prop in self.custom_info_template_id.property_ids: + new += [(0, False, { + "property_id": prop.id, + "res_id": self.id, + "model": self._name, + })] + self.custom_info_ids = new + self.custom_info_ids._onchange_property_set_default_value() + self.custom_info_ids._inverse_value() + self.custom_info_ids._compute_value() + + # HACK https://github.com/OCA/server-tools/pull/492#issuecomment-237594285 + @api.multi + def onchange(self, values, field_name, field_onchange): + """Add custom info children values that will be probably changed.""" + subfields = ("category_id", "field_type", "required", "property_id", + "res_id", "model", "value", "value_str", "value_int", + "value_float", "value_bool", "value_id") + for subfield in subfields: + field_onchange.setdefault("custom_info_ids." + subfield, "") + return super(CustomInfo, self).onchange( + values, field_name, field_onchange) @api.multi def unlink(self): @@ -124,3 +64,13 @@ class CustomInfo(models.AbstractModel): if res: info_values.unlink() return res + + @api.multi + @api.returns("custom.info.value") + def get_custom_info_value(self, properties): + """Get ``custom.info.value`` records for the given property.""" + return self.env["custom.info.value"].search([ + ("model", "=", self._name), + ("res_id", "in", self.ids), + ("property_id", "in", properties.ids), + ]) diff --git a/base_custom_info/models/custom_info_category.py b/base_custom_info/models/custom_info_category.py new file mode 100644 index 000000000..f48551471 --- /dev/null +++ b/base_custom_info/models/custom_info_category.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# © 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html + +from openerp import api, fields, models + + +class CustomInfoCategory(models.Model): + _description = "Categorize custom info properties" + _name = "custom.info.category" + _order = "sequence, name" + + name = fields.Char(index=True, translate=True, required=True) + sequence = fields.Integer(index=True) + property_ids = fields.One2many( + comodel_name="custom.info.property", + inverse_name="category_id", + string="Properties", + help="Properties in this category.", + ) + + @api.multi + def check_access_rule(self, operation): + """You access a category if you access at least one property.""" + last = None + for prop in self.mapped("property_ids"): + try: + prop.check_access_rule(operation) + return + except Exception as last: + pass + if last: + raise last + return super(CustomInfoCategory, self).check_access_rule(operation) diff --git a/base_custom_info/models/custom_info_option.py b/base_custom_info/models/custom_info_option.py new file mode 100644 index 000000000..08d812c41 --- /dev/null +++ b/base_custom_info/models/custom_info_option.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# © 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html + +from openerp import api, fields, models + + +class CustomInfoOption(models.Model): + _description = "Available options for a custom property" + _name = "custom.info.option" + _order = "name" + + name = fields.Char(index=True, translate=True, required=True) + property_ids = fields.Many2many( + comodel_name="custom.info.property", + string="Properties", + help="Properties where this option is enabled.", + ) + value_ids = fields.One2many( + comodel_name="custom.info.value", + inverse_name="value_id", + string="Values", + help="Values that have set this option.", + ) + + @api.multi + def check_access_rule(self, operation): + """You access an option if you access at least one property.""" + last = None + for prop in self.mapped("property_ids"): + try: + prop.check_access_rule(operation) + return + except Exception as last: + pass + if last: + raise last + return super(CustomInfoOption, self).check_access_rule(operation) diff --git a/base_custom_info/models/custom_info_property.py b/base_custom_info/models/custom_info_property.py new file mode 100644 index 000000000..67917cff3 --- /dev/null +++ b/base_custom_info/models/custom_info_property.py @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- +# © 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html +from openerp import _, api, fields, models +from openerp.exceptions import UserError, ValidationError + + +class CustomInfoProperty(models.Model): + """Name of the custom information property.""" + _description = "Custom information property" + _name = "custom.info.property" + _order = "template_id, category_sequence, category_id, sequence, id" + _sql_constraints = [ + ("name_template", + "UNIQUE (name, template_id)", + "Another property with that name exists for that template."), + ] + + name = fields.Char(required=True, translate=True) + sequence = fields.Integer(index=True) + category_id = fields.Many2one( + comodel_name="custom.info.category", + string="Category", + ) + category_sequence = fields.Integer( + related="category_id.sequence", + store=True, + readonly=True, + ) + template_id = fields.Many2one( + comodel_name='custom.info.template', + string='Template', + required=True) + model = fields.Char( + related="template_id.model", + readonly=True, + auto_join=True, + ) + info_value_ids = fields.One2many( + comodel_name="custom.info.value", + inverse_name="property_id", + string="Property Values") + default_value = fields.Char( + translate=True, + help="Will be applied by default to all custom values of this " + "property. This is a char field, so you have to enter some value " + "that can be converted to the field type you choose.", + ) + required = fields.Boolean() + minimum = fields.Float( + help="For numeric fields, it means the minimum possible value; " + "for text fields, it means the minimum possible length. " + "If it is bigger than the maximum, then this check is skipped", + ) + maximum = fields.Float( + default=-1, + help="For numeric fields, it means the maximum possible value; " + "for text fields, it means the maximum possible length. " + "If it is smaller than the minimum, then this check is skipped", + ) + field_type = fields.Selection( + selection=[ + ("str", "Text"), + ("int", "Whole number"), + ("float", "Decimal number"), + ("bool", "Yes/No"), + ("id", "Selection"), + ], + default="str", + required=True, + help="Type of information that can be stored in the property.", + ) + option_ids = fields.Many2many( + comodel_name="custom.info.option", + string="Options", + help="When the field type is 'selection', choose the available " + "options here.", + ) + + @api.multi + def check_access_rule(self, operation): + """You access a property if you access its template.""" + self.mapped("template_id").check_access_rule(operation) + return super(CustomInfoProperty, self).check_access_rule(operation) + + @api.one + @api.constrains("default_value", "field_type") + def _check_default_value(self): + """Ensure the default value is valid.""" + if self.default_value: + try: + self.env["custom.info.value"]._transform_value( + self.default_value, self.field_type, self) + except ValueError: + selection = dict( + self._fields["field_type"].get_description(self.env) + ["selection"]) + raise ValidationError( + _("Default value %s cannot be converted to type %s.") % + (self.default_value, selection[self.field_type])) + + @api.multi + @api.onchange("required", "field_type") + def _onchange_required_warn(self): + """Warn if the required flag implies a possible weird behavior.""" + if self.required: + if self.field_type == "bool": + raise UserError( + _("If you require a Yes/No field, you can only set Yes.")) + if self.field_type in {"int", "float"}: + raise UserError( + _("If you require a numeric field, you cannot set it to " + "zero.")) diff --git a/base_custom_info/models/custom_info_template.py b/base_custom_info/models/custom_info_template.py new file mode 100644 index 000000000..16e814e0e --- /dev/null +++ b/base_custom_info/models/custom_info_template.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# © 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html + +from openerp import _, api, fields, models +from openerp.exceptions import ValidationError + + +class CustomInfoTemplate(models.Model): + """Defines custom properties expected for a given database object.""" + _description = "Custom information template" + _name = "custom.info.template" + _order = "model_id, name" + _sql_constraints = [ + ("name_model", + "UNIQUE (name, model)", + "Another template with that name exists for that model."), + ] + + name = fields.Char(required=True, translate=True) + model = fields.Char( + index=True, + readonly=True, + required=True) + model_id = fields.Many2one( + 'ir.model', + 'Model', + compute="_compute_model_id", + store=True, + ondelete="cascade", + ) + property_ids = fields.One2many( + 'custom.info.property', + 'template_id', + 'Properties', + oldname="info_ids", + context={"embed": True}, + ) + + @api.multi + @api.depends("model") + def _compute_model_id(self): + """Get a related model from its name, for better UI.""" + for s in self: + s.model_id = self.env["ir.model"].search([("model", "=", s.model)]) + + @api.multi + @api.constrains("model") + def _check_model(self): + """Ensure model exists.""" + for s in self: + if s.model not in self.env: + raise ValidationError(_("Model does not exist.")) + # Avoid error when updating base module and a submodule extends a + # model that falls out of this one's dependency graph + with self.env.norecompute(): + oldmodels = set(s.mapped("property_ids.info_value_ids.model")) + if oldmodels and {s.model} != oldmodels: + raise ValidationError( + _("You cannot change the model because it is in use.")) + + @api.multi + def check_access_rule(self, operation): + """You access a template if you access its model.""" + for s in self: + model = self.env[s.model] + model.check_access_rights(operation) + model.check_access_rule(operation) + return super(CustomInfoTemplate, self).check_access_rule(operation) diff --git a/base_custom_info/models/custom_info_value.py b/base_custom_info/models/custom_info_value.py new file mode 100644 index 000000000..321b25f22 --- /dev/null +++ b/base_custom_info/models/custom_info_value.py @@ -0,0 +1,283 @@ +# -*- coding: utf-8 -*- +# © 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html +from openerp import _, api, fields, models, SUPERUSER_ID +from openerp.exceptions import ValidationError +from openerp.tools.safe_eval import safe_eval + + +class CustomInfoValue(models.Model): + _description = "Custom information value" + _name = "custom.info.value" + _rec_name = 'value' + _order = ("model, res_id, category_sequence, category_id, " + "property_sequence, property_id") + _sql_constraints = [ + ("property_owner", + "UNIQUE (property_id, model, res_id)", + "Another property with that name exists for that resource."), + ] + + model = fields.Char( + related="property_id.model", + index=True, + readonly=True, + auto_join=True, + store=True, + ) + owner_id = fields.Reference( + selection="_selection_owner_id", + string="Owner", + compute="_compute_owner_id", + inverse="_inverse_owner_id", + help="Record that owns this custom value.", + ) + res_id = fields.Integer( + "Resource ID", + required=True, + index=True, + store=True, + ondelete="cascade", + ) + property_id = fields.Many2one( + comodel_name='custom.info.property', + required=True, + string='Property') + property_sequence = fields.Integer( + related="property_id.sequence", + store=True, + index=True, + readonly=True, + ) + category_sequence = fields.Integer( + related="property_id.category_id.sequence", + store=True, + readonly=True, + ) + category_id = fields.Many2one( + related="property_id.category_id", + store=True, + readonly=True, + ) + name = fields.Char(related='property_id.name', readonly=True) + field_type = fields.Selection(related="property_id.field_type") + field_name = fields.Char( + compute="_compute_field_name", + help="Technical name of the field where the value is stored.", + ) + required = fields.Boolean(related="property_id.required") + value = fields.Char( + compute="_compute_value", + inverse="_inverse_value", + search="_search_value", + help="Value, always converted to/from the typed field.", + ) + value_str = fields.Char( + string="Text value", + translate=True, + index=True, + ) + value_int = fields.Integer( + string="Whole number value", + index=True, + ) + value_float = fields.Float( + string="Decimal number value", + index=True, + ) + value_bool = fields.Boolean( + string="Yes/No value", + index=True, + ) + value_id = fields.Many2one( + comodel_name="custom.info.option", + string="Selection value", + ondelete="cascade", + domain="[('property_ids', 'in', [property_id])]", + ) + + @api.multi + def check_access_rule(self, operation): + """You access a value if you access its property and owner record.""" + if self.env.uid == SUPERUSER_ID: + return + for s in self: + s.property_id.check_access_rule(operation) + s.owner_id.check_access_rights(operation) + s.owner_id.check_access_rule(operation) + return super(CustomInfoValue, self).check_access_rule(operation) + + @api.model + def create(self, vals): + """Skip constrains in 1st lap.""" + # HACK https://github.com/odoo/odoo/pull/13439 + if "value" in vals: + self.env.context.skip_required = True + return super(CustomInfoValue, self).create(vals) + + @api.model + def _selection_owner_id(self): + """You can choose among models linked to a template.""" + models = self.env["ir.model.fields"].search([ + ("ttype", "=", "many2one"), + ("relation", "=", "custom.info.template"), + ("model_id.transient", "=", False), + "!", ("model", "=like", "custom.info.%"), + ]).mapped("model_id") + models = models.search([("id", "in", models.ids)], order="name") + return [(m.model, m.name) for m in models + if m.model in self.env and self.env[m.model]._auto] + + @api.multi + @api.depends("property_id.field_type") + def _compute_field_name(self): + """Get the technical name where the real typed value is stored.""" + for s in self: + s.field_name = "value_{!s}".format(s.property_id.field_type) + + @api.multi + @api.depends("res_id", "model") + def _compute_owner_id(self): + """Get the id from the linked record.""" + for s in self: + s.owner_id = "{},{}".format(s.model, s.res_id) + + @api.multi + def _inverse_owner_id(self): + """Store the owner according to the model and ID.""" + for s in self: + s.model = s.owner_id._name + s.res_id = s.owner_id.id + + @api.multi + @api.depends("property_id.field_type", "field_name", "value_str", + "value_int", "value_float", "value_bool", "value_id") + def _compute_value(self): + """Get the value as a string, from the original field.""" + for s in self: + if s.field_type == "id": + s.value = ", ".join(s.value_id.mapped("display_name")) + elif s.field_type == "bool": + s.value = _("Yes") if s.value_bool else _("No") + else: + s.value = getattr(s, s.field_name, False) + + @api.multi + def _inverse_value(self): + """Write the value correctly converted in the typed field.""" + for s in self: + s[s.field_name] = self._transform_value( + s.value, s.field_type, s.property_id) + + @api.one + @api.constrains("required", "field_name", "value_str", "value_int", + "value_float", "value_bool", "value_id") + def _check_required(self): + """Ensure required fields are filled""" + # HACK https://github.com/odoo/odoo/pull/13439 + try: + del self.env.context.skip_required + except AttributeError: + if self.required and not self[self.field_name]: + raise ValidationError( + _("Property %s is required.") % + self.property_id.display_name) + + @api.one + @api.constrains("property_id", "field_type", "field_name", + "value_str", "value_int", "value_float") + def _check_min_max_limits(self): + """Ensure value falls inside the property's stablished limits.""" + minimum, maximum = self.property_id.minimum, self.property_id.maximum + if minimum <= maximum: + value = self[self.field_name] + if not value: + # This is a job for :meth:`.~_check_required` + return + if self.field_type == "str": + number = len(self.value_str) + message = _( + "Length for %(prop)s is %(val)s, but it should be " + "between %(min)d and %(max)d.") + elif self.field_type in {"int", "float"}: + number = value + if self.field_type == "int": + message = _( + "Value for %(prop)s is %(val)s, but it should be " + "between %(min)d and %(max)d.") + else: + message = _( + "Value for %(prop)s is %(val)s, but it should be " + "between %(min)f and %(max)f.") + else: + return + if not minimum <= number <= maximum: + raise ValidationError(message % { + "prop": self.property_id.display_name, + "val": number, + "min": minimum, + "max": maximum, + }) + + @api.multi + @api.onchange("property_id") + def _onchange_property_set_default_value(self): + """Load default value for this property.""" + for record in self: + if not record.value and record.property_id.default_value: + record.value = record.property_id.default_value + + @api.model + def _transform_value(self, value, format_, properties=None): + """Transforms a text value to the expected format. + + :param str/bool value: + Custom value in raw string. + + :param str format_: + Target conversion format for the value. Must be available among + ``custom.info.property`` options. + + :param recordset properties: + Useful when :param:`format_` is ``id``, as it helps to ensure the + option is available in these properties. If :param:`format_` is + ``id`` and :param:`properties` is ``None``, no transformation will + be made for :param:`value`. + """ + if not value: + value = False + elif format_ == "id" and properties: + value = self.env["custom.info.option"].search( + [("property_ids", "in", properties.ids), + ("name", "=ilike", value)]) + value.ensure_one() + elif format_ == "bool": + value = value.strip().lower() not in { + "0", "false", "", "no", "off", _("No").lower()} + elif format_ not in {"str", "id"}: + value = safe_eval("{!s}({!r})".format(format_, value)) + return value + + @api.model + def _search_value(self, operator, value): + """Search from the stored field directly.""" + options = ( + o[0] for o in + self.property_id._fields["field_type"] + .get_description(self.env)["selection"]) + domain = [] + for fmt in options: + try: + _value = (self._transform_value(value, fmt) + if not isinstance(value, list) else + [self._transform_value(v, fmt) for v in value]) + except ValueError: + # If you are searching something that cannot be casted, then + # your property is probably from another type + continue + domain += [ + "&", + ("field_type", "=", fmt), + ("value_" + fmt, operator, _value), + ] + return ["|"] * (len(domain) / 3 - 1) + domain diff --git a/base_custom_info/models/res_partner.py b/base_custom_info/models/res_partner.py new file mode 100644 index 000000000..cc431bfbf --- /dev/null +++ b/base_custom_info/models/res_partner.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html + +from openerp import fields, models + + +class ResPartner(models.Model): + """Implement custom information for partners. + + Besides adding some visible feature to the module, this is useful for + testing and example purposes. + """ + _name = "res.partner" + _inherit = [_name, "custom.info"] + + custom_info_template_id = fields.Many2one( + context={"default_model": _name}, + ) + custom_info_ids = fields.One2many( + context={"default_model": _name}, + ) diff --git a/base_custom_info/security/ir.model.access.csv b/base_custom_info/security/ir.model.access.csv index d285e7021..ee65f8e15 100644 --- a/base_custom_info/security/ir.model.access.csv +++ b/base_custom_info/security/ir.model.access.csv @@ -1,7 +1,6 @@ -"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" -"access_custom_info_template_user","custom.info.template.user","model_custom_info_template","base.group_user",1,0,0,0 -"access_custom_info_property_user","custom.info.template.line.user","model_custom_info_property","base.group_user",1,0,0,0 -"access_custom_info_value_user","custom.info.value.user","model_custom_info_value","base.group_user",1,0,0,0 -"access_custom_info_template_sale_manager","custom.info.template.salemanager","model_custom_info_template","base.group_system",1,1,1,1 -"access_custom_info_property_sale_manager","custom.info.template.line.salemanager","model_custom_info_property","base.group_system",1,1,1,1 -"access_custom_info_value_sale_manager","custom.info.value.salemanager","model_custom_info_value","base.group_system",1,1,1,1 +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_template,Access custom info templates,model_custom_info_template,,1,1,1,1 +access_property,Access custom info properties,model_custom_info_property,,1,1,1,1 +access_value,Access custom info values,model_custom_info_value,,1,1,1,1 +access_option,Access custom info options,model_custom_info_option,,1,1,1,1 +access_category,Access custom info categories,model_custom_info_category,,1,1,1,1 diff --git a/base_custom_info/security/res_groups.xml b/base_custom_info/security/res_groups.xml new file mode 100644 index 000000000..684c141c8 --- /dev/null +++ b/base_custom_info/security/res_groups.xml @@ -0,0 +1,31 @@ + + + + + + + Custom Information + + + + Display in partner form + + Will be able to edit custom information from partner's form. + + + + Basic management + + The user will be able to manage basic custom information. + + + + Advanced management + + The user will be able to manage advanced custom information. + + + + + diff --git a/base_custom_info/tests/__init__.py b/base_custom_info/tests/__init__.py new file mode 100644 index 000000000..18f016dd7 --- /dev/null +++ b/base_custom_info/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Jairo Llopis +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from . import test_partner, test_value_conversion diff --git a/base_custom_info/tests/test_partner.py b/base_custom_info/tests/test_partner.py new file mode 100644 index 000000000..ee39778ce --- /dev/null +++ b/base_custom_info/tests/test_partner.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Jairo Llopis +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). + +from openerp.exceptions import AccessError, ValidationError +from openerp.tests.common import TransactionCase + + +class PartnerCase(TransactionCase): + def setUp(self, *args, **kwargs): + super(PartnerCase, self).setUp(*args, **kwargs) + self.agrolait = self.env.ref("base.res_partner_2") + self.tpl = self.env.ref("base_custom_info.tpl_smart") + self.demouser = self.env.ref("base.user_demo") + + def set_custom_info_for_agrolait(self): + """Used when you need to use some created custom info.""" + self.agrolait.custom_info_template_id = self.tpl + self.env["custom.info.value"].create({ + "res_id": self.agrolait.id, + "property_id": self.env.ref("base_custom_info.prop_haters").id, + "value_int": 5, + }) + + def test_access_granted(self): + """Access to the model implies access to custom info.""" + # Demo user has contact creation permissions by default + agrolait = self.agrolait.sudo(self.demouser) + agrolait.custom_info_template_id = self.tpl + agrolait.env["custom.info.value"].create({ + "res_id": agrolait.id, + "property_id": + agrolait.env.ref("base_custom_info.prop_weaknesses").id, + "value_id": agrolait.env.ref("base_custom_info.opt_food").id, + }) + agrolait.custom_info_template_id.property_ids[0].name = "Changed!" + agrolait.env.ref("base_custom_info.opt_food").name = "Changed!" + + def test_access_denied(self): + """Forbidden access to the model forbids it to custom info.""" + # Remove permissions to demo user + self.demouser.groups_id = self.env.ref("base.group_portal") + + agrolait = self.agrolait.sudo(self.demouser) + with self.assertRaises(AccessError): + agrolait.custom_info_template_id = self.tpl + + with self.assertRaises(AccessError): + agrolait.env["custom.info.value"].create({ + "res_id": agrolait.id, + "property_id": + agrolait.env.ref("base_custom_info.prop_weaknesses").id, + "value_id": agrolait.env.ref("base_custom_info.opt_food").id, + }) + + with self.assertRaises(AccessError): + agrolait.custom_info_template_id.property_ids[0].name = "Changed!" + + with self.assertRaises(AccessError): + agrolait.env.ref("base_custom_info.opt_food").name = "Changed!" + + def test_apply_unapply_template(self): + """(Un)apply a template to a owner and it gets filled.""" + # Applying a template autofills the values + self.agrolait.custom_info_template_id = self.tpl + with self.env.do_in_onchange(): + self.agrolait._onchange_custom_info_template_id() + self.assertEqual( + len(self.agrolait.custom_info_ids), + len(self.tpl.property_ids)) + self.assertEqual( + self.agrolait.custom_info_ids.mapped("property_id"), + self.tpl.property_ids) + + # Unapplying a template empties the values + self.agrolait.custom_info_template_id = False + self.agrolait._onchange_custom_info_template_id() + self.assertFalse(self.agrolait.custom_info_template_id) + + def test_template_model_and_model_id_match(self): + """Template's model and model_id fields match.""" + self.assertEqual(self.tpl.model, self.tpl.model_id.model) + self.tpl.model = "res.users" + self.assertEqual(self.tpl.model, self.tpl.model_id.model) + + def test_template_model_must_exist(self): + """Cannot create templates for unexisting models.""" + with self.assertRaises(ValidationError): + self.tpl.model = "yabadabaduu" + + def test_change_used_model_fails(self): + """If a template's model is already used, you cannot change it.""" + self.set_custom_info_for_agrolait() + with self.assertRaises(ValidationError): + self.tpl.model = "res.users" + + def test_owners_selection(self): + """Owners selection includes only the required matches.""" + choices = dict(self.env["custom.info.value"]._selection_owner_id()) + self.assertIn("res.partner", choices) + self.assertNotIn("ir.model", choices) + self.assertNotIn("custom.info.property", choices) + self.assertNotIn("custom.info", choices) + + def test_owner_id(self): + """Check the computed owner id for a value.""" + self.set_custom_info_for_agrolait() + self.assertEqual(self.agrolait.custom_info_ids.owner_id, self.agrolait) + + def test_get_custom_info_value(self): + """Check the custom info getter helper works fine.""" + self.set_custom_info_for_agrolait() + result = self.agrolait.get_custom_info_value( + self.env.ref("base_custom_info.prop_haters")) + self.assertEqual(result.field_type, "int") + self.assertEqual(result.field_name, "value_int") + self.assertEqual(result[result.field_name], 5) + self.assertEqual(result.value_int, 5) + self.assertEqual(result.value, "5") diff --git a/base_custom_info/tests/test_value_conversion.py b/base_custom_info/tests/test_value_conversion.py new file mode 100644 index 000000000..1f18c2dcf --- /dev/null +++ b/base_custom_info/tests/test_value_conversion.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Jairo Llopis +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +import logging + +from openerp.tests.common import TransactionCase + +_logger = logging.getLogger(__name__) + + +class ValueConversionCase(TransactionCase): + def setUp(self): + super(ValueConversionCase, self).setUp() + self.agrolait = self.env.ref("base.res_partner_2") + self.tpl = self.env.ref("base_custom_info.tpl_smart") + self.prop_str = self.env.ref("base_custom_info.prop_teacher") + self.prop_int = self.env.ref("base_custom_info.prop_haters") + self.prop_float = self.env.ref("base_custom_info.prop_avg_note") + self.prop_bool = self.env.ref("base_custom_info.prop_smartypants") + self.prop_id = self.env.ref("base_custom_info.prop_weaknesses") + + def create_value(self, prop, value, field="value"): + """Create a custom info value.""" + _logger.info( + "Creating. prop: %s; value: %s; field: %s", prop, value, field) + self.agrolait.custom_info_template_id = self.tpl + if field == "value": + value = str(value) + self.value = self.env["custom.info.value"].create({ + "res_id": self.agrolait.id, + "property_id": prop.id, + field: value, + }) + + def creation_found(self, value): + """Ensure you can search what you just created.""" + prop = self.value.property_id + _logger.info( + "Searching. prop: %s; value: %s", prop, value) + self.assertEqual( + self.value.search([ + ("property_id", "=", prop.id), + ("value", "=", value)]), + self.value) + self.assertEqual( + self.value.search([ + ("property_id", "=", prop.id), + ("value", "in", [value])]), + self.value) + self.assertIs( + self.value.search([ + ("property_id", "=", prop.id), + ("value", "not in", [value])]).id, + False) + + def test_to_str(self): + """Conversion to text.""" + self.create_value(self.prop_str, "Mr. Einstein") + self.creation_found("Mr. Einstein") + self.assertEqual(self.value.value, self.value.value_str) + + def test_from_str(self): + """Conversion from text.""" + self.create_value(self.prop_str, "Mr. Einstein", "value_str") + self.creation_found("Mr. Einstein") + self.assertEqual(self.value.value, self.value.value_str) + + def test_to_int(self): + """Conversion to whole number.""" + self.create_value(self.prop_int, 5) + self.creation_found("5") + self.assertEqual(int(self.value.value), self.value.value_int) + + def test_from_int(self): + """Conversion from whole number.""" + self.create_value(self.prop_int, 5, "value_int") + self.creation_found("5") + self.assertEqual(int(self.value.value), self.value.value_int) + + def test_to_float(self): + """Conversion to decimal number.""" + self.create_value(self.prop_float, 10.5) + self.creation_found("10.5") + self.assertEqual(float(self.value.value), self.value.value_float) + + def test_from_float(self): + """Conversion from decimal number.""" + self.create_value(self.prop_float, 10.5, "value_float") + self.creation_found("10.5") + self.assertEqual(float(self.value.value), self.value.value_float) + + def test_to_bool_true(self): + """Conversion to yes.""" + self.create_value(self.prop_bool, "True") + self.creation_found("True") + self.assertEqual(self.value.with_context(lang="en_US").value, "Yes") + self.assertIs(self.value.value_bool, True) + + def test_from_bool_true(self): + """Conversion from yes.""" + self.create_value(self.prop_bool, "True", "value_bool") + self.creation_found("True") + self.assertEqual(self.value.with_context(lang="en_US").value, "Yes") + self.assertIs(self.value.value_bool, True) + + def test_to_bool_false(self): + """Conversion to no.""" + self.create_value(self.prop_bool, "False") + self.assertEqual(self.value.with_context(lang="en_US").value, "No") + self.assertIs(self.value.value_bool, False) + + def test_from_bool_false(self): + """Conversion from no.""" + self.create_value(self.prop_bool, False, "value_bool") + self.assertEqual(self.value.with_context(lang="en_US").value, "No") + self.assertIs(self.value.value_bool, False) + + def test_to_id(self): + """Conversion to selection.""" + self.create_value(self.prop_id, "Needs videogames") + self.creation_found("Needs videogames") + self.assertEqual(self.value.value, self.value.value_id.name) + + def test_from_id(self): + """Conversion from selection.""" + self.create_value( + self.prop_id, + self.env.ref("base_custom_info.opt_videogames").id, + "value_id") + self.creation_found("Needs videogames") + self.assertEqual(self.value.value, self.value.value_id.name) diff --git a/base_custom_info/views/custom_info_category_view.xml b/base_custom_info/views/custom_info_category_view.xml new file mode 100644 index 000000000..d9b5a7355 --- /dev/null +++ b/base_custom_info/views/custom_info_category_view.xml @@ -0,0 +1,53 @@ + + + + + + Custom Info Category Tree + custom.info.category + + + + + + + + + + + Custom Info Category Form + custom.info.category + +
+ + + + + + + +
+
+
+ + + Custom Info Category Search + custom.info.category + + + + + + + + + + Categories + ir.actions.act_window + custom.info.category + tree,form + form + + +
diff --git a/base_custom_info/views/custom_info_option_view.xml b/base_custom_info/views/custom_info_option_view.xml new file mode 100644 index 000000000..dfad88e3e --- /dev/null +++ b/base_custom_info/views/custom_info_option_view.xml @@ -0,0 +1,52 @@ + + + + + + Custom Info Option Tree + custom.info.option + + + + + + + + + + Custom Info Option Form + custom.info.option + +
+ + + + + + + +
+
+
+ + + Custom Info Option Search + custom.info.option + + + + + + + + + + Options + ir.actions.act_window + custom.info.option + tree,form + form + + +
diff --git a/base_custom_info/views/custom_info_property_view.xml b/base_custom_info/views/custom_info_property_view.xml index 72bda5437..21d447ec6 100644 --- a/base_custom_info/views/custom_info_property_view.xml +++ b/base_custom_info/views/custom_info_property_view.xml @@ -1,36 +1,77 @@ - + + - - base.custom.info.property.tree + + Custom Info Property Tree custom.info.property - + + - + + + + + - - base.custom.info.property.form + + Custom Info Property Form custom.info.property
- + + + + + + + - + +
- + + Custom Info Property Search + custom.info.property + + + + + + + + + + + + + + + + + Properties ir.actions.act_window custom.info.property @@ -38,4 +79,4 @@ form -
+ diff --git a/base_custom_info/views/custom_info_template_view.xml b/base_custom_info/views/custom_info_template_view.xml index 3e9ff7cbd..d8500fe96 100644 --- a/base_custom_info/views/custom_info_template_view.xml +++ b/base_custom_info/views/custom_info_template_view.xml @@ -1,21 +1,23 @@ - + + - base.custom.info.template.tree + Custom Info Template Tree custom.info.template - + - base.custom.info.template.form + Custom Info Template Form custom.info.template
@@ -26,17 +28,30 @@ - - - - - +
+ + Custom Info Template Search + custom.info.template + + + + + + + + + + + + Templates ir.actions.act_window @@ -49,10 +64,9 @@

Click to define a new custom info template.

- You must define a custom info template for each - product properties group. + You must define a custom info template for each properties group.

-
+ diff --git a/base_custom_info/views/custom_info_value_view.xml b/base_custom_info/views/custom_info_value_view.xml index 53ed922dd..519721095 100644 --- a/base_custom_info/views/custom_info_value_view.xml +++ b/base_custom_info/views/custom_info_value_view.xml @@ -1,19 +1,87 @@ - + + - base.custom.info.value.tree + Custom Info Value Tree custom.info.value - + + + - - + + Custom Info Value Form + custom.info.value + +
+ + + + + + + + + + + + + + + +
+ Warning! + You might see no changes in parent form until you save it. +
+
+
+
+
+ + + Custom Info Value Search + custom.info.value + + + + + + + + + + + + + + + + Values ir.actions.act_window @@ -22,4 +90,4 @@ form -
+ diff --git a/base_custom_info/views/menu.xml b/base_custom_info/views/menu.xml index 8f4b2220c..f69e82584 100644 --- a/base_custom_info/views/menu.xml +++ b/base_custom_info/views/menu.xml @@ -1,23 +1,41 @@ - + + - + + groups="base_custom_info.group_basic"/> + + + + - - - - + parent="menu_basic" sequence="10"/> - + parent="menu_basic" sequence="20"/> + + + + + + - + diff --git a/base_custom_info/views/res_partner_view.xml b/base_custom_info/views/res_partner_view.xml new file mode 100644 index 000000000..5f64e41f0 --- /dev/null +++ b/base_custom_info/views/res_partner_view.xml @@ -0,0 +1,28 @@ + + + + + + Custom info in partners form + res.partner + + + + + + + + + + + + + + diff --git a/base_custom_info/wizard/__init__.py b/base_custom_info/wizard/__init__.py new file mode 100644 index 000000000..d3a343ecb --- /dev/null +++ b/base_custom_info/wizard/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2015 Antiun Ingeniería S.L. - Sergio Teruel +# © 2015 Antiun Ingeniería S.L. - Carlos Dauden +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html + +from . import base_config_settings diff --git a/base_custom_info/wizard/base_config_settings.py b/base_custom_info/wizard/base_config_settings.py new file mode 100644 index 000000000..6d78f1209 --- /dev/null +++ b/base_custom_info/wizard/base_config_settings.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Jairo Llopis +# License LGPL-3 - See http://www.gnu.org/licenses/lgpl-3.0.html + +from openerp import fields, models + + +class BaseConfigSettings(models.TransientModel): + _inherit = "base.config.settings" + + group_custom_info_manager = fields.Boolean( + string="Manage custom information", + implied_group="base_custom_info.group_basic", + help="Allow all employees to manage custom information", + ) + group_custom_info_partner = fields.Boolean( + string="Edit custom information in partners", + implied_group="base_custom_info.group_partner", + help="Add a tab in the partners form to edit custom information", + ) diff --git a/base_custom_info/wizard/base_config_settings_view.xml b/base_custom_info/wizard/base_config_settings_view.xml new file mode 100644 index 000000000..095b60943 --- /dev/null +++ b/base_custom_info/wizard/base_config_settings_view.xml @@ -0,0 +1,33 @@ + + + + + + Allow to enable partners custom info + base.config.settings + + + + + + + + + + + + From fa4e40d18a0fe1d31e6aa99d83778e34b6153a82 Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Thu, 15 Sep 2016 13:17:51 +0200 Subject: [PATCH 3/7] [IMP] base_custom_info: Recursive templates. - Select an option with an additional template and get it filled on the owner. - Drop support for onchange, too many bugs to workaround. - Improve demo data. - Improve tests. - Almost cool material icon, this is an app now! - Fun pics. # Conflicts: # base_custom_info/__manifest__.py --- base_custom_info/README.rst | 39 ++++++- base_custom_info/__manifest__.py | 3 + .../demo/custom.info.category.csv | 3 + base_custom_info/demo/custom.info.option.csv | 14 ++- .../demo/custom.info.property.csv | 14 ++- .../demo/custom.info.template.csv | 1 + .../demo/custom_info_property_defaults.yml | 6 + base_custom_info/models/custom_info.py | 93 ++++++++++++---- base_custom_info/models/custom_info_option.py | 6 + base_custom_info/models/custom_info_value.py | 25 ++++- .../description/customizations-everywhere.jpg | Bin 0 -> 122500 bytes base_custom_info/static/description/icon.png | Bin 0 -> 5289 bytes base_custom_info/static/description/icon.svg | 68 ++++++++++++ .../static/description/templateception.jpg | Bin 0 -> 57934 bytes base_custom_info/tests/test_partner.py | 104 +++++++++++++++--- .../tests/test_value_conversion.py | 37 +++---- .../views/custom_info_option_view.xml | 2 + .../views/custom_info_property_view.xml | 6 +- base_custom_info/views/res_partner_view.xml | 22 +++- 19 files changed, 356 insertions(+), 87 deletions(-) create mode 100644 base_custom_info/demo/custom.info.category.csv create mode 100644 base_custom_info/demo/custom_info_property_defaults.yml create mode 100644 base_custom_info/static/description/customizations-everywhere.jpg create mode 100644 base_custom_info/static/description/icon.png create mode 100644 base_custom_info/static/description/icon.svg create mode 100644 base_custom_info/static/description/templateception.jpg diff --git a/base_custom_info/README.rst b/base_custom_info/README.rst index 6d6c57177..8271d9f6e 100644 --- a/base_custom_info/README.rst +++ b/base_custom_info/README.rst @@ -84,6 +84,29 @@ I.e., the "What weaknesses does he/she have?" *property* has some options: The *value* will always be one of these. +Recursive templates using options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Oh dear customization lovers! Options can be used to customize the custom +information template! + +.. figure:: /base_custom_info/static/description/customizations-everywhere.jpg + :alt: Customizations Everywhere + +If you assign an *additional template* to an option, and while using the owner +form you choose that option, you can then press *reload custom information +templates* to make the owner update itself to include all the properties in all +the involved templates. If you do not press the button, anyway the reloading +will be performed when saving the owner record. + +.. figure:: /base_custom_info/static/description/templateception.jpg + :alt: Templateception + +I.e., if you select the option "Needs videogames" for the property "What +weaknesses does he/she have?" of a smart partner and press *reload custom +information templates*, you will get 2 new properties to fill: "Favourite +videogames genre" and "Favourite videogame". + Value ----- @@ -196,11 +219,17 @@ Known issues / Roadmap * Custom properties cannot be shared among templates. * You get an error if you press *Save & New* when setting property values in partner form. -* `There seems to be a bug in the web client that makes subviews appear empty - after an onchange - `_. - This module includes a workaround for that, but the bug should be fixed and - the workaround removed. +* You have to press *reload custom information templates*, when the optimal + thing would be the reloading taking place whenever needed: when you change + the template, or when you choose an option that has an additional template. + However, `currently it is impossible for a x2many field to update itself + `_, and it is + needed to skip some checks when you are saving a record after filling the + templates, which has to be done by `changing the context, something also not + possible currently at onchange time + `_. So there are some technical + limitations that do not let us reach the ideal UX for this addon. So, in + short, press the button when you see it and be happy. Bug Tracker =========== diff --git a/base_custom_info/__manifest__.py b/base_custom_info/__manifest__.py index 907468d1e..7c9a5c70f 100644 --- a/base_custom_info/__manifest__.py +++ b/base_custom_info/__manifest__.py @@ -25,9 +25,11 @@ 'wizard/base_config_settings_view.xml', ], 'demo': [ + 'demo/custom.info.category.csv', 'demo/custom.info.template.csv', 'demo/custom.info.property.csv', 'demo/custom.info.option.csv', + 'demo/custom_info_property_defaults.yml', 'demo/res_groups.xml', ], "images": [ @@ -42,5 +44,6 @@ 'Odoo Community Association (OCA)', 'website': 'https://www.tecnativa.com', 'license': 'AGPL-3', + 'application': True, 'installable': True, } diff --git a/base_custom_info/demo/custom.info.category.csv b/base_custom_info/demo/custom.info.category.csv new file mode 100644 index 000000000..35104e4ef --- /dev/null +++ b/base_custom_info/demo/custom.info.category.csv @@ -0,0 +1,3 @@ +id,name,sequence +cat_statics,Statics,50 +cat_gaming,Gaming,100 diff --git a/base_custom_info/demo/custom.info.option.csv b/base_custom_info/demo/custom.info.option.csv index aa072dc80..46f2c65bb 100644 --- a/base_custom_info/demo/custom.info.option.csv +++ b/base_custom_info/demo/custom.info.option.csv @@ -1,4 +1,10 @@ -id,name,property_ids:id -opt_food,Loves junk food,prop_weaknesses -opt_videogames,Needs videogames,prop_weaknesses -opt_glasses,Huge glasses,prop_weaknesses +id,name,property_ids:id,template_id:id +opt_food,Loves junk food,prop_weaknesses, +opt_videogames,Needs videogames,prop_weaknesses,tpl_gamer +opt_glasses,Huge glasses,prop_weaknesses, +opt_shooter,Shooter,prop_fav_genre, +opt_platforms,Platforms,prop_fav_genre, +opt_cars,Cars,prop_fav_genre, +opt_rpg,RPG,prop_fav_genre, +opt_strategy,Strategy,prop_fav_genre, +opt_graphical_adventure,Graphical adventure,prop_fav_genre, diff --git a/base_custom_info/demo/custom.info.property.csv b/base_custom_info/demo/custom.info.property.csv index 64c3a3066..724562f7a 100644 --- a/base_custom_info/demo/custom.info.property.csv +++ b/base_custom_info/demo/custom.info.property.csv @@ -1,6 +1,8 @@ -id,name,template_id:id,field_type,default_value,required -prop_teacher,Name of his/her teacher,tpl_smart,str,, -prop_haters,Amount of people that hates him/her for being so smart,tpl_smart,int,, -prop_avg_note,Average note on all subjects,tpl_smart,float,,True -prop_smartypants,Does he/she believe he/she is the smartest person on earth?,tpl_smart,bool,, -prop_weaknesses,What weaknesses does he/she have?,tpl_smart,id,Huge glasses, +id,name,template_id:id,field_type,required,minimum,maximum,category_id:id,sequence +prop_teacher,Name of his/her teacher,tpl_smart,str,,1,30,,100 +prop_haters,Amount of people that hates him/her for being so smart,tpl_smart,int,,0,99999,cat_statics,200 +prop_avg_note,Average note on all subjects,tpl_smart,float,True,0,10,cat_statics,300 +prop_smartypants,Does he/she believe he/she is the smartest person on earth?,tpl_smart,bool,,0,-1,,400 +prop_weaknesses,What weaknesses does he/she have?,tpl_smart,id,,0,-1,,500 +prop_fav_genre,Favourite videogames genre,tpl_gamer,id,,0,-1,cat_gaming,600 +prop_fav_game,Favourite videogame,tpl_gamer,str,,0,-1,cat_gaming,700 diff --git a/base_custom_info/demo/custom.info.template.csv b/base_custom_info/demo/custom.info.template.csv index 1ec9e2bfd..d6d96e0cc 100644 --- a/base_custom_info/demo/custom.info.template.csv +++ b/base_custom_info/demo/custom.info.template.csv @@ -1,2 +1,3 @@ id,name,model tpl_smart,Smart partners,res.partner +tpl_gamer,Gamers,res.partner diff --git a/base_custom_info/demo/custom_info_property_defaults.yml b/base_custom_info/demo/custom_info_property_defaults.yml new file mode 100644 index 000000000..592efa6dd --- /dev/null +++ b/base_custom_info/demo/custom_info_property_defaults.yml @@ -0,0 +1,6 @@ +# Copyright 2016 Jairo Llopis +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). +- Setting default values after loading custom.info.option.csv + +- !record {model: custom.info.property, id: prop_weaknesses}: + default_value: Huge glasses diff --git a/base_custom_info/models/custom_info.py b/base_custom_info/models/custom_info.py index 7ef469e3a..45c70e963 100644 --- a/base_custom_info/models/custom_info.py +++ b/base_custom_info/models/custom_info.py @@ -29,33 +29,27 @@ class CustomInfo(models.AbstractModel): context={"embed": True}, auto_join=True, string='Custom Properties') + dirty_templates = fields.Boolean( + compute="_compute_dirty_templates", + ) - @api.multi - @api.onchange('custom_info_template_id') - def _onchange_custom_info_template_id(self): - new = [(5, False, False)] - for prop in self.custom_info_template_id.property_ids: - new += [(0, False, { - "property_id": prop.id, - "res_id": self.id, - "model": self._name, - })] - self.custom_info_ids = new - self.custom_info_ids._onchange_property_set_default_value() - self.custom_info_ids._inverse_value() - self.custom_info_ids._compute_value() + # HACK https://github.com/odoo/odoo/pull/11042 + @api.model + def create(self, vals): + res = super(CustomInfo, self).create(vals) + if not self.env.context.get("filling_templates"): + res.filtered( + "dirty_templates").action_custom_info_templates_fill() + return res - # HACK https://github.com/OCA/server-tools/pull/492#issuecomment-237594285 + # HACK https://github.com/odoo/odoo/pull/11042 @api.multi - def onchange(self, values, field_name, field_onchange): - """Add custom info children values that will be probably changed.""" - subfields = ("category_id", "field_type", "required", "property_id", - "res_id", "model", "value", "value_str", "value_int", - "value_float", "value_bool", "value_id") - for subfield in subfields: - field_onchange.setdefault("custom_info_ids." + subfield, "") - return super(CustomInfo, self).onchange( - values, field_name, field_onchange) + def write(self, vals): + res = super(CustomInfo, self).write(vals) + if not self.env.context.get("filling_templates"): + self.filtered( + "dirty_templates").action_custom_info_templates_fill() + return res @api.multi def unlink(self): @@ -65,6 +59,16 @@ class CustomInfo(models.AbstractModel): info_values.unlink() return res + @api.one + @api.depends("custom_info_template_id", + "custom_info_ids.value_id.template_id") + def _compute_dirty_templates(self): + """Know if you need to reload the templates.""" + expected_properties = self.all_custom_info_templates().mapped( + "property_ids") + actual_properties = self.mapped("custom_info_ids.property_id") + self.dirty_templates = expected_properties != actual_properties + @api.multi @api.returns("custom.info.value") def get_custom_info_value(self, properties): @@ -74,3 +78,44 @@ class CustomInfo(models.AbstractModel): ("res_id", "in", self.ids), ("property_id", "in", properties.ids), ]) + + @api.multi + def all_custom_info_templates(self): + """Get all custom info templates involved in these owners.""" + return (self.mapped("custom_info_template_id") | + self.mapped("custom_info_ids.value_id.template_id")) + + @api.multi + def action_custom_info_templates_fill(self): + """Fill values with enabled custom info templates.""" + recursive_owners = self + for owner in self.with_context(filling_templates=True): + values = owner.custom_info_ids + tpls = owner.all_custom_info_templates() + props_good = tpls.mapped("property_ids") + props_enabled = owner.mapped("custom_info_ids.property_id") + to_add = props_good - props_enabled + to_rm = props_enabled - props_good + # Remove remaining properties + # HACK https://github.com/odoo/odoo/pull/13480 + values.filtered(lambda r: r.property_id in to_rm).unlink() + values = values.exists() + # Add new properties + for prop in to_add: + newvalue = values.new({ + "property_id": prop.id, + "res_id": owner.id, + }) + newvalue._onchange_property_set_default_value() + # HACK https://github.com/odoo/odoo/issues/13076 + newvalue._inverse_value() + newvalue._compute_value() + values |= newvalue + owner.custom_info_ids = values + # Default values implied new templates? Then this is recursive + if owner.all_custom_info_templates() == tpls: + recursive_owners -= owner + # Changes happened under a different environment; update own + self.invalidate_cache() + if recursive_owners: + return recursive_owners.action_custom_info_templates_fill() diff --git a/base_custom_info/models/custom_info_option.py b/base_custom_info/models/custom_info_option.py index 08d812c41..6e20d94bd 100644 --- a/base_custom_info/models/custom_info_option.py +++ b/base_custom_info/models/custom_info_option.py @@ -22,6 +22,12 @@ class CustomInfoOption(models.Model): string="Values", help="Values that have set this option.", ) + template_id = fields.Many2one( + comodel_name="custom.info.template", + string="Additional template", + help="Additional template to be applied to the owner if this option " + "is chosen.", + ) @api.multi def check_access_rule(self, operation): diff --git a/base_custom_info/models/custom_info_value.py b/base_custom_info/models/custom_info_value.py index 321b25f22..a7cd143a8 100644 --- a/base_custom_info/models/custom_info_value.py +++ b/base_custom_info/models/custom_info_value.py @@ -109,11 +109,26 @@ class CustomInfoValue(models.Model): @api.model def create(self, vals): - """Skip constrains in 1st lap.""" + """Skip constrains in 1st lap. Update owner templates.""" # HACK https://github.com/odoo/odoo/pull/13439 if "value" in vals: self.env.context.skip_required = True - return super(CustomInfoValue, self).create(vals) + result = super(CustomInfoValue, self).create(vals) + # HACK https://github.com/odoo/odoo/pull/11042 + if not self.env.context.get("filling_templates"): + result.owner_id.exists().filtered("dirty_templates") \ + .action_custom_info_templates_fill() + return result + + # HACK https://github.com/odoo/odoo/pull/11042 + @api.multi + def write(self, vals): + """Update owner templates.""" + result = super(CustomInfoValue, self).write(vals) + if not self.env.context.get("filling_templates"): + self.mapped("owner_id").exists().filtered("dirty_templates") \ + .action_custom_info_templates_fill() + return result @api.model def _selection_owner_id(self): @@ -178,7 +193,8 @@ class CustomInfoValue(models.Model): try: del self.env.context.skip_required except AttributeError: - if self.required and not self[self.field_name]: + if (not self.env.context.get("filling_templates") and + self.required and not self[self.field_name]): raise ValidationError( _("Property %s is required.") % self.property_id.display_name) @@ -188,6 +204,9 @@ class CustomInfoValue(models.Model): "value_str", "value_int", "value_float") def _check_min_max_limits(self): """Ensure value falls inside the property's stablished limits.""" + # Skip constraint while filling the partner template + if self.env.context.get("filling_templates"): + return minimum, maximum = self.property_id.minimum, self.property_id.maximum if minimum <= maximum: value = self[self.field_name] diff --git a/base_custom_info/static/description/customizations-everywhere.jpg b/base_custom_info/static/description/customizations-everywhere.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12dc888504479e23d649187789aa044ea501c666 GIT binary patch literal 122500 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۳W1AzYH!zF(-z41@ik}W9fxTK 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

cBsweQ5Afy$mLvb54Q z$*;UYV`qNz=z8|0t29!@D z3w1w)UMu*yqFs30_+L|>!M_u)J{)+b$NCR}{vv9yOW^dpi&pUsjhryvq?)#?ZK~h> zzD+{o;)e;Gd1=S7^y}BJr=>=WrGWCI8RLN8{8f8X<6KWHVH^z@xZ<&Rm`XKTar)$O zN$c#nm0EJf&BnA`d7`;x2YE_fBs?<1I*xM8>ra~pm*FZ#bexpFqbv)(y|RO)S~v=E zmL74MjHKrpp6nwJ(r*)f)Sea9{xbYwi^V^*Hl?ZjF7TK96AMN7b8n(*-x9n>dEjY2 zH~7E78mzu7k6Y2MHEDEz6MRX#?bh4;LpPU019}o;h)8u z--uJ(HoGm}rQvO3Shu~@G}yHp*yqx%f3iO+n5f`JpL-n+d-u=z`c#pX!5a{P)9-id z{9Wn8j&Zno!ldx9todgP&a|a8r$+%F-OhC9$@|XZ|yN_MA)jA_bL>t+-E>?ziz?QcUKs73QaRQ|6{QEHr>1^SurGRMVQufk9GC6|fy zAC6xWehz7W4*X57_%`F=e}}Z+iW*V)`|(T09~HC#r|O;`xA6QnS}(*;_>@hp_)o<5 zKNPO5{3+mQHJ=u0J}4G8aOafFit6Ii1 z-_NZRt7*On@e~#?#E?hlg7$) zXv(}Gs7{=tJXJ|WNh)<0#J;Zhk^5LbjQ$3G)3?44_?@MEKi9u#U)xLJUB-u|{2JGO zC3rsj#GefOKj5{C;vT2r4O_*!H-Y{pMd7a(_}|0V`u4G^{{Us^65Z*3DxXb^ojUSC zH`Tg#?N#s`{?UK5hMjxy3&VPipTrN@3-)sGAN(hJkB$B!Xr3Rp@&1nvw>QKu3HaOM zPs14`_>1Aoje6P*5E=CQgs~~RdBGx#+2tM+Eb$XRbQY7_Q~+g zzs1jwe-Jbui602`dk=+wum{ASg`NfR*TXLxd~ETDhxIRs_Oa_a*TcOhM)-^Ir^7xR z*8E@M>s!rM-py}xTi+3Hne?kE^`miMwzixf?Azl10D)f&z8Uxn;>W~)+EZ20zA9OK zZ_+$t@jp-a&G9$(v+-V~;++pk@UMZi4Hs7MCxiYId`0laqw!PXcC%^WeJjIo+xX+e z+Mk59Z5vCswblGN7l!Qa?e&k2g2o2X5@Y@ZG5Ihbomxw1WX@17++$&7>({yT#VGOZ zYM7dJ-U`t6)$6)3#5gI+tqd&+Zf>1AaFpnK3&wJ%B{96tmJ)bXn727$ zaClXSmJ$_Z2vNjhaTTLYR;yBQr;7U5Ea}3u9XV2j;XYKUudn=B@mJxOjeZON0KrLo z38{Y4Ixm8>pBsMG8jr+32+J>vJZBbz?D@mq7SSq(`WHKk*isu6ViZd`WZT+wCT8GSg6&Egt?$O&3R>TaWVH ztl&|Q8-ACeNe-FGxZ61Z{hGPI);iA> zOBm?MR>R>Vgu^IeCkj}2{Ys_|q^VQnY7TC2uDM!poi!e5Md|BO;MxDryxl&z(t5ooPzZlzs2i?IZTA_!}4PFXLNHL*ho6 zs>kA=_$FWM>+qjg@x|ASJbP_rrF>{_7JOIM{AuBzh@TOB2Xg-a5xh64>-ufKg%`#i zGt+e&oqI>Nx6&_f9&{07&b$fxSNIQ9{jq!pEPob06?k*uufyNj$H(6Z^W3kr1-w~;m)6~d`9@S;e8KO@ig8I)~}}2mg7j&{7+${KCPh}&0kNONrD|a z^VUe?Dn`IMbSw{F_o}~>AEEyMzMua9imyxkcE$TXPpVPoSd1njGxm+QEHc8ms*S8v#@YNhPu zPNh1Y#xqf+%;LCD59s?|E(Oa)ADOfj-WX%T{HLe)-_-vAwMBf6BM|H2E7$j< z?W)wPY0uitdr7%kRUBgKNncsGrzfjdXWiiNal+wnxNqIh>hvhl=7m3F341zp;msN` Rl$9vECZMGy6{2p)|Jjn(X$k-U literal 0 HcmV?d00001 diff --git a/base_custom_info/static/description/icon.png b/base_custom_info/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..896696e43b57a353305958c411a62b42430697d3 GIT binary patch literal 5289 zcmb_ghdW%~(_dw=SVWCgq9r;ZdPxvsbyly@OE%i_MfAP|OO!&)u& zfr;2hMZ<^;c!J3s zIM{hPiFl%1at;+>AQ1gM4OL~MfZT(XATL(6P|{=1iP7=#VZoumN7w02i{esJq2cb{ zJrNM<-{EZ|*2e2_ghou1rgAkZ`q;D@VVWUFHpJGC<*SSwDM9&f32@3fJg@CTi`r63 z*|J0l<1e&c3x5eTn|k;)q$y=eM8kG%Ay2 zr5k-Cr$LPJaYV}$hSO|@6RN}!k&|&!{m(bbCK))k%W&WOMeux>tR1mfiDLapfmz$E zsn~5z7M=zb(-Rmy4Q^{dAoZKS$gR zH9D~tGI4emPK%9TqP0A(@5y^$*zz@_OS4EIkUR0;n0r7jR*nE;d8&i-dwwEouK zpULTl@Z+`Ch?qg+2SCHrH=)Se6L+QLKCl7;|4RL=d)v%PSEYX(@LdF#LL73#jvAoD zJQ??Lq_>3gaq#eV%(Fhq-OBER9!U;esY>gbF)4Jmn9|d1GEYdVmyAfFS@Myo5|q~p zSg6#e14mr~&irG)n*1M=b;Ge0?f(tHdLH79Y;fLy#g-!})k*Z=RAe2DMd36eF=Xno zmT-~-v8Tz>?BM8D0Y@2eBfd+D1HZ~N1w4-UVGNvr6Z4Xj6_nC2ZC3F832cA|_mh$y4Qz@)%zsHO(Iq0-=dx~2?h9W$shNcb<2 zpJNMFMvnpPhn$J&-2>?>4axxP+lD8uzGJ2S&DW{~oFGk6)<-jQ#X24|CdriKWJO+p z52wq%YC?6cLvc@$7bJ{S;e?2}4xxsW{aPz_n_e+>4|&FBT zW^!~l9|xz(#_^qlGk9#2V?HrHWeTD~j=WMP zfZSSL$qIe_?dM${yEe-VD454Fl3YVJny4^5I`tbe_5S~VS~V&eZwa@7KR=;Qy}vsA zp9%p)jDh?$e-qnC07L^DbHlzAbftVPe%^(Y%}+^pkO7gyT{|o8eCjS+-CiY_|a^5St*;0}n%tMTV;^h9T!pmq#*)bDuDHHH}V`K55 z|H*dM)qCZw%NStavobsV2Tg65mhq%^n9=35t9TU|kzU8`wjb9>X2ci~OD4gnoa^Rl zZyfgyUR0B3e7Ip2`+L?2RIjVGk(FaiHP1>HBgOG&?tb8?4Qq?Ydah*jLnKYq&&-{R zDm%kTAsw|eqa>*+f;>&ZJu@q%q|Tv=?ZIen?gzq7A;m1eo1#mXEijZnHLq`l)$frD zIqfev(98UWY^U5)i{lnU|CSNxLo$m46FT&9QW{KzI-|+(7g{4I24M>GN z3avQ8h4-m|m1`WlYYmt-q?`zfNB^1hPk3acNl@16`QkHY@9ZfnvEOA#xg{UJwp-v( z^H=uCfl*OSnsKgMD>sVmFi}VaoN)Cczt|EJKXu=06*k~oHFt{aE9D`y@A+i8tJi40 zW|`t)RBx}{AF_w2jTef{#j%|i_9@p3T(z4iI*W$BTEa9DzNx)+*RJAZe+FG?XXsTj zl|LOsJX^<=Cb$%yxS(;()y&qOSQ1mOY4gmSRV(8|uFXD9hIB~JfMhFkG5L+5CEI+a zFvI=~OX1dJXR(K|H(z!5LPH~eCsVgZ7$wDP&!aCuxGy(CzZNCE&MvEp6JrolEfiy* zy)9%0Uy>X6Ej(;WpUF4kMWbE^Og7d&Eq+?C= z7%qJY0*yry8(sJQih-eyHNkNSA!BEUh~<~MSO#OEuU9Y#t$^8CO}p-c(l%u1L)YXY zAomcQQu?v*-XHL0azBWk!*@s~N>2v`L&Hd79w!!)4aVhtq8Jj!P=9ST;IL~Hr?Vbb z5JEU_&D42|XBgXNh%?osV=wWQ@tp%29iG7vAp^S_|JISbZi=fj{uB^g=N>INngdKd zSg07gLzlx=py*Ys^u)B3=%Q*Qy58#HN#;m~l#uC?*JpNR|G+z|vq34bC&pRv^X!1* z`h7!(yd42VTo(nV9UW=a^SLUCn7uhkj+bVAb1?BFB3gb{tyTWr?F?3HK7&0oR_Z6F z4s~tBIa5K$m{5?RdH=jcauT5hH90x}OmTCR)1ej=IW8CrUQ1q0G^u)`G=?%96F9bg zPtl?(=lv1JxEiQ06KRkV&g0HD!Mpk+*oAMvNP+&K_gUFv{jnd?*42NO&M3Prsmay7 z2&v=16r%US67VM774u`Mdnc72NRkj4h1v1mt2=WJuZ{FJ$n@61S3&!`;sLX{07re#3uXIg-gtiR8OMNA~i7qLfg? zM$xyiOJ~Q3$-sD?XUkEIEnP&h%ICoYVi;qd1{nz@`zBw8<99$26<`R|RJxlwTnA?@qTE zgGJjAt|1u9KLN7X+2&=sr4?CfRmA=+b`>Jj9PHE4Igyo4C2x5{>sGVX-bJeu!fUT}Q;O0|W3`lV~2jx5bwq*a3mo(NB7x|lI+ zWhFX6W1P|B$nHyPSERspQ8O|rA`N*FCN677uvmMveRXfvO!e|Vb$y=u3RQJ|KC% z!tyf{gDLLqMG1IDK-*@h!kdL}FE-+-u*}qzBcJ(OoP{5_CWrhgQ`w-=fhz(2);hdW zBBESM%**kk(!pDS;Wwi{JRq`hO(AODu${(1AV0D0ys3?cVvPtj4%^HgW_N*k7;6T- zUxwDB{0y(!js*s7a)tjwmGGWhEHGG(TLUzXINV`6l=m6V?5b1-x; zGjD)@zZi*KL_A)E2Fy0f+yJsSV}A9^8COnwA@jIb)HypTv9~V2DsB(VzdDO@7M&mb zH4L}2NLCs7i_4XDF+J3*+cf*O6u#T0!aY>*mS7`qs_Qp3lxi#_b@L#up#gJIQU&iL&5d^t98~%}Vtd!IW-idEBxBulwm$%cnMCLf7;oVJ@mG;>APQFgZ zhQ;BLKv$AEA_OFvZB=3fCi&VHKTflQALWtmYUY4oR$TDfM1puNUr{5zNtyD^^r`yp zvcZ<{()GW}C&BAm0?@-9K@Eai!!6;*!TR(xo&n>gguYB#rAn45d^l+??8~v2weP?v-Msl6jppLCy3>cRm%JU>} zvkeX+{pqc%!SCN;2#0AtpBO;kEtLXz=g+;h<9XS?e()Y&y4AkI{*!&WhTDldC)@X`vYkIbzV7o)Ygdgok8135 zJ=s-R`5dk|JlmiB(Ys3{6mY3vY=3j2uvbEOgG|rju%E!;PRL78zlVBj<-z?_@KnXdM1@y#l#9IQpb)*{N zLxi4om*)_wX4fSBt}xMf79mf;F_L+wW0BnW4rH-q4)L7p&5%@V~*-afA?QRA{@q=F!RT0 z!L=A)FX(XUHRQ!oxmFg=*rVXZOJq|XYSQ5+s--e!Nv@a`0)gi&hc6ipI6G{Et#`%oMdo7(zL1{>hVS)rhvK!KBMDqSc)$d;mp7|dK z&OGYh(cbR5)0yS*oiY5Fjbmq6=iAHCJ^-K2zq=ju6P^U&S8 zS8J#Rd$hX3Za#R7xFZ9xy!}`2tYWz#TdtxvpB<^C$u+OOuiQoP=4wCFQiQ)%O%T zGOyi-gq~(MOb77)k_yec0^P$A=`#z^E7Y&3=}|C3eue(`YmGEy5~#SQ%PfK&S!cDZ&G+hVlt69~?+6m%dM^VjY46-Tez! zu26EHebk4nqDE!^5P95NJ!n;%v>aYec-Xy)gxVSgQv1QwZMTnu9GzJMup{b`2FKwb zQ$~Ty7buo_dvMyTo(7eys4rX;_w_ue9C@u-q^L4G7s`)t9(dL9iT9QI$8mo0uLYX^ z)N!1s84weL9!l%s`?tQl@I+eSHq97zdyP@YW?PII;Gluk0uTTHWQd z$jdh&2OhqIV-IIjF6&$g2|*RL3BYk?TRwi&WPDt)90@?qrmaAU#%FphnYi!tSGAnE z4I+gA-c&xV^_-~Fe)H@k^FyqOizrHsfo6TUUh`jmAd`F&x5{dFwsE0BwMwpAoJzz1 z7XXPN@=2w2+z_^srzH4yc{B*LCD-W*0NJW9vBf-kY8MbUp~yR~{)L8~{m3ddc;A{k z2K`-(GAkwvU)D&*jtPxowC3YfV@gT1jOrY)x)$gp0^C2QKGg+?x$H0f>|QC9Od4~_^6iB?3K=-tMTkR>zWx53 zw`xi|y^dU@U#=7R=>AHVkG*_0WfS4cwCh1>w&2DJ+)v*8attYu)Ia6DQfn1{*E1db z0FkR%3})7gh!!a$63p=XE`@PGdy^F~S19U`optMq19~-B?Do(CRZ?~g3+yga3MDhG z37^l+KLy%B@=1Mw=zg)&VBKlOj#Q2!YmZNwWo*&{2WpbMiI){yZDt;{elVac_$C$v z)YF@ZlItT=<+QhfhS9h53cHA@msC~Eu!Ku}2gIo62k_9n0i)%@(O&4&ht|O6#67vqn?VF*?F0y__cX9d2pc8Avoelh82yEM#0_P#vpcUGa{tEnK@) r>88k + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/base_custom_info/static/description/templateception.jpg b/base_custom_info/static/description/templateception.jpg new file mode 100644 index 0000000000000000000000000000000000000000..268c29da001d1b0673b4be6d01acd53e4f9f67fe GIT binary patch literal 57934 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 + @@ -22,6 +23,7 @@ + diff --git a/base_custom_info/views/custom_info_property_view.xml b/base_custom_info/views/custom_info_property_view.xml index 21d447ec6..71a14f6a4 100644 --- a/base_custom_info/views/custom_info_property_view.xml +++ b/base_custom_info/views/custom_info_property_view.xml @@ -33,8 +33,10 @@ - - + + - - + + + + + +