diff --git a/MetaAnalytic.py b/MetaAnalytic.py index cdfabc97751e7d383e577c6abc4230dd832dfa83_TWV0YUFuYWx5dGljLnB5..e39d5c4925ff17c1e558e01dacad218d02755cc3_TWV0YUFuYWx5dGljLnB5 100644 --- a/MetaAnalytic.py +++ b/MetaAnalytic.py @@ -38,8 +38,11 @@ domain_field = 'nd_id.ns{n}_id.model_name'.format(n=n) columns[col_name] = fields.many2one( 'analytic.code', - u"Analysis Code 1", - domain=[(domain_field, '=', model_name)], + "Generated Analytic Field", + domain=[ + (domain_field, '=', model_name), + ('child_ids', '=', False) + ], track_visibility='onchange', ) diff --git a/README b/README index cdfabc97751e7d383e577c6abc4230dd832dfa83_UkVBRE1F..e39d5c4925ff17c1e558e01dacad218d02755cc3_UkVBRE1F 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ == Configure your OpenERP server for analytic fields == -By default, up to 5 analytic dimensions can be associated with an object. -You can increase this number by setting an option in the configuration file: +In your OpenERP server's configuration file, you can set several optional +parameters related to the analytic module. [analytic] @@ -6,6 +6,18 @@ [analytic] -analytic_size = 10 +key = value ... + + +Those options must be grouped under the [analytic] category. If the category +doesn't exist, add it to your configuration file. + +key (default value): description + +analytic_size (5): define the maximum number of analytic dimensions +that can be associated with a model. + +translate (False): enable or disable the translation of field values on +analytic dimensions (name) and codes (name and description). diff --git a/__init__.py b/__init__.py index cdfabc97751e7d383e577c6abc4230dd832dfa83_X19pbml0X18ucHk=..e39d5c4925ff17c1e558e01dacad218d02755cc3_X19pbml0X18ucHk= 100644 --- a/__init__.py +++ b/__init__.py @@ -23,4 +23,5 @@ # Before loading the module, if the analytic_size option is given, check it. # Its value must be an integer greater or equal to the default value. from openerp.tools import config +errors = ["[analytic]"] try: @@ -26,4 +27,3 @@ try: - analytic_size = int(config.get_misc('analytic', 'analytic_size', 5)) - assert analytic_size >= 5 + assert int(config.get_misc('analytic', 'analytic_size', 5)) >= 5 except (ValueError, AssertionError): @@ -29,5 +29,11 @@ except (ValueError, AssertionError): - config.parser.error("analytic_size must be an integer greater/equal to 5") + errors.append("analytic_size must be an integer greater/equal to 5.") +try: + assert config.get_misc('analytic', 'translate', False) in [True, False] +except (AssertionError): + errors.append("translate must be a boolean value.") +if len(errors) > 1: + config.parser.error("\n * ".join(errors)) import MetaAnalytic diff --git a/analytic_code.py b/analytic_code.py index cdfabc97751e7d383e577c6abc4230dd832dfa83_YW5hbHl0aWNfY29kZS5weQ==..e39d5c4925ff17c1e558e01dacad218d02755cc3_YW5hbHl0aWNfY29kZS5weQ== 100644 --- a/analytic_code.py +++ b/analytic_code.py @@ -19,7 +19,8 @@ ############################################################################## from openerp.osv import fields, osv +from openerp.tools import config class analytic_code(osv.Model): _name = "analytic.code" @@ -22,7 +23,8 @@ class analytic_code(osv.Model): _name = "analytic.code" + _description = u"Analytic Code" _parent_name = 'code_parent_id' _parent_store = True @@ -30,8 +32,13 @@ _order = 'parent_left' _columns = dict( - name=fields.char("Name", size=128, translate=True, required=True), + name=fields.char( + "Name", + size=128, + translate=config.get_misc('analytic', 'translate', False), + required=True, + ), nd_id=fields.many2one( "analytic.dimension", string="Dimension", ondelete="cascade", @@ -34,8 +41,9 @@ nd_id=fields.many2one( "analytic.dimension", string="Dimension", ondelete="cascade", + required=True, ), active=fields.boolean('Active'), nd_name=fields.related('nd_id', 'name', type="char", string="Dimension Name", store=False), @@ -38,8 +46,12 @@ ), active=fields.boolean('Active'), nd_name=fields.related('nd_id', 'name', type="char", string="Dimension Name", store=False), - description=fields.char('Description', size=512), + description=fields.char( + 'Description', + size=512, + translate=config.get_misc('analytic', 'translate', False), + ), code_parent_id=fields.many2one( 'analytic.code', u"Parent Code", diff --git a/analytic_dimension.py b/analytic_dimension.py index cdfabc97751e7d383e577c6abc4230dd832dfa83_YW5hbHl0aWNfZGltZW5zaW9uLnB5..e39d5c4925ff17c1e558e01dacad218d02755cc3_YW5hbHl0aWNfZGltZW5zaW9uLnB5 100644 --- a/analytic_dimension.py +++ b/analytic_dimension.py @@ -19,7 +19,6 @@ ############################################################################## from openerp.osv import fields, osv -from openerp.tools.translate import _ from openerp.addons.oemetasl import OEMetaSL from openerp.tools import config @@ -34,5 +33,5 @@ columns['ns{}_id'.format(n)] = fields.one2many( 'analytic.structure', 'nd_id', - u"Structures {}".format(n), + "Generated Subset of Structures", domain=[('ordering', '=', n)], @@ -38,5 +37,5 @@ domain=[('ordering', '=', n)], - auto_join=True + auto_join=True, ) return super(MetaDimension, cls).__new__(cls, name, bases, nmspc) @@ -45,5 +44,6 @@ __metaclass__ = MetaDimension _name = "analytic.dimension" + _description = u"Analytic Dimension" _columns = dict( @@ -48,6 +48,11 @@ _columns = dict( - name=fields.char("Name", size=128, translate=True, required=True), + name=fields.char( + "Name", + size=128, + translate=config.get_misc('analytic', 'translate', False), + required=True, + ), validated=fields.boolean("Validated"), nc_ids=fields.one2many("analytic.code", "nd_id", "Codes"), ns_id=fields.one2many("analytic.structure", "nd_id", "Structures"), diff --git a/analytic_dimension.xml b/analytic_dimension.xml index cdfabc97751e7d383e577c6abc4230dd832dfa83_YW5hbHl0aWNfZGltZW5zaW9uLnhtbA==..e39d5c4925ff17c1e558e01dacad218d02755cc3_YW5hbHl0aWNfZGltZW5zaW9uLnhtbA== 100644 --- a/analytic_dimension.xml +++ b/analytic_dimension.xml @@ -21,6 +21,7 @@ <field name="model">analytic.code</field> <field name="arch" type="xml"> <form string="Analytic Code"> + <field name="id" invisible="1"/> <field name="active"/> <field name="name"/> <field name="description"/> @@ -24,8 +25,14 @@ <field name="active"/> <field name="name"/> <field name="description"/> - <field name="code_parent_id" domain="[('id', '!=', id), ('nd_id', '=', nd_id)]" /> - <field name="nd_id" required="1"/> + <field name="nd_id" + invisible="context.get('default_nd_id', None) is not None" + required="context.get('default_nd_id', None) is not False" + /> + <field name="code_parent_id" + attrs="{'readonly': [('nd_id', '=', False)]}" + domain="[('id', '!=', id), ('nd_id', '=', nd_id)]" + /> </form> </field> </record> @@ -36,6 +43,7 @@ <field name="arch" type="xml"> <tree string="Analytic Codes" version="7.0" editable="bottom"> + <field name="id" invisible="1"/> <field name="active"/> <field name="name"/> <field name="description"/> @@ -39,8 +47,14 @@ <field name="active"/> <field name="name"/> <field name="description"/> - <field name="code_parent_id" domain="[('id', '!=', id), ('nd_id', '=', nd_id)]" /> - <field name="nd_id"/> + <field name="nd_id" + invisible="context.get('default_nd_id', None) is not None" + required="context.get('default_nd_id', None) is not False" + /> + <field name="code_parent_id" + attrs="{'readonly': [('nd_id', '=', False)]}" + domain="[('id', '!=', id), ('nd_id', '=', nd_id)]" + /> </tree> </field> </record> @@ -59,6 +73,7 @@ <field name="model">analytic.dimension</field> <field name="arch" type="xml"> <form string="Analytic Dimension" version="7.0"> + <field name="id" invisible="1" /> <label for="name" class="oe_edit_only" string="Dimension Name"/> <h1> <field name="name" class="oe_inline" placeholder="Dimension Name" style="width: 6em"/> @@ -66,22 +81,7 @@ <group colspan="4" col="4"> <field name="validated"/> <newline /> - <field name="nc_ids" string="ANCs"> - <tree string="Analysis Codes" editable="bottom"> - <field name="active"/> - <field name="name"/> - <field name="description"/> - <field name="code_parent_id" domain="[('id', '!=', id), ('nd_id', '=', nd_id)]" /> - <field name="nd_id" readonly="1" invisible="1" /> - </tree> - <form string="Analysis Codes" version="7.0"> - <field name="active"/> - <field name="name"/> - <field name="description"/> - <field name="code_parent_id" domain="[('id', '!=', id), ('nd_id', '=', nd_id)]" /> - <field name="nd_id" readonly="1" invisible="1" /> - </form> - </field> + <field name="nc_ids" string="ANCs" context="{'default_nd_id': id}" /> </group> </form> </field> diff --git a/analytic_structure.py b/analytic_structure.py index cdfabc97751e7d383e577c6abc4230dd832dfa83_YW5hbHl0aWNfc3RydWN0dXJlLnB5..e39d5c4925ff17c1e558e01dacad218d02755cc3_YW5hbHl0aWNfc3RydWN0dXJlLnB5 100644 --- a/analytic_structure.py +++ b/analytic_structure.py @@ -29,6 +29,7 @@ class analytic_structure(osv.Model): _name = "analytic.structure" + _description = u"Analytic Structure" def order_selection(self, cr, uid, context=None): order_selection = getattr(self, '_order_selection', None) @@ -52,7 +53,8 @@ ordering=fields.selection( order_selection, 'Analysis slot', - required=True), + required=True + ), ) _sql_constraints = [ diff --git a/i18n/fr.po b/i18n/fr.po index cdfabc97751e7d383e577c6abc4230dd832dfa83_aTE4bi9mci5wbw==..e39d5c4925ff17c1e558e01dacad218d02755cc3_aTE4bi9mci5wbw== 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -6,8 +6,8 @@ msgstr "" "Project-Id-Version: OpenERP Server 7.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-05-14 15:35+0000\n" -"PO-Revision-Date: 2014-05-14 17:42+0200\n" +"POT-Creation-Date: 2014-05-28 13:23+0000\n" +"PO-Revision-Date: 2014-05-28 15:24+0200\n" "Last-Translator: Jérémie Gavrel <jeremie.gavrel@xcg-consulting.fr>\n" "Language-Team: \n" "Language: fr\n" @@ -46,11 +46,6 @@ " " #. module: analytic_structure -#: model:ir.model,name:analytic_structure.model_analytic_structure -msgid "analytic.structure" -msgstr "analytic.structure" - -#. module: analytic_structure #: sql_constraint:analytic.dimension:0 msgid "Name must be unique" msgstr "Le nom doit être unique" @@ -66,13 +61,6 @@ msgstr "Codes Analytiques" #. module: analytic_structure -#: view:analytic.code:0 -#: view:analytic.dimension:0 -#: model:ir.actions.act_window,name:analytic_structure.action_analytic_dimension -msgid "Analytic Dimension" -msgstr "Dimension Analytique" - -#. module: analytic_structure #: field:analytic.dimension,ns_id:0 msgid "Structures" msgstr "Structures" @@ -108,9 +96,10 @@ msgstr "Dimension du code" #. module: analytic_structure -#: model:ir.model,name:analytic_structure.model_analytic_code -msgid "analytic.code" -msgstr "analytic.code" +#: code:addons/analytic_structure/analytic_structure.py:40 +#, python-format +msgid "Analysis {}" +msgstr "Analytique {}" #. module: analytic_structure #: field:analytic.code,active:0 @@ -170,10 +159,5 @@ msgstr "Dimension" #. module: analytic_structure -#: model:ir.model,name:analytic_structure.model_analytic_dimension -msgid "analytic.dimension" -msgstr "analytic.dimension" - -#. module: analytic_structure #: view:analytic.structure:0 #: model:ir.actions.act_window,name:analytic_structure.action_analytic_structure @@ -178,5 +162,6 @@ #: view:analytic.structure:0 #: model:ir.actions.act_window,name:analytic_structure.action_analytic_structure +#: model:ir.model,name:analytic_structure.model_analytic_structure msgid "Analytic Structure" msgstr "Structure Analytique" @@ -186,29 +171,11 @@ msgstr "Regrouper par…" #. module: analytic_structure -#: selection:analytic.structure,ordering:0 -msgid "Analysis 4" -msgstr "Analytique 4" - -#. module: analytic_structure -#: selection:analytic.structure,ordering:0 -msgid "Analysis 5" -msgstr "Analytique 5" - -#. module: analytic_structure -#: selection:analytic.structure,ordering:0 -msgid "Analysis 1" -msgstr "Analytique 1" - -#. module: analytic_structure -#: selection:analytic.structure,ordering:0 -msgid "Analysis 2" -msgstr "Analytique 2" - -#. module: analytic_structure -#: selection:analytic.structure,ordering:0 -msgid "Analysis 3" -msgstr "Analytique 3" +#: view:analytic.dimension:0 +#: model:ir.actions.act_window,name:analytic_structure.action_analytic_dimension +#: model:ir.model,name:analytic_structure.model_analytic_dimension +msgid "Analytic Dimension" +msgstr "Dimension Analytique" #. module: analytic_structure #: model:ir.actions.act_window,help:analytic_structure.action_analytic_structure @@ -224,4 +191,5 @@ " " #. module: analytic_structure +#: view:analytic.code:0 #: model:ir.actions.act_window,name:analytic_structure.action_analytic_code @@ -227,5 +195,6 @@ #: model:ir.actions.act_window,name:analytic_structure.action_analytic_code +#: model:ir.model,name:analytic_structure.model_analytic_code msgid "Analytic Code" msgstr "Code Analytique" #. module: analytic_structure @@ -228,10 +197,19 @@ msgid "Analytic Code" msgstr "Code Analytique" #. module: analytic_structure -#: view:analytic.dimension:0 -msgid "Analysis Codes" -msgstr "Codes Analytiques" +#: field:analytic.dimension,ns10_id:0 +#: field:analytic.dimension,ns1_id:0 +#: field:analytic.dimension,ns2_id:0 +#: field:analytic.dimension,ns3_id:0 +#: field:analytic.dimension,ns4_id:0 +#: field:analytic.dimension,ns5_id:0 +#: field:analytic.dimension,ns6_id:0 +#: field:analytic.dimension,ns7_id:0 +#: field:analytic.dimension,ns8_id:0 +#: field:analytic.dimension,ns9_id:0 +msgid "Generated Subset of Structures" +msgstr "Sous-ensemble de structures autogénéré" #. module: analytic_structure #: field:analytic.dimension,validated:0 @@ -248,6 +226,15 @@ msgid "Right parent" msgstr "Parent droit" -#~ msgid "unknown" -#~ msgstr "inconnu" +#~ msgid "analytic.structure" +#~ msgstr "analytic.structure" + +#~ msgid "analytic.code" +#~ msgstr "analytic.code" + +#~ msgid "analytic.dimension" +#~ msgstr "analytic.dimension" + +#~ msgid "Analysis 4" +#~ msgstr "Analytique 4" @@ -253,3 +240,15 @@ -#~ msgid "name must be unique" -#~ msgstr "le nom doit être unique" +#~ msgid "Analysis 5" +#~ msgstr "Analytique 5" + +#~ msgid "Analysis 1" +#~ msgstr "Analytique 1" + +#~ msgid "Analysis 2" +#~ msgstr "Analytique 2" + +#~ msgid "Analysis 3" +#~ msgstr "Analytique 3" + +#~ msgid "Analysis Codes" +#~ msgstr "Codes Analytiques"