Aggiungere funzionalità

Finora abbiamo visto come estendere applicazioni esistenti aggiungendo funzionalità create da noi. Ma Odoo permette di fare molto di più: possiamo aggiungere funzionalità implementate in moduli scritti da altre persone.

Nel nostro caso vogliamo aggiugere la possibilità per gli utenti di commentare i task e di poterli seguire, alla maniera di Twitter. Questa funzionalità in Odoo è implementata nel modulo mail, più specificatamente nel modello mail.thread di quel modulo.

Per aggiungerlo al nostro modello todo.task dobbiamo procede in questo modo:

  • Aggiungere il modulo mail alle nostre dipendenze
  • Aggiungere la classe mail.thred a quelle che eredita il nostro modello todo.task
  • Aggiungere i campi necessari nella nostra vista
  • Modficare le regole di accesso per questa funzionalità (lo abbiamo già fatto nella sezione precedente)

Modificare le dipendenze

Apriamo il nostro file di manfiesto e modifichiamolo come segue:

{
    'name': 'Multiuser TODO',
    'description': 'Extend Todo app to work in a multiuser environment',
    'author': 'Imthe Author',
    'license': 'LGPL-3',
    'depends': [
        'todo_app',
        'mail' # <-- Add this line
    ],

    'data': [
        'views/task_views.xml'
    ]
}

Aggiungere la classe al modello

Per aggiungere la classe al modello procediamo nella stessa maniera con cui abbiamo ereditato il modello esteso dal modello base. Andiamo ad aggiungere all’attributo _inherit il modello mail.thread

Apriamo il nostro file models/task_task.py

class TodoTask(models.Model):
    _name = 'todo.task'
    _inherit = ['todo.task', 'mail.thread']

Con questa semplice modifica il nostro modello thread acquisterà tutta la logica che gli serve per far funzionare la messaggistica. C’è anche da notare che mettendo due dipendenze siamo obbligati anche a specificare quale deve essere il nome del modello principale da cui ereditiamo, per questo aggiungiamo ancche l’attributo _name.

Il modello mail.thread è un Abstract Class, che significa che non ha una tabella sua di riferimento. Può essere ssolo utiilizzato in altri modelli e va a estendere le loro funzionalità. Quindi, nella pratica, aggiungendolo andrà a modificare direttamente la tabella originale e aggiungerà al modello i metodi necessari alle sue funzionalità. Per maggiori infomazioni consultate la documentazione ufficiale di Odoo.

Aggiungere i campi necessari alla vista

A questo punto non ci rimane che aggiungere il widget delle funzionalità mail al fondo della nostra Form View del modello. Apriamo il file views/task_task.xml e aggiungiamo nell’attributo arch questo codice XML

<sheet position="after">
    <div class="oe_chatter">
        <field name="message_follower_ids" widget="mail_followers"/>
        <field name="message_ids" widget="mail_thread"/>
    </div>
</sheet>

Se ci fate caso i due campi message_followers_ids e message_ids non sono stati implementati esplicitamente da noi ma vengono ereditati dalla classe mail.thread.

A questo punto non ci resta che effettuare l’upgrade del nostro modello

    $ docker compose run odoo upgrade todo_user

ricaricare la pagina e cominciare ad aggiungere commenti

chatter

Continua

Il nostro upgrade del modulo base è finito, a questo punto possiamo andare a guardare più nel dettaglio cosa ci offre il framework Odoo. Cominciamo ad analizzare i Modelli