Scusatemi. Ho un quesito un po strano. E' possibile, premendo un pulsante, sapere se questo è stato premuto in locale al server oppure da una connessione remota?
5 Risposte
Dopo un po di ricerche ho capito come fare.
Ipotizziamo che abbiamo un pulsante costruito in questo modo:
<button name="start_edit" string="Edit" type="object" class="oe_highlight oe_inline" />
Questo pulsante chiama questa funzione:
@api.multi
def start_edit_glabels(self, data):
return {
'type': 'ir.actions.act_url',
'url': '/web/print_labels?model=mio.modulo&id=%s' % (self.id),
'target': 'self',
}
Questa funzione chiama un controller
from openerp.http import Controller, route, request
from openerp import http, _
class FrontPanelWeb(Controller):
@http.route(['/web/print_labels'], type='json', auth="public")
def download_document(self, model, id, **kw):
url = request.httprequest.url
# url_root = request.httprequest.url_root
if 'localhost' not in url:
# se non si trova in locale mi mostra un errore
return {
'message': _('Editing of this field is only possible on the local server.'),
'title': _('Server Error')
}
......... qui segue se si trova in locale
Il problema, purtroppo, è la gestione dell'errore che in un controller non si può fare con il tipico warning.
La soluzione l'ho trovata e descritta in un altro post
Bene. Come avevo previsto in locale si riesce a far funzionare, avviare il programma, senza problemi. Ma in remoto, connesso da un'altra postazione lontana dal server, il programma non si avvia o meglio si avvia sul server come se fosse in locale. Quindi vorrei evitare questa cosa impedendo che il pulsante venga premuto su postazioni lontane dal server.
Qualche idea?
Grazie
Un po' strana si, da cosa origina questa richiesta?
Devo ancora studiare la fattibilità. Mi piacerebbe lanciare un programma per modificare delle etichette appoggiandomi a glabel. Penso che farlo partire dal server locale non ci siano problemi ma se mi collego da remoto ho qualche difficoltà per visualizzarlo. E' ancora tutto in fase di progetto.
Post Edit:
Quindi, magari se sono lontano vorrei far mostrare un errore con su scritto che la cosa non è possibile. O qualcosa del genere