Re: [Python] [pythonisti] aggiornamento

2007-01-21 Per discussione Manlio Perillo

Lawrence Oluyede ha scritto:

 Puoi, provandolo da shell. Bisognerebbe aggiungere il supporto a
 google.py dentro l'admin. Io sono ancora contrario a metterlo nel
 save() perché quando stavo sistemando i model mi sono accorto che
 geo_location aveva bisogno di user (per l'indirizzo) e user di
 geo_location e mi pare una dipendenza stupida.

geo_location ha bisogno di user soloperchè user_id è la sua primary key.
Comunque non mi è chiaro cosa vuoi dire.


Io voglio semplicemente evitare la dipendenza circolare.
Un utente si registra con i suoi dati, noi computiamo la geolocazione,
la creiamo, la assegnamo al suo profilo e poi memorizziamo nel db il
tutto.



Va anche bene così.
Io lo avevo pensato in modo da essere un componente riutilizzabile.




 Io lascerei cosi per ora, più avanti integriamo google.py anche dentro
 l'admin


Non mi piace molto l'idea di non essere più in grado di inizializzare
tutti i dati via l'interfaccia di amministrazione.


C'è anceh da dire che la geolocazione ha uno strano formato
a-la-google quindi non ti metteresti mai a mano a inserire tutto quel
malloppone di informazioni (né ad inserire coordinate a caso)



Infatti come è adesso, devi solo inserire un indirizzo, tutto il resto 
viene fatto da save.


Purtroppo qui è anche colpa di Django che accoppia la struttura del 
database con il layer successivo.


Tanto per fare un esempio, io con SQLAlchemy ho:
1° livello: definizione struttura database
2° livello: definizione mapper
3° livello: definizione model (che si occupa di gestire i dati inseriti
dall'utente)


Infine, nella patch, non mi convince questo:


Si quelle view son tutte da riscrivere, era una monkey patch al volo
per far funzionare il sito.


Inoltre nel campo location vuoi inserire tutto il dettaglio del
geocoder? Non bastano solo le coordinate?


Appunto, bisogna riscrivere :-)



Se ce la fai, prova a creare una patch alla volta, la prima per 
sistemare geolocation e l'altra per il profilo.


Altrimenti fai il commit di quello che c'è, lo correggiamo in seguito.
La mia obiezione era che il codice attuale c'è e funziona.




Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-21 Per discussione Lawrence Oluyede

Altrimenti fai il commit di quello che c'è, lo correggiamo in seguito.
La mia obiezione era che il codice attuale c'è e funziona.


eh ok ma manca parecchia roba che ho aggiunto. Il google.py va
comunque riscritto indipendentemente dal model, o meglio, ampliato. Io
committo, facciamo sempre a tempo a mettere google.py dentro il
save(). È la struttura del DB che non vorrei più toccare.

Poi mi studio le newforms per progettare la form di
inserimento/editing dei dati e la procedura del wizard

--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Manlio Perillo

Manlio Perillo ha scritto:

Lawrence Oluyede ha scritto:

Oggi prima di cominciare ad implementare le feature effettive (vedi la
form per l'aggiunta dell'utente) ho provato a usare un po' il model e
mi sono accorto di varie mancanze e problemi che ho sistemato. Ecco,
senza ordine significativo:

[...]

Se non ci sono obiezioni io faccio il commit e comincio a progettare
l'accoppiamento view/url.

In allegato c'è il mega diff.



Io vorrei vedere meglio il codice perchè non mi convince.
Hai testato il tutto?




Ho provato ora e ci sono problemi.
Dalla interfaccia di amministrazione web non posso aggiungere nuove 
GeoLocation.


Procediamo per gradi con un commit alla volta.




Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Fwd: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Lawrence Oluyede

-- Forwarded message --
From: Lawrence Oluyede [EMAIL PROTECTED]
Date: Jan 20, 2007 10:46 AM
Subject: Re: [Python] [pythonisti] aggiornamento
To: [EMAIL PROTECTED]



Per curiosità, mi dici dove trovare questo branch?


Son tutti qui: http://code.djangoproject.com/browser/django/branches
http://code.djangoproject.com/wiki/SchemaEvolution

--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it


--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Lawrence Oluyede

 - il model GeoLocation è stato sostanzialmente riscritto perché
   - dipende da google.py e questo non va bene (get_location sarà
 chiamata dalla view, non dal model)

Qui non ti seguo.
Come vengono inseriti i dati in questo model?


Il punto del mio ragionamento è che get_geo_location() debba essere
chiamato dalla view una volta composto l'indirizzo, poi google.py
elabora l'indirizzo _o_ gli indirizzi e poi il dizionario restituito
viene memorizzato in GeoLocation.geo_location. In questo modo se ad
esempio il modulo google viene riscritto in 14 modi diversi o ampliato
noi non andiamo _mai_ a toccare il model ma solo la view che elabora
questi dati. Poi magari scopriamo che è lento come la fame e dobbiamo
farlo multithreaded, poi scopriamo che va fatto in maniera asyncrona e
quindi usiamo asyncore ecc ecc. Capisci? Se cambiamo l'API del
google.py non mi va di andare  a toccare il model ogni volta. Meglio
avere una funzione parse_data nella view o dove ti pare che viene
sistemata di volta in volta. Almeno, io l'ho pensata cosi


Io vorrei vedere meglio il codice perchè non mi convince.
Hai testato il tutto?


Come ho scritto ci sono dei test. Comunque si ho testato. Cosa non ti convince?

--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Lawrence Oluyede


Ho provato ora e ci sono problemi.
Dalla interfaccia di amministrazione web non posso aggiungere nuove
GeoLocation.


Lo so, i campi sono settati a editable=False. La domanda è: perché
dovresti aggiungere geo_location dall'admin? Tanto senza google non
hanno alcun senso e le coordinate dei posti non cambieranno nei
prossimi mille mila anni. Se un utente ha una geo locazione sbagliata
va nel suo profilo, la cancella e la ricrea (edita)


--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Lawrence Oluyede

Ok, solo che non vedevo il codice che fa tutto questo.
Dall'aread admin, quando accedo all'oggetto GeoLocation ottengo diversi
errori.


Potresti indicare il tipo di errori? Io non ne ho mezzo di errore.
Hai _ricreato_ il db?

- cancella pythonisti.db
- python manage.py syndcb


E' così anche per gli altri modelli, potresti verificare la cosa?
Ad esempio, hai provato a creare un profilo?


In effetti un problema nell'admin che non incontro nei test c'è. Non
mi permette di non specificare la geo_location e l'avatar, dopo
indago. Ma non ho errori di sorta


L'interfaccia amministrativa non funziona bene.


che errori hai?

--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Manlio Perillo

Lawrence Oluyede ha scritto:

Ok, solo che non vedevo il codice che fa tutto questo.
Dall'aread admin, quando accedo all'oggetto GeoLocation ottengo diversi
errori.


Potresti indicare il tipo di errori? Io non ne ho mezzo di errore.
Hai _ricreato_ il db?

- cancella pythonisti.db
- python manage.py syndcb


E' così anche per gli altri modelli, potresti verificare la cosa?
Ad esempio, hai provato a creare un profilo?


In effetti un problema nell'admin che non incontro nei test c'è. Non
mi permette di non specificare la geo_location e l'avatar, dopo
indago. Ma non ho errori di sorta



L'errore è appunto quando provo ad aggiungere una GeoLocation, dalla 
pagina di creazione del profilo:


IndexError at /admin/geo/geolocation/add/
list index out of range
Request Method: GET
Request URL:http://localhost:8080/admin/geo/geolocation/add/
Exception Type: IndexError
Exception Value:list index out of range
Exception Location: 
/home/manlio/projects/svn/external/django/trunk/django/contrib/admin/views/main.py 
in render_change_form, line 196




In questo modo non posso testare se la mappa funziona.



Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-20 Per discussione Manlio Perillo

Lawrence Oluyede ha scritto:

Ho sistemato il problema dei campi richiesti nel profilo


L'errore è appunto quando provo ad aggiungere una GeoLocation, dalla
pagina di creazione del profilo:


Si si è dovuto a editable=False, l'ho tolto ma rimane un ma:


In questo modo non posso testare se la mappa funziona.


Puoi, provandolo da shell. Bisognerebbe aggiungere il supporto a
google.py dentro l'admin. Io sono ancora contrario a metterlo nel
save() perché quando stavo sistemando i model mi sono accorto che
geo_location aveva bisogno di user (per l'indirizzo) e user di
geo_location e mi pare una dipendenza stupida.


geo_location ha bisogno di user soloperchè user_id è la sua primary key.
Comunque non mi è chiaro cosa vuoi dire.


Inoltre a noi non serve
memorizzare l'indirizzo dentro un campo address in GeoLocation perché
tanto viene costruito a partire dal profilo dell'utente (per questo la
dipendenza è controproducente).



Si, questo può essere tolto, lo avevo messo per completezza.

Io lascerei cosi per ora, più avanti integriamo google.py anche dentro 
l'admin




Non mi piace molto l'idea di non essere più in grado di inizializzare 
tutti i dati via l'interfaccia di amministrazione.


Infine, nella patch, non mi convince questo:

apps/geo/views.py
===
--- apps/geo/views.py   (revision 271)
+++ apps/geo/views.py   (working copy)
@@ -10,10 +10,11 @@
 locations = models.GeoLocation.objects.all()

 content = []
-for item in locations:
+for location in locations:
 content.append({
-'info': item.username.username,
-'location': simplejson.loads(item.geolocation)
+# XXX: to fix
+'info': location.users.all() or anonymous,
+'location': simplejson.loads(location.geo_location)
 })


Innanzitutto solo gli iscritti possono creare il profilo e quindi 
inserire la locazione geografica.


Inoltre nel campo location vuoi inserire tutto il dettaglio del 
geocoder? Non bastano solo le coordinate?




Saluti  Manlio Perillo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] [pythonisti] aggiornamento

2007-01-19 Per discussione Lawrence Oluyede

Oggi prima di cominciare ad implementare le feature effettive (vedi la
form per l'aggiunta dell'utente) ho provato a usare un po' il model e
mi sono accorto di varie mancanze e problemi che ho sistemato. Ecco,
senza ordine significativo:

- Tag l'ho rinominato in Skill
- ora i model hanno i vari class Meta, class Admin, __str__ con
fields vari se e quando servono (questi si possono cambiare con l'uso
dell'admin perché tanto non impattano sulla tabella SQL, che è quella
che deve essere scolpita nella roccia per ora dato che non abbiamo un
tool per le migrazioni)
- l'utente può essere creato anche _senza_ la geo_location (se Google
è down l'utente va creato comunque)
- l'avatar è diventato un ImageField, ma lascerei questa feature come
ultima cosa da implementare (anzi la lascerei proprio per una release
successiva, se no che diamo :-P ?)

Inoltre:

- il model GeoLocation è stato sostanzialmente riscritto perché
  - dipende da google.py e questo non va bene (get_location sarà
chiamata dalla view, non dal model)
  - longitudine e latitudine non vanno memorizzati in json nel DB,
sono interi, li memorizzo come interi
- di conseguenza google.py e views.py di geo sono stati leggermente
modificati ma andranno sistemati, ampliati ecc ecc secondo la doc di
google maps

- bisogna sistemare le view e progettare le URL perché cosi non vanno

Se non ci sono obiezioni io faccio il commit e comincio a progettare
l'accoppiamento view/url.

In allegato c'è il mega diff.

--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it


megadiff.diff
Description: Binary data
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-19 Per discussione Y3s
 dell'admin perché tanto non impattano sulla tabella SQL, che è quella
 che deve essere scolpita nella roccia per ora dato che non abbiamo un
 tool per le migrazioni)

Scusa l'OT, esiste già uno strumento del genere che funzioni con
sqlalchemy? Ovvero che confronti il model con il DB e aggiorni
quest'ultimo di conseguenza? 


___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [pythonisti] aggiornamento

2007-01-19 Per discussione Lawrence Oluyede

Scusa l'OT, esiste già uno strumento del genere che funzioni con
sqlalchemy? Ovvero che confronti il model con il DB e aggiorni
quest'ultimo di conseguenza?


No, esiste un branch iniziato per il Summer Of Code ma è decisamente indietro.
Ora ci vorrà parecchio prima che qualcuno si incarichi di guardare
quel codice, ripulirlo, aggiornarlo, testarlo, provarlo e integrarlo.
Idem per il branch per SQLAlchemy al posto dell'ORM di django.

--
Lawrence
http://www.oluyede.org/blog
http://www.neropercaso.it
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python