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
  • Pagina:
  • 1
  • 2

ARGOMENTO: bottone per group_by

Re:bottone per group_by 6 Anni 4 Mesi fa #8702

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
se poi ti serve fare gruppi particolari, magari in cui tieni conto degli utenti o di altri model non presenti nelle colonne e quindi non nel dominio di lavoro in cui ti trovi, puoi aggirare le cose facendo override di read_group che è il metodo che viene chiamato.
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:bottone per group_by 6 Anni 4 Mesi fa #8714

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
archetipo ha scritto:
se poi ti serve fare gruppi particolari puoi aggirare le cose facendo override di read_group che è il metodo che viene chiamato.
Ciao archetipo,
grazie del consiglio.
Sto provando a fare quello che mi hai suggerito, ma non riesco a raggruppare i prodotti per seller_ids, o meglio ci riesco ma non ottengo il risultato desiderato.
Questo è il codice che ho scritto:
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False):
    if 'seller_ids' in groupby:
        seller_ids = self.pool.get('res.partner').search(cr, uid, [('supplier','=', True)], offset=0,limit=None, order='name', context=context, count=False)
        res = [{
                '__context': {'group_by': []},
                '__domain': domain + [('seller_ids', 'in', suppl)],
                'seller_ids': (self.pool.get('res.partner').browse(cr, uid, suppl).id, self.pool.get('res.partner').browse(cr, uid, suppl).name),
                'seller_ids_count': self.search(cr, uid, [('seller_ids', 'in', suppl)], limit=None, context=context, count=True), 
        } for suppl in seller_ids]
        return res + super(product_product, self).read_group(cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False)
    return super(product_product, self).read_group(cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False)
nella tree view ho inserito il seller_ids tra le colonne.
Il risultato che ottengo è il seguente:
Group #
(2 records) 4
Ma vorrei ottenere il nome del fornitore al posto di (2 records)
Idee su dove sbaglio? Il codice che ho scritto per il read_group va bene?
Come faccio inoltre a tornare il raggruppamento per seller_ids insieme agli altri? Se nel return scrivo
return res + super(product_produc, self).read_group(...) mi esce con un errore.
Grazie in anticipo per qualunque aiuto.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:bottone per group_by 6 Anni 4 Mesi fa #8716

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
Ciao, per quanto riguarda la parte principale dell' override del group by ci siamo,
ma la funzione non necessita di una return proprio perchè la superclasse viene eseguita internamente, qui sei già nello stadio successivo , cioè quando esegui una on change tu emuli un segnale del controller mandato dalla view al model e il model processa le classi, in questo caso sei già nell'ultimo stadio quindi sei già nella sessione in cui la classe viene processata... di conseguenza il return non serve, oltretutto perchè ci peserà la superclasse a chiamarlo....

quindi tu devi solo rimescompilare i parametri context domain ecc.. come più ti conviene,
visto che il più lo hai già fatto, ti garantisco che ti sarà molto formativo, procedere così:
def read_group(self, cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False):
    print context
    print domain 
    print field 
    print groupby
    return super(product_product, self).read_group(cr, uid, domain, fields, groupby, offset=0, limit=None, context=None, orderby=False)


e poi fare delle prove.

prova a chiamare qualsiasi tipo di groupby sulla view e guarda quali valori comprendono questi campi, di conseguenza dovrai compilarli e formattarli nel modo giusto:

ad es il context ]

se vuoi vedere il fornitore al posto dei 2 record devi impostare seller_ids come many2one e non come integer.



ciao
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:bottone per group_by 6 Anni 4 Mesi fa #8719

  • shakin89
  • Avatar di shakin89
  • Offline
  • Platinum Boarder
  • Messaggi: 388
  • Ringraziamenti ricevuti 7
  • Karma: 7
archetipo ha scritto:
Ciao, per quanto riguarda la parte principale dell' override del group by ci siamo,
ma la funzione non necessita di una return proprio perchè la superclasse viene eseguita internamente, qui sei già nello stadio successivo , cioè quando esegui una on change tu emuli un segnale del controller mandato dalla view al model e il model processa le classi, in questo caso sei già nell'ultimo stadio quindi sei già nella sessione in cui la classe viene processata... di conseguenza il return non serve, oltretutto perchè ci peserà la superclasse a chiamarlo....
Ok grazie, ma facendo come dici tu, come faccio a tornargli i miei risultati senza return? ovvero la lista di dizionari res che avevo composto? Facendo solamente
def read_group(...):
res = ...
return res
ovvero la lista di dizionari che ho costruito, se applico un altro filtro, non me lo visualizza.
se vuoi vedere il fornitore al posto dei 2 record devi impostare seller_ids come many2one e non come integer.
Bingo, è proprio questo che non riuscivo a fare, tornargli il nome associato al many2one.
Comunque il mio codice prima di postarlo l'ho ripulito dalle print, senza print non ci sarei mai arrivato!!! ;)
Ho provato a sbirciare il codice di read_group dentro product.py ma non ci sta.

ciao e grazie
fabrizio
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re:bottone per group_by 6 Anni 4 Mesi fa #8724

  • archetipo
  • Avatar di archetipo
  • Offline
  • Platinum Boarder
  • Messaggi: 331
  • Ringraziamenti ricevuti 5
  • Karma: 8
ciao no ,
copia ed incolla il codice che ti ho postato nella mia penultima risposta.

il return di una override,qualsia essa sia è :

return super(model, self).metodo(cr, uid, Args * *)

dove model è il model in cui fai override

metodo è il metodo che scavalchi.. in questo caso read_group, ma potrebbe essere
una search , write ecc.....
Alessio Gerace
github.com/archetipo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
Tempo creazione pagina: 0.121 secondi

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

Protected by R Antispam