Italy mailing list archives

italy@odoo-community.org

Avatar

Re: [odoo 12] Invio Email a seguito di chiamata API

by
francesco.faenza.2.0
- 04/07/2019 01:08:51

Okay ho risolto e provo a spiegare l'accaduto visto che sono riuscito a svelare l'arcano (e pure l'argatto).

Non mi spiegavo come mai non funzionasse l'invio email se non con sudo() e quindi ho chiesto a tutti suggerimenti sul modo giusto di farlo.

Premessa ho un field chiamato template_id di tipo Many2One a 'mail.template'.

Oggi mi sono accorto che lanciando un send_mail() dal field mi si genera l'errore citato

'The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\\n\\n(Document type: Message, Operation: create)'

Se invece uso lo stesso field per fare un browse su 'mail.template' e poi lancio send_mail() tutto funziona come dovrebbe.

C'è decisamente qualcosa che mi sfugge XD


/* Books are the best weapon in the world.
   [...]Arm yourself! */

Francesco Faenza
Independent Developer
https://www.francescofaenza.it
https://www.linkedin.com/in/francescofaenza/
On 28/06/2019 08:42, Omar Dini wrote:

Ciao Francesco,

Purtroppo non sono proprio un esperto di ODOO.. diciamo che c'ho messo un pochino le mani per esigenze personali e spesso un po' alla cieca...

Non saprei veramente risponderti.. ma sicuramente qui in lista ci sono persone molto preparate e ti sapranno sicuramente rispondere :)


Omar

Il 27/06/19 19:27, Fra 2.0 ha scritto:

Ciao Omar,

Ho provato anche ad utilizzare un utente apposito per l'invio mail ma ottengo sempre un errore del tipo:

'The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\\n\\n(Document type: Message, Operation: create)'

Nonostante l'utente appartenga ad un gruppo che permette di creare Message e nonostante abbia disattivato (per provare) la rule che limita la Message creation.

Non vorrei effettuare un vero login per farlo perchè si parla di chiamate via API che possono arrivare anche a distanza di pochi secondi e non vorrei appesantire il sistema.


/* Books are the best weapon in the world.
   [...]Arm yourself! */

Francesco Faenza
Independent Developer
https://www.francescofaenza.it
https://www.linkedin.com/in/francescofaenza/
On 26/06/2019 09:07, Omar Dini wrote:

Il 25/06/19 21:16, Fra 2.0 ha scritto:

Ciao Omar,

di sicuro utile, per il progetto attuale però volevo tenere lo script esterno il più semplice possibile.

Per capire questo è lo script esterno che esegui? quindi effettui un login da remoto?

Si esatto, eseguo un login "remoto" da script esterno.. ma che in realta' gira sullo stesso server.. ma non sei obbligato a fare il login.. credo tu possa fare una ricerca tra gli utenti per prendere l'id e le varie informazioni che servono..

almeno credo

Grazie,

Cari Saluti,

Francesco

/* Books are the best weapon in the world.
   [...]Arm yourself! */

Francesco Faenza
Independent Developer
https://www.francescofaenza.it
On 25/06/2019 09:14, Omar Dini wrote:

Ciao Francesco

io, usando uno script esterno, faccio una cosa del genere per inviare messaggi ad un canale.. e di conseguenza le mail:

odoo = odoorpc.ODOO('indirizzodiodoo', port=8069)
odoo.login('db', 'user', 'password')
user = odoo.env.user
body="body del messaggio" 
mailChannel = odoo.env['mail.channel'] 
			mc_ids= mailChannel.search([('name','ilike','Fatture')]) 
for mcid in mc_ids: 
ch = mailChannel.browse(mcid)
				ch.message_post(attachment_ids=[],body=body,content_subtype='html',
					message_type='comment',partner_ids=[],subtype='mail.mt_comment',
					email_from=user.partner_id.email,author_id=user.partner_id.id)

Non so se ti e' utile

Ciao

Omar Dini 
Il 25/06/19 07:51, Fra 2.0 ha scritto:
Buongiorno a tutti,

scrivo per un consiglio. Ho scritto un modulo per un progetto che 
prevede l'utilizzo di API REST.

L'autenticazione per l'invio delle richieste avviene con HTTP Basic 
Authentication (quindi ci pensa nginx nel mio caso), quindi a livello di 
odoo l'esecuzione avviene da public user.

Come conseguenza di una chiamata in particolare ci dovrebbe essere 
l'invio di una mail, però l'utente public non può farlo quindi uso 
sudo() per inviare la mail.

C'è un modo migliore? C'è modo di usare un utente specifico ad-hoc 
magari (se non sbaglio al metodo sudo() posso passare un user_id, corretto?)

Grazie in anticipo,

Cari Saluti,

Francesco


/* Books are the best weapon in the world.
    [...]Arm yourself! */

Francesco Faenza
Independent Developer
https://www.francescofaenza.it
	

_______________________________________________
Mailing-List: https://odoo-community.org/groups/italy-53
Post to: mailto:italy@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe

_______________________________________________
Mailing-List: https://odoo-community.org/groups/italy-53
Post to: mailto:italy@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe

_______________________________________________
Mailing-List: https://odoo-community.org/groups/italy-53
Post to: mailto:italy@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe

_______________________________________________
Mailing-List: https://odoo-community.org/groups/italy-53
Post to: mailto:italy@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe

Reference