2013-07-02 12 views
5

momento della firma con Google Analytics c'è un pezzo dello script js che deve essere inserito nel base.htmlFlask: come impedire a JS di Google Analytics di essere eseguito in ambiente dev?

problema di avere sempre c'è, che le macchine di sviluppo sarebbe presentare dati non necessari che non è da vera e propria utenti. Mi stavo chiedendo se c'è un modo per chiedere se il pallone è in modalità di debug, e quindi non caricare questo script al primo posto.

Come posso verificare la modalità di debug nel modello?

risposta

6

Se non lo si utilizza già si dovrebbe creare un file chiamato config.py e poi caricarlo nel vostro Flask app, facendo qualcosa di simile a questo:

import config 
app = flask.Flask(__name__) 
app.config.from_object(config) 

poi nel file config.py si può scrivere:

# Running on App Enginge 
PRODUCTION = os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine') 
# Running Localy 
DEVELOPMENT = not PRODUCTION 
# You decide when is DEBUG mode, usually when running locally 
DEBUG = DEVELOPMENT 

E poi nel modello è possibile utilizzare questi valori come questo:

{% if not config.DEBUG %} 
    <script> 
    ... 
    </script> 
{% endif %} 

È inoltre possibile escludere gli utenti admin dell'applicazione in modo da influire sull'analisi poiché è probabile che li abusino comunque. Se implementato il current_user il Flask modo, allora il modello dovrebbe essere modifica:

{% if not current_user.admin and not config.DEBUG %} 
    <script> 
    ... 
    </script> 
{% endif %} 

Tra l'altro, tutto quanto sopra (config.py, main.py, analytics.html) di cui sopra sono utilizzati nel mio progetto gae-init.

0

Ho un caso simile con il mio sito Flask. Voglio registrare attività per i miei utenti, ma non voglio che la mia attività come amministratore passi ad Analytics e distorgi le statistiche.

Ho aggiunto un g.is_admin al mio before_request handler:

@app.before_request 
def before_request(): 
    g.admin = current_user.is_admin() 

Poi nel modello mi salta il codice di Google Analytics se del caso utilizzando un condizionale:

{% if not g.admin %} 
    <script> ... </script> 
{% endif %} 

A seconda di come l'ambiente sia sarà necessario elaborare una condizione che possa differenziare lo sviluppo rispetto alle macchine di produzione. Questo potrebbe essere semplice come un elemento di configurazione, o controllare se la modalità di debug è attiva.

+0

Questo non è ancora ok visto che si potrebbe voler testare un utente normale o non accedere agli utenti localmente senza inviare nulla all'analitica .. – Lipis

+0

Come ho detto sopra, devi trovare la condizione corretta che puoi usare per dire una macchina di sviluppo oltre a una macchina di produzione. Per me si trattava di amministratore non vs. admin, per voi potrebbe essere una questione di controllare il nome della macchina, l'indirizzo IP, qualcosa che identifica in modo univoco le vostre macchine di sviluppo. – Miguel

+0

mio cattivo .. era troppo pigro per leggere tutta la risposta ..: / – Lipis

0

Non l'ho provato, ma penso che i modelli abbiano accesso all'oggetto di configurazione. Così si può provare qualcosa di simile:

{% if not config['DEBUG'] %} 
    <script> .... </script> 
{% endif %} 
Problemi correlati