Skip to content.
Logo tecnoteca

Portale Tecnoteca.it

Logo tecnoteca

Vai al sito aziendale Tecnoteca.com


 

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.



Tesi di Laurea:
"Sviluppo funzionalità gis su portale Zope"
di Marco Celotti


- Università degli studi di Udine -
-  Facoltà di Scienze Matematiche Fisiche e Naturali  -
- Dicembre 2004 -


Slide Tesi.ppt


Video Tesi.zip  [913 KB formato AVI]