Odoo/dev/new module/view

From zeroincombenze
Jump to: navigation, search
Tb arrow up.jpg File:Tb dev.png File:Tb dev.png File:Tb dev.png File:Tb dev.png Lang english.png


View

Le view (viste) sono le pagine di interfaccia verso l'utente finale. La definizione è effettuate con un file XML con i seguenti tag:

openerp 
   └─ data┐
       │  └─ noupdate
       │
       └─ record┐
            │   ├─ id
            │   └─ model="ir.ui.view"
            │
            ├─ field┐
            │    │  ├─ ... (testo)
            │    └─ ...
            │
            ├─ form┐             │
            │
            ├─ tree┐
            │
            ├─ calendar┐
            │
            ├─ search┐
            │
            ├─ gantt┐
            │
            ├─ graph┐
            │
            ├─ kanban┐
            │
            └─ diagram┐

            │    │  ├─ attrs┐
            │    │  │       ├─ invisible
            │    │  │       ├─ readonly
            │    │  │       └─ required
            │    │  ├─ class┐
            │    │  │       ├─ oe_avatar
            │    │  │       ├─ oe_edit_only|oe_read_only
            │    │  │       ├─ oe_inline
            │    │  │       ├─ oe_left|oe_right
            │    │  │       └─ no_button
            │    │  ├─ col
            │    │  ├─ colspan
            │    │  ├─ context
            │    │  ├─ domain
            │    │  ├─ eval
            │    │  ├─ filename
            │    │  ├─ help
            │    │  ├─ invisible
            │    │  ├─ name
            │    │  ├─ nolabel
            │    │  ├─ on_change
            │    │  ├─ placeholder
            │    │  ├─ password
            │    │  ├─ readonly
            │    │  ├─ required
            │    │  ├─ rowspan
            │    │  └─ widget┐
            │    │           ├─ email
            │    │           ├─ image
            │    │           ├─ float_time
            │    │           ├─ handle
            │    │           ├─ html
            │    │           ├─ one2many*
            │    │           ├─ many2many*
            │    │           ├─ progressbar
            │    │           ├─ reference
            │    │           ├─ statusbar
            │    │           └─ url


Definizioni di base

Esempio di definizione:

  <record model="ir.ui.view" id="view_id">
    <field name="name">view.name</field>
    <field name="model">object_name</field>
    <!-- types: tree,form,calendar,search,graph,gantt,kanban -->
    <field name="type">form</field>
    <field name="priority" eval="16"/>
    <field name="arch" type="xml">
      <!-- view content: <form>, <tree>, <graph>, … -->
    </field>
  </record>

Ogni vista deve contenere i seguenti field di base obbligatori:

  • <record> Il tag principale in cui sono racchiuse tutte le definizioni della view
  • model="ir.ui.view" dichiara che il record è una view
  • id= Contiene un identificativo univoco all'interno della tabella view; consigliato modulo.nome_view dove modulo è il nome del modulo che lo definisce e nome è un nome simbolico rappresentativo della view
  • <field name="name"> Nome dalla (in inglese) da visualizzare nella relativa tabella; per la traduzione vedere relativa pagina (in costruzione)
  • <field name="model"> Nome del modello che gestisce la view
  • <field name="type"> Tipo di vista tra: tree, form, calendar, search, graph, gantt, kanban, diagram
  • <field name="priority" Priorità per la scelta di visualizzazione (default 16); valori più piccoli aumentano la priorità; necessario il tag eval=
  • <field name="arch" Tag con la lista dei campi; richiede il tag type="xml"


Form

All'interno del tag arch è possible definire una form. La form permette di definire una vista di editing dei dati. Esempio:

    <form string="Idea form">
      <group col="6" colspan="4">
        <group colspan="5" col="6">
          <field name="name" colspan="6"/>
          <field name="inventor_id"/>
          <field name="inventor_country_id" />
          <field name="score"/>
        </group>
        <group colspan="1" col="2">
          <field name="active"/><field name="invent_date"/>
        </group>
      </group>
      <notebook colspan="4">
        <page string="General">
          <separator string="Description"/>
          <field colspan="4" name="description" nolabel="1"/>
        </page>
        <page string="Votes">
          <field colspan="4" name="vote_ids" nolabel="1">
            <tree>
              <field name="partner_id"/>
              <field name="vote"/>
            </tree>
          </field>
        </page>
        <page string="Sponsors">
          <field colspan="4" name="sponsor_ids" nolabel="1"/>
        </page>
      </notebook>
      <field name="state"/>
      <button name="do_confirm" string="Confirm" type="object"/>
    </form>

tag

  • <group> Definisce a raggruppa un insieme di elementi che possono anche essere divisi su più colonne tramite l'attributo col=
  • <notebook> Contenitore di una o più viste tabbed definite dal tag <page>
  • <page> Definisce una vista tabbed racchiusa all'interno del tag <notebook>
attributi di tag
  • attrs= dichiara elementi grafici variabili dipendenti da altri campi della stessa vista; la definizione è un dictionary con i nome degli attributi invisible, readonly e required=; il valore un una lista di 3 tuple come per i parametri della funzione search
    • attrs={'invisible': [('field1', '=', False), ('field2', '>', '0')], 'readonly': ... }
  • class= classe HTML usate per visualizzare l'elemento; possono essere inserite più classi separate da spazio
    • class=oe_avatar solo per campi immagini, visualizza avatar (90x90 pixel)
    • class=oe_edit_only visualizza in formato editable
    • class=oe_inline previene il line break
    • class=oe_left allineamento a sinistra
    • class=oe_no_button applicabile ai campi many2one per evitare la visualizzazione del bottone di navigazione
    • class=oe_read_only visualizza in formato readonly
    • class=oe_right allineamento a destra
  • col= dichiara il numero di colonne, se l'elemento lo prevede (es. <group> e <notebook>)
  • colspan= dichiara la larghezza in numero di colonne dell'elemento, se gestito a colonne
  • context= valore context da passare alle funzioni dell'elemento
  • domain= lista di 3 tuple da passare alla funzione search()
  • eval= dichiara il valore tramite istruzioni python
  • filename= dichiara il nome del file che contiene il valore di un campo binario
  • help= dichiara l'help del campo (soggetto a traduzione)
  • invisible= dichiara la label a l'elemento non visibili (valore True)
  • mode= elenco con la sequenza dei modi di visualizzazione dell'attributo <type> (applicabile solo ai campi one2many)
  • nolabel= dichiara la label dell'elemento non visibile (valore True)
  • on_change= dichiara il nome della funzione da richiamare alla modifica dell'elemento
  • placeholder= dichiara testo da visualizzare quando il campo è vuoto
  • password= dichiara che i caratteri sono visualizzato come '*' (valore True)
  • readonly= dichiara l'elemento di sola lettura (valore 1)
  • required= dichiara l'elemento è obbligatorio (valore 1)
  • rowspan= dichiara l'altezza in numero di righe dell'elemento, se gestito a righe
  • widget= dichiara il widget di visualizzazione dell'elemento; i valori possono essere
    • email
    • image
    • float_time
    • handle
    • html
    • many2one_list
    • many2many
    • many2many_binary
    • many2many_kanban
    • many2many_tags
    • one2one_list
    • one2many_list
    • progressbar
    • reference
    • statusbar
    • url