diff --git a/mis_builder/__openerp__.py b/mis_builder/__openerp__.py
index db166131..d6b8ca97 100644
--- a/mis_builder/__openerp__.py
+++ b/mis_builder/__openerp__.py
@@ -36,6 +36,7 @@
'wizard/mis_builder_dashboard.xml',
'views/mis_builder.xml',
'security/ir.model.access.csv',
+ 'security/mis_builder_security.xml',
],
'test': [
],
diff --git a/mis_builder/models/mis_builder.py b/mis_builder/models/mis_builder.py
index d1dbf871..b08f5348 100644
--- a/mis_builder/models/mis_builder.py
+++ b/mis_builder/models/mis_builder.py
@@ -87,6 +87,11 @@ def _get_bal_vars_in_report(report):
return res
+def _is_valid_python_var(name):
+ return re.match("[_A-Za-z][_a-zA-Z0-9]*$", name) \
+ and not name.startswith('bal_')
+
+
class mis_report_kpi(orm.Model):
""" A KPI is an element of a MIS report.
@@ -144,10 +149,8 @@ class mis_report_kpi(orm.Model):
_order = 'sequence'
def _check_name(self, cr, uid, ids, context=None):
- # TODO: kpi name cannot start with bal
- # TODO: factor out the name check function (DRY)
for record_name in self.read(cr, uid, ids, ['name']):
- if not re.match("[_A-Za-z][_a-zA-Z0-9]*$", record_name['name']):
+ if not _is_valid_python_var(record_name['name']):
return False
return True
@@ -156,10 +159,8 @@ class mis_report_kpi(orm.Model):
]
def onchange_name(self, cr, uid, ids, name, context=None):
- # TODO: factor out the name check function (DRY)
- # check it is a valid python identifier
res = {}
- if name and not re.match("[_A-Za-z][_a-zA-Z0-9]*$", name):
+ if name and not _is_valid_python_var(name):
res['warning'] = {
'title': 'Invalid name',
'message': 'The name must be a valid python identifier'}
@@ -167,7 +168,7 @@ class mis_report_kpi(orm.Model):
def onchange_description(self, cr, uid, ids, description, name,
context=None):
- # construct name from description
+ """ construct name from description """
res = {}
if description and not name:
res = {'value': {'name': _python_var(description)}}
@@ -291,10 +292,8 @@ class mis_report_query(orm.Model):
_order = 'name'
def _check_name(self, cr, uid, ids, context=None):
- # TODO: factor out the name check function (DRY)
- # TODO: query name must start with bal
for record_name in self.read(cr, uid, ids, ['name']):
- if not re.match("[_A-Za-z][_a-zA-Z0-9]*$", record_name['name']):
+ if not _is_valid_python_var(record_name['name']):
return False
return True
@@ -470,7 +469,9 @@ class mis_report_instance_period(orm.Model):
'period_id',
'compare_period_id',
string='Compare with'),
- 'company_id': fields.many2one('res.company', 'Company', required=True),
+ 'company_id': fields.related('report_instance_id', 'company_id',
+ type="many2one", relation="res.company",
+ string="Company", readonly=True),
'normalize_factor': fields.integer(
string='Factor',
help='Factor to use to normalize the period (used in comparison'),
@@ -481,11 +482,6 @@ class mis_report_instance_period(orm.Model):
'duration': 1,
'sequence': 100,
'normalize_factor': 1,
- 'company_id': lambda s, cr, uid, c:
- s.pool.get('res.company')._company_default_get(
- cr, uid,
- 'mis.report.instance.period',
- context=c)
}
_order = 'sequence'
@@ -663,10 +659,16 @@ class mis_report_instance(orm.Model):
'target_move': fields.selection([('posted', 'All Posted Entries'),
('all', 'All Entries'),
], 'Target Moves', required=True),
+ 'company_id': fields.many2one('res.company', 'Company', required=True),
}
_defaults = {
'target_move': 'posted',
+ 'company_id': lambda s, cr, uid, c:
+ s.pool.get('res.company')._company_default_get(
+ cr, uid,
+ 'mis.report.instance',
+ context=c)
}
def create(self, cr, uid, vals, context=None):
diff --git a/mis_builder/security/mis_builder_security.xml b/mis_builder/security/mis_builder_security.xml
new file mode 100644
index 00000000..d4562df0
--- /dev/null
+++ b/mis_builder/security/mis_builder_security.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Mis Builder multi company
+
+
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+
+
+
+
diff --git a/mis_builder/views/mis_builder.xml b/mis_builder/views/mis_builder.xml
index b58a281c..3afce7cb 100644
--- a/mis_builder/views/mis_builder.xml
+++ b/mis_builder/views/mis_builder.xml
@@ -128,6 +128,7 @@
+