diff --git a/MetaAnalytic.py b/MetaAnalytic.py index 4fd3d3f64d452ba3472e7ceda387567f6a39ef2c_TWV0YUFuYWx5dGljLnB5..46ced1fc361b5fb67127c9d21449b0e2900449d0_TWV0YUFuYWx5dGljLnB5 100644 --- a/MetaAnalytic.py +++ b/MetaAnalytic.py @@ -211,6 +211,21 @@ """ pass + @AddMethod(superclass) + @api.model + def _required_analytic_fields(self): + + return ( + self.env["analytic.structure"] + .search( + [ + ("model_name", "=", self._name.replace(".", "_")), + ("required", "=", True), + ] + ) + .mapped("ordering") + ) + return (superclass,) @classmethod diff --git a/i18n/fr.po b/i18n/fr.po index 4fd3d3f64d452ba3472e7ceda387567f6a39ef2c_aTE4bi9mci5wbw==..46ced1fc361b5fb67127c9d21449b0e2900449d0_aTE4bi9mci5wbw== 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -3,8 +3,8 @@ # * analytic_structure # Jérémie Gavrel <jeremie.gavrel@xcg-consulting.fr>, 2014. # Brendan Masson <brendan.masson@xcg-consulting.fr>, 2016. -# Etienne Ferriere <etienne.ferriere@xcg-consulting.fr>, 2018. +# Etienne Ferriere <etienne.ferriere@xcg-consulting.fr>, 2018, 2019. msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" @@ -7,9 +7,9 @@ msgid "" msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-03-05 15:37+0000\n" -"PO-Revision-Date: 2018-03-05 16:40+0200\n" +"POT-Creation-Date: 2019-08-29 07:53+0000\n" +"PO-Revision-Date: 2019-08-29 09:55+0200\n" "Last-Translator: Etienne Ferriere <etienne.ferriere@xcg-consulting.fr>\n" "Language-Team: XCG Consulting\n" "Language: fr\n" @@ -45,7 +45,7 @@ msgstr "Emplacement d'analyse" #. module: analytic_structure -#: code:addons/analytic_structure/analytic_structure.py:43 +#: code:addons/analytic_structure/models/analytic_structure.py:42 #, python-format msgid "Analysis {}" msgstr "Analytique {}" @@ -103,7 +103,7 @@ msgstr "Liste noire" #. module: analytic_structure -#: code:addons/analytic_structure/analytic_dimension.py:29 +#: code:addons/analytic_structure/models/analytic_dimension.py:24 #, python-format msgid "Both {model1} and {model2} reference {dim}" msgstr "{dim} est référencé à la fois par {model1} et {model2}" @@ -222,11 +222,8 @@ msgstr "Erreur ! Vous ne pouvez créer de code analytique récursif." #. module: analytic_structure -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns10_id -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns11_id -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns12_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns1_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns2_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns3_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns4_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns5_id @@ -228,12 +225,8 @@ #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns1_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns2_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns3_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns4_id #: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns5_id -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns6_id -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns7_id -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns8_id -#: model:ir.model.fields,field_description:analytic_structure.field_analytic_dimension_ns9_id msgid "Generated Subset of Structures" msgstr "Sous-ensemble de structures autogénéré" @@ -287,7 +280,7 @@ msgstr "Le nom doit être unique" #. module: analytic_structure -#: code:addons/analytic_structure/analytic_dimension.py:30 +#: code:addons/analytic_structure/models/analytic_dimension.py:25 #, python-format msgid "No model matches dimension {dim}" msgstr "" @@ -318,6 +311,11 @@ msgstr "Dimension associée" #. module: analytic_structure +#: model:ir.model.fields,field_description:analytic_structure.field_analytic_structure_required +msgid "Required" +msgstr "Requis" + +#. module: analytic_structure #: model:ir.model.fields,field_description:analytic_structure.field_analytic_code_parent_right msgid "Right parent" msgstr "Parent droit" diff --git a/models/analytic_structure.py b/models/analytic_structure.py index 4fd3d3f64d452ba3472e7ceda387567f6a39ef2c_bW9kZWxzL2FuYWx5dGljX3N0cnVjdHVyZS5weQ==..46ced1fc361b5fb67127c9d21449b0e2900449d0_bW9kZWxzL2FuYWx5dGljX3N0cnVjdHVyZS5weQ== 100644 --- a/models/analytic_structure.py +++ b/models/analytic_structure.py @@ -98,6 +98,7 @@ company_id = fields.Many2one( "res.company", "Company", default=(lambda *a: False) ) + required = fields.Boolean() _sql_constraints = [ ( @@ -333,7 +334,7 @@ sorted_fields = list(found_fields.items()) sorted_fields.sort(key=lambda i: int(i[0])) elem_fields = [ - self.format_field_name(ordering, prefix, suffix) + (self.format_field_name(ordering, prefix, suffix), ordering) for ordering, found in sorted_fields if not found ] @@ -347,5 +348,13 @@ modifiers = json.loads(elem.attrib.get("modifiers", "{}")) # Now we can insert the fields in the view's architecture. - for field in elem_fields: + + model_map = { + model._name.replace(".", "_"): model._name + for name, model in iter(self.env.registry.items()) + } + required = self.env[ + model_map[model] + ]._required_analytic_fields() + for field, ordering in elem_fields: attrs = {"name": field} @@ -351,12 +360,12 @@ attrs = {"name": field} - attrs["modifiers"] = json.dumps( - { - attr: value - for attr, value in list(modifiers.items()) - if elem.attrib.get(attr, "False") - in ("True", "true", "1") - } - ) + attributes = { + attr: value + for attr, value in list(modifiers.items()) + if elem.attrib.get(attr, "False") + in ("True", "true", "1") + } + attributes["required"] = int(ordering in required) + attrs["modifiers"] = json.dumps(attributes) for attr, value in list(elem.attrib.items()): if attr in ["name", "prefix", "suffix", "modifiers"]: continue diff --git a/views/analytic_views.xml b/views/analytic_views.xml index 4fd3d3f64d452ba3472e7ceda387567f6a39ef2c_dmlld3MvYW5hbHl0aWNfdmlld3MueG1s..46ced1fc361b5fb67127c9d21449b0e2900449d0_dmlld3MvYW5hbHl0aWNfdmlld3MueG1s 100644 --- a/views/analytic_views.xml +++ b/views/analytic_views.xml @@ -139,6 +139,8 @@ <field name="ordering" /> <newline /> <field name="company_id" placeholder="All" /> + <newline /> + <field name="required" /> </group> </form> </field>