You are here:
tecnoteca.it
Tesi on line
Sviluppo funzionalità gis su portale ZOPE
Sviluppo
Sviluppo codice Python
Python in ZPT
Python in ZPT
1 <table width="90%" height="0" style="border:1px solid #555555; background-color:#DBDBDB;"
2 tal:define="limit python:((float(container.REQUEST['x_current_map_extent'])*0.2)/
3 float(container.REQUEST ['x_map_extent']));
4 x_value_top python:float(container.REQUEST['x_value']) + limit;
5 x_value_bottom python:float(container.REQUEST['x_value']) - limit;
6 y_value_top python:float(container.REQUEST['y_value']) + limit;
7 y_value_bottom python:float(container.REQUEST['y_value']) - limit;">
In questo esempio c'è del codice python integrato all'interno di un comune tag <table>.
Il meccanismo di questo scripting è del tutto simile ai più noti meccanismi di codice server-side come ASP, PHP, JSP.
Prima di restituire quindi la pagina web al richiedente, ZOPE interpreta ed esegue il codice python rimpiazzando secondo regole ben precise il codice e generando un output all'utente che varia in base alla programmazione logica effettuata.
Andando più a fondo sul codice:
- riga 1: semplice codice HTML per la rappresentazione di una tabella; in questa riga non è presente nessuna istruzione python
- riga 2: qui troviamo l'inizio della sezione logica con “tal:define”; questo speciale tag indica a ZOPE che conseguentemente troverà del codice; “tal:define” è solamente uno di alcuni modi per specificare che tipo di operazioni vengono richieste, altri esempi potrebbero essere “tal:condition” o “tal:content” o ancora “tal:attributes”.
In questo caso essendo un “tal:define” significa che il tipo di operazioni richieste sono di tipo “definizione di variabile”; la prima variabile, “limit”, avrà il contenuto “python:((float(....)*0.2)...” che è una sequenza ben definita di operazioni da svolgere, in questo caso, su delle variabili passate attraverso una form web.
- riga 3: proseguimento riga 2
- riga 4: essendo sempre all'interno di un “tal:define” ci si trova di fronte ad un'altra definizione di variabile: in questo caso la variabile che si va a definire si chiama “x_value_top” ed il suo contenuto è dato dal blocco subito a destra.
Da notare che è presente come parametro del blocco “python:float(container.REQUEST['x_value']) + limit;” anche la variabile precedentemente definita di nome “limit”.
- righe 5-6-7: altre tre definizioni di altrettante variabili; la struttura è in tutto simile a quella analizzata alla riga 4.
A questo punto dell'analisi può aver senso chiedersi qual' è il significato del tag <table> e del suo contenuto python all'interno dello scenario di tutto il progetto.
Questa porzione di pagina ZPT è la sezione incaricata di definire delle variabili per la corretta query a database sui punti di interesse.
In altre parole questa sezione di pagina definisce delle variabili che verranno passate ad un altro oggetto il quale sarà incaricato di eseguire una query a database per verificare se ci sono dei punti di interesse all'interno del rettangolo/quadrato spaziale definito dai punti ”x_value_bottom, x_value_top, y_value_bottom e y_value_top”.
Queste definizioni quindi sono alla base di un corretto funzionamento della funzionalità di info sui punti presenti sulla mappa.