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

ARGOMENTO: Verifica esistenza campo

Verifica esistenza campo 5 Anni 7 Mesi fa #12554

  • IvanB
  • Avatar di IvanB
  • Offline
  • Senior Boarder
  • Messaggi: 63
  • Karma: 0
Ciao a Tutti.
Mi serve una dritta:
Ho una 'view', nella quale un utente X mi passa un oggetto (es. fatture, ordini, altro...),
e mi passa anche un '.char', che è una stringa (tipo: 'Ordine {object.name}, da approvare.' ),
la quale poi (in un secondo momento) vado a gestire con un stringa.format(object=<riga letta dall'oggetto con metodo .browse>).
il problema mio è che nella stringa, l'utente può scrivere anche cose tipo; 'Ordine {object.pincopalla} da approvare.' (e chiaramente 'pincopalla' non esiste, come campo. la cosa non sarebbe un grave problema, se non che, con il .browse, possono esserci più livelli (tipo {object.address_id.partner_id.name} ).

Come posso fare, per verificare a monte che, in questa stringa, l'utente non spari una cavolata?
in breve: sto cercando un sistema per verificare se effettivamente esiste un tale campo (in maniera che se non esiste, lo segnalo all'utente).

Grazie.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Verifica esistenza campo 5 Anni 7 Mesi fa #12558

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Se non ho capito male cosa vuoi fare credo tu debba scrivere un evento onchange su quel campo dove ricevi la stringa da valutare, nell'onchange poi carichi l'oggetto nel browse e fai un try-except che non fa nulla oppure ritorna il messaggio di 'warning'
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Verifica esistenza campo 5 Anni 7 Mesi fa #12559

  • IvanB
  • Avatar di IvanB
  • Offline
  • Senior Boarder
  • Messaggi: 63
  • Karma: 0
Grazie Nico, ma la risposta è 'si e no'.
mi spiego;
in un oggetto (chiamiamolo 'config'), un utente mi seleziona un oggetto da 'ir.model' - facciamo per esempio, che mi selezioni, le fatture, oggetto 'account.invoice' -.
in questo medesimo form, c'è un messaggio che l'utente mi compila. per esempio:
campo = 'La fattura {object.name} del {object.date} del fornitore {object.partner_id.code}, è scaduta da più di 30 giorni.'

in un secondo tempo (quando si verifica il caso - fattura scaduta da più di 30 gg.-), scrivo l'avviso all'utente compilandolo con il 'format';
esito = campo.format(object=<modello>)

quello che vorrei realizzare, è che in fase di inserimento del 'campo', fare un parsing dello stesso, e controllare la coerenza dei campi di {object.}.

Nell'esempio, è chiaro che il campo '{object.partner_id.code}', non esiste, perchè è un rif. a res.partner.
La necessità è di farlo a monte, quando l'utente inserisce il 'campo', ed inviargli un messaggio di errore (cosa che già faccio, per altri errori).

si può fare? come?
Grazie.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Verifica esistenza campo 5 Anni 7 Mesi fa #12560

  • NicoTheBrush
  • Avatar di NicoTheBrush
  • Offline
  • Platinum Boarder
  • Messaggi: 1952
  • Ringraziamenti ricevuti 156
  • Karma: 46
Avevo capito correttamente allora, secondo me puoi comunque farlo con l'onchange, in pratica avendo l'oggetto poi fai un test per ogni istruzione browse che ti viene passato tra {}
Lascio a te il parser però il codice può essere una cosa del genere (prova non l'ho testato):

funzione onchange riceve come parametro l'oggetto e viene chiamata sia dal campo oggetto che dal campo "istruzione"
tu fai il parser per estrapolare tutti i blocchi {}, facciamo finta che blocchi=["object.name","object.date","object.partner_id.code"]
if oggetto_passato and istruzione_passata:
   
    oggetto=self.pool.get(oggetto_passato) 
    #(qui fai il ciclo per tutti i blocchi estrapolati)
    for blocco in blocchi:
        try: 
            eval(blocco)
        except:
             #ritorna il warning con la sintassi degli onchange per dire che il blocco  non va bene qualcosa tipo 
             return {'warning': {'title': 'errore','message': 'errore nel controllo blocco'}}
    return {}
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Ringraziano per il messaggio: IvanB

Verifica esistenza campo 5 Anni 7 Mesi fa #12561

  • IvanB
  • Avatar di IvanB
  • Offline
  • Senior Boarder
  • Messaggi: 63
  • Karma: 0
allora provo.
grazie.
Vi farò sapere.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Verifica esistenza campo 5 Anni 6 Mesi fa #12757

  • IvanB
  • Avatar di IvanB
  • Offline
  • Senior Boarder
  • Messaggi: 63
  • Karma: 0
scusate, rispondo solo ora.
Ho fatto proprio comne suggerisce Nico, e funziona perfettamente.
:wave:
Grazie mille.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Tempo creazione pagina: 0.140 secondi

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

Protected by R Antispam