Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

Error passing data between three classes

By
Uillino
on 9/4/15, 8:18 AM 443 views

I have three classes:

class bridge_contratto(models.Model):
_name = 'tbl_contratto'
_description = 'Classe per l\'inserimento in tbl_contratto'
# la chiave di tbl_contratto sarà visualizzata col cpntenuto di sdescrizione_breve_contratto
_rec_name = 'sdescrizione_breve_contratto'

state = fields.Selection([
('contratto', 'Contratto'),
('responsabile', 'Responsabile')
], 'Status', required=True, copy=False)
scode_contratto = fields.Char('Codice Contratto', size=3, help="Inserisci il codice contratto", required=True)
sdescrizione_breve_contratto = fields.Char('Descrizione Breve', size=40, help="Inserisci una breve descrizione del contratto", required=True)
sdescrizione_contratto = fields.Text('Descrizione Estesa', help="Inserisci la descrizione estesa del contratto", required=True)
date_start = fields.Date('Data Inizio Contratto', required=True)
date_end = fields.Date('Data Fine Contratto', required=True)
dt_ini_prol = fields.Date('Data Inizio Prolungamento')
dt_fine_prol = fields.Date('Data Fine Prolungamento')
date_agg = fields.Date('Data Aggiornamento')
data_end_effe = fields.Date('Data Effettiva di Fine')
codice_sipai = fields.Char('Codice SIPAI', size=10, help="Inserisci il Codice SIPAI", required=True)
codice_cig = fields.Char('Codice CIG', size=9, help="Inserisci il Codice CIG nel formato X123/aaaa", required=True)

_defaults = {
'state': 'contratto',}

#utilizzo l'id di tbl_contratto come chiave esterna per tbl_responsabile
@api.multi
def open_responsabile(self):
ac = self.env['ir.model.data'].xmlid_to_res_id('mymodule.view_bridge_responsabile_form', raise_if_not_found=True)
tbl_contratto = False
for o in self:
tbl_contratto = o.id
result = {
'name': '2nd class',
'view_type': 'form',
'res_model': 'tbl_responsabile',
'view_id': ac,
'context': {'default_id_tbl_contratto': tbl_contratto},
'type': 'ir.actions.act_window',
'view_mode': 'form'
}
return result

#utilizzo l'id di tbl_contratto come chiave esterna per tbl_rti
@api.multi
def open_rti(self):
ac = self.env['ir.model.data'].xmlid_to_res_id('mymodule.view_bridge_rti_form', raise_if_not_found=True)
tbl_contratto = False
for o in self:
tbl_contratto = o.id
result = {
'name': '3th class',
'view_type': 'form',
'res_model': 'tbl_rti',
'view_id': ac,
'context': {'default_id_tbl_contratto': tbl_contratto},
'type': 'ir.actions.act_window',
'view_mode': 'form'
}
return result
class bridge_responsabile(models.Model):

_name = 'tbl_responsabile'
_description = 'Classe per l\'inserimento in tbl_responsabile'

# eredito l'id di modello tbl_contratton, che rinomino in id_tbl_contratto
_inherits = {'tbl_contratto': 'id_tbl_contratto'}

# l'id di tbl_contratto è foreign key per id_tbl_contratto (1:N)
id_tbl_contratto = fields.Many2one('tbl_contratto', 'Codice Contratto', widget="many2one_list")

state = fields.Selection([
('contratto', 'Contratto'),
('responsabile', 'Responsabile')
], 'Status', required=True, copy=False)
responsabile_sogei = fields.Boolean(string='Responsabile Sogei', help="Seleziona se il responsabile è SOGEI")
responsabile_fornitore = fields.Boolean(string='Responsabile Fornitore', help="Seleziona se il responsabile è il fornitore")
responsabile_contratto = fields.Char(string='Responsabile Contratto', size=100, help="Indica il responsabile del contratto", required=True)
tel_responsabile_contratto = fields.Char(string='Telefono Responsabile Contratto', size=11, help="Inserisci il numero di telefono del responsabile del contratto")
email_resp_contratto = fields.Char(string='Email del Responsabile Contratto', help="Inserisci l'indirizzo email del responsabile del contratto", required=True)

_defaults = {
'state': 'responsabile',}

#utilizzo l'id di tbl_contratto come chiave esterna per tbl_rti
@api.multi
def open_rti(self):
ac = self.env['ir.model.data'].xmlid_to_res_id('mymodule.view_bridge_rti_form', raise_if_not_found=True)
tbl_contratto = False
for o in self:
tbl_contratto = o.id_tbl_contratto
result = {
'name': '4th class',
'view_type': 'form',
'res_model': 'tbl_rti',
'view_id': ac,
'context': {'default_id_tbl_contratto': tbl_contratto},
'type': 'ir.actions.act_window',
'view_mode': 'form'
}
return result
class bridge_rti(models.Model):

_name = 'tbl_rti'
_description = 'Classe per l\'inserimento in tbl_rti'

# eredito l'id del modello tbl_contratto, che rinomino in id_tbl_contratto, e del modello
#tbl_responsabile, che rinomino in id_tbl_contratto
_inherits = {'tbl_contratto': 'id_tbl_contratto'}

# l'id di tbl_contratto è foreign key per id_tbl_contratto (1:N)
id_tbl_contratto = fields.Many2one('tbl_contratto', 'Codice Contratto', widget="many2one_list")

state = fields.Selection([
('contratto', 'Contratto'),
('responsabile', 'Responsabile'),
('rti', 'RTI'),
], 'Status', required=True, copy=False)
tipologia = fields.Selection([
('M', 'Mandataria'),
('E', 'Esecutrice'),
], 'Tipologia', required=True)
denominazione_societa = fields.Char(string='Denominazione Società', size=100, help="Indica la denominazione societaria", required=True)

_defaults = {
'state': 'rti',}

Tbl_contratto pass the default value of id_tbl_contratto to tbl_responsabile and tbl_rti using open_responsabile and open_rti. Everything works fine.

I would like to pass the default_value of id_tbl_contratto from tbl_responsabile to tbl_rti using the same method:

@api.multi
def open_rti(self):
ac = self.env['ir.model.data'].xmlid_to_res_id('mymodule.view_bridge_rti_form', raise_if_not_found=True)
tbl_contratto = False
for o in self:
tbl_contratto = o.id_tbl_contratto
result = {
'name': '4th class',
'view_type': 'form',
'res_model': 'tbl_rti',
'view_id': ac,
'context': {'default_id_tbl_contratto': tbl_contratto},
'type': 'ir.actions.act_window',
'view_mode': 'form'
}
return result

but I get this error:

Traceback (most recent call last):
File "/home/odoo/http.py", line 530, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/odoo/http.py", line 581, in dispatch
return self._json_response(result)
File "/home/odoo/http.py", line 519, in _json_response
body = simplejson.dumps(response)
File "/usr/lib64/python2.7/site-packages/simplejson/__init__.py", line 354, in dumps
return _default_encoder.encode(obj)
File "/usr/lib64/python2.7/site-packages/simplejson/encoder.py", line 262, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib64/python2.7/site-packages/simplejson/encoder.py", line 340, in iterencode
return _iterencode(o, 0)
File "/usr/lib64/python2.7/site-packages/simplejson/encoder.py", line 239, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: tbl_contratto(1,) is not JSON serializable

Where is the mistake?

Thank you!

2

Axel Mendoza

--Axel Mendoza--
10298
| 7 7 8
Camaguey, Cuba
--Axel Mendoza--

DevOps - Full stack - Software Architect - Developer - Technology Integrator

I could help you to develop anything and solve complex problems based on technologies, integrations and tricky stuffs mostly in Python with OpenERP/Odoo, Zato, Django and many others frameworks programming languages and technologies.

I offers consulting services to anyone with an unanswered questions or needs for customizations. Think about it, maybe it's better to have an expert to solve your issues and projects than having a full time employee trying to understand what to do an how

Reach me at aekroft@gmail.com

Axel Mendoza
On 9/4/15, 12:12 PM

this line:

'context': {'default_id_tbl_contratto': tbl_contratto},

should be

'context': {'default_id_tbl_contratto': tbl_contratto.id}, 

It works! Thank you again :-)

Uillino
on 9/5/15, 7:48 AM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

2 follower(s)

Stats

Asked: 9/4/15, 8:18 AM
Seen: 443 times
Last updated: 9/5/15, 7:47 AM