Hi,
I have module that taking list of regions from External system,
If I set sql_conn to be valid before installing the module, fields.Secection is populated, but I need to have several records mapping to different connections, sql_conn will be valid after record is saved.
Currently the fields.Selection is empty, how to repopulate list of values ?
I'm fine witch saving the record after configuring sql_conn, and opening it again to add regions.
My module
Accounts(models.Model):
_name = 'company.accounts'
name = fields.Char('Name', required=True, translate=True)
sql_conn = fields.Many2one('company.connections', 'SQL Connections')
regions = fields.One2many(comodel_name='company.accounts.regions',inverse_name='config_id', string='Regions')
class AccountsRegions(models.Model):
_name = 'company.accounts.regions'
def _get_regions(self):
sql_conn = self.sql_connection()
if sql_conn == None: # if new record sql_conn is not defined
return []
cursor = sql_conn.cursor()
query = """select AccountCategoryCode,[Description] from AccountCategories where CategoryID = 7"""
cursor.execute(query)
row = cursor.fetchall()
sql_conn.close()
selection = []
for r in row:
selection += [('%s' % r['AccountCategoryCode'], '%s' % r['Description'])]
return selection
config_id = fields.Many2one('company.accounts', 'Config')
sql_regions = fields.Selection(_get_regions, string="Regions")
def sql_connection(self):
try:
sql_conn = self.config_id.sql_conn
return pymssql.connect(sql_conn.server,sql_conn.username,sql_conn.password,sql_conn.database,as_dict=True,autocommit=True)
except Exception as e:
return None
XML
company.accounts.config.form
company.accounts
name="regions"
widget="section_one2many"
mode="tree,form"
>