Questo sito utilizza cookie per le proprie funzionalità e per inviarti pubblicità e servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie.

Accedendo al link http://www.odoo-italia.org/index.php/home/cookie-policy puoi leggere in dettaglio le modalità di trattamento dei cookie da parte dell'Associazione Odoo Italia.

Benvenuto, Ospite
Nome utente: Password: Ricordami
Ricordati di dichiarare la versione di Odoo a cui riferisce la domanda

ARGOMENTO: Visualizzazione di inherited class

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12253

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Forse ci siamo, dovresti provarlo nel tuo oggetto, nel mio esempio ho l'oggetto migration.server e il campo temp
class migration_server(osv.osv):
    _name = 'migration.server'
    _columns = {
               'temp':fields.selection([
                   ('draft','Draft'),
                   ('done','Done'),                   
               ],'Temp', select=True, readonly=False),
    }
migration_server()

nella tua nuova classe per estendere temp ho fatto:
class migration_server(osv.osv):
    _name = 'migration.server'
    _inherit = 'migration.server'
    
    lista=[]
    def __init__(self, cr, uid, context=None):
        self.lista = self._columns['temp'].selection
        if ('pluto','Pluto') not in self.lista:
            self.lista +=[('pluto','Pluto')]
            self._columns['temp']=fields.selection(self.lista, 'Temp', select=True, readonly=False),
        return
migration_server()
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12296

  • coram
  • Avatar di coram
  • Offline
  • Expert Boarder
  • Messaggi: 85
  • Ringraziamenti ricevuti 1
  • Karma: 0
Allora penso che siamo vicini, ma
self.lista +=[('pluto','Pluto')]
non mi fa niente... Non aggiunge la nuova tupla. (Chiaramente sto provando in debug)

Ho provato anche definendo:
nuovo=[('pluto','Pluto')]
lista.append(nuovo)

ma non aggiunge nulla.
Come mai?

Comunque grazie, sto imparando molto.
Ultima modifica: 5 Anni 8 Mesi fa da coram.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12299

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
In debug cosa contiene:
self._columns["temp"].selection
ovviamente al posto di temp il nome del tuo fields
(mi interessa il valore appena prima di: self.lista +=[('pluto','Pluto')])
Ultima modifica: 5 Anni 8 Mesi fa da NicoTheBrush.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12301

  • coram
  • Avatar di coram
  • Offline
  • Expert Boarder
  • Messaggi: 85
  • Ringraziamenti ricevuti 1
  • Karma: 0
contiene esattamente tutta la lista così come è definita nel parent.
Praticamente fino a quel punto il codice funziona regolarmente.
Quello che non va è solo l'inserimento del mio campo.
Dopo aver fatto lista+=(pippo) non cambia nulla e rimane la vecchia lista.

Non so se sono stato chiaro
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12305

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Piuttosto strano l'esempio che ti ho girato l'ho testato, riesci a darmi il valore di self.lista stampato dai 2 print:
self.lista = self._columns['temp'].selection
print self.lista
self.lista += [('pluto','Pluto')]
print self.lista
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Visualizzazione di inherited class 5 Anni 8 Mesi fa #12325

  • coram
  • Avatar di coram
  • Offline
  • Expert Boarder
  • Messaggi: 85
  • Ringraziamenti ricevuti 1
  • Karma: 0
Ok ci siamo. Ho capito l'inghippo.

Bisogna lavorare su lista e non self.lista...

Quindi il seguente codice funziona:
_inherit = "sale.advance.payment.inv"
_name = "sale.advance.payment.inv"

lista = []
def __init__(self, cr, uid):
lista = self._columns.selection
print lista
if('pluto','Pluto') not in self.lista:
lista+=[('pluto','Pluto')]
print lista
self._columns=fields.selection(lista,'Temp',select=True,readonly=False),
return

Direi a posto allora!
Grazie!
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.129 secondi

Odoo Italia Associazione - C.F: 94200470485 - Sede: Viale dei Cadorna, 83 - Firenze - Italy

Protected by R Antispam