[Python-es] cómo usar MVC

2011-04-26 Por tema lopz
Hola

Siempre he desarrollado pequeños scripts en python, y algo no más de
un main y sus módulos.
Ahora estoy desarrollando un pequeño sistema que consta (a mi parecer)
de 3 sub sistemas
1.- Un módulo para leer el puerto serie y escribir en el
2.- Otro módulo que será el webservice (estoy usando webpy)
3.- Y el otro que es la parte gráfica de la app

Ahora estoy liándome como armar mi estructura para que sea compatible
con MVC (primera ves que uso esto)

Por lo que leí tengo que separar la base de datos de la gui, osea
entre estos 2 no tendrían que hablarse
y para eso está el controlador.

Mi estructura actual es la que pondré a continuación y describiré que
hace cada uno:
.
├── gui (Aquí pongo los widgets que voy creando para usarlo en la GUI,
quizá debería llamar este directorio widgets)
│   ├── __init__.py
│   ├── menu.py
│   ├── notebook.py
│   ├── treeview.py
├── PROGRAMA.py (El programa principal donde el usuario debería hacer click, )
├── media (Aquí tengo imáganes que se usará en la GUI, íconos, de botones, etc)
│   ├── bg
│   ├── icons
│   └── layers
├── modem (Este es el módulo que se encarga que se usará para iniciar,
parar, leer, etc el puerto)
│   ├── __init__.py
│   ├── interface.py (es un módulo que usa el otro de bajo nivel, pero
este corre en un thread aparte para leer constantemente el puerto)
│   └── uspp
   . (Aqui el modulo para interactuar con el puserto serie
a bajo nivel, read/write)
├── service (Este es el webservice para lo cual estoy usando webpy)
(Estoy igual trato de seguir MVC y creo que no tengo problemas aquí)
│   ├── __init__.py
│   ├── model.py
│   ├── service.py
│   ├── settings.py
│   ├── static
│   │   ├── index.css
│   │   └── jquery-1.5.1.min.js
│   ├── templates
│   │   ├── index.html
│   │   └── layout.html
│   └── web
│   ├── application.py
  .(Aqui el resto de modulos de webpy)
├── src (Aquí tengo el src de mi aplicación, y tengo 3 ficheros
llamados model, view y controller)
│   ├── controller.py
│   ├── __init__.py
│   ├── model.py
│   ├── utils.py
│   └── view.py
│
├── var
│   └── datas.db

Ahora tengo en  src.view.py algo como esto:

from gui.treeview import ListStore
from gui.menu import Menu
from gui.notebook import NoteBook


from src.controller import ControlData, ControlService
controldata = ControlData()
controlservice = ControlService()

controllers = (controldata, controlservice)

Y es aquí donde ya empezó el problema, ya que les cuento lo siguiente:

Un ejemplo, necesito desde mi GUI apretar un botón (que está en
menu.py) y que inicie el módulo para leer el puerto (modem.interface)

Yo lo tengo actualmente así:

en mi src.view es donde creo todos los objectos menu.py notebook.py treeview.py
de esta forma:

class Window(object):

def __init__(self):

window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("delete_event", self.close_application)
window.set_position(gtk.WIN_POS_CENTER_ALWAYS)
window.set_default_size(600, 400)
hbox_container = gtk.HBox(False, 0)
vbox_container = gtk.VBox(False, 0)

menu_bar = Menu() <- lo creo ahí y luego lo empaqueto más abajo
menu_bar.controlservice = controlservice #FIX!!! aquí es donde
tengo el problema, lo describo más abajo
vbox_container.pack_start(menu_bar, False, False, 0)

Como les he contado en Menu() tengo los botones para iniciar y parar
el modem.service pero este necesita ser creado antes
entonces lo he creado, instanciado en una clase del controller.py que es así:

from model import ModelData

from modem.interface import Modem, Monitor
from modem.testhread import MyThread

class ControlService(object):
def __init__(self):
self.modem = Modem(tty='/dev/ttyUSB1')
self.__callback = None
self.monitor = None

def get_modem(self):
return self.modem

def get_monitor(self):
return Monitor(self.modem.waiting, self.__callback)

def start(self):
self.monitor = self.get_monitor()
self.monitor.start()

def stop(self):
if self.monitor:
self.monitor.stop()

def callback(self, cb):
self.__callback = cb

class ControlData(object):

def __init__(self):
self.model = ModelData()

def set_title(self):
self.model.update_title(title)

def get_title(self):
datas = self.model.select_title()
for data in datas:
return data.value

Entonces este tiene un método para parar y iniciar el modem.service,
pero la forma como se lo paso el objeto creado al Menu()
por medio de un atributo

menu_bar.controlservice = controlservice

me parece realmente FEA!! y sé que no es lo correcto pero tampoco se
como más podría hacerlo.
y sé que lo mismo me pasará cuando quiera iniciar el webservice desde
la GUI, además los errores que lanzan tanto el webservice como el
modem
tengo que mostrarlos en la GUI,
Otra forma que he pensado es desde controller.py imporar menu.py pero
en este caso 

Re: [Python-es] Desarrollo en portatiles

2011-04-26 Por tema Carlos Herrera Polo
Ayer navegando en la web encontre un framework open source : Titanium
Developer

Que permite desarrollar en Python sobre Android, iPad ,etc... recien estoy
leyendo la documentacion.

Saludos

El 26 de abril de 2011 12:14, Chema Cortes  escribió:

> El día 26 de abril de 2011 16:29, gerardo Juarez
>  escribió:
>
> > Ustedes han tenido experiencia con el desarrollo en dispositivos
> portátiles
> > con Python? Cuáles son las herramientas que recomendarían? La cuestión es
> > que tengo que desarrollar una aplicación que corra en un dispositivo así,
> el
> > cuál no está aún determinado, por lo que esa elección está también
> abierta.
>
> ¿Podrías especificar mejor en qué "portátiles" has pensando dirigir
> tus desarrollos?
>
> Así, a ciegas, igual acierto si te dejo este enlace a un buen artículo
> sobre programación python para android:
>
> http://www.linuxjournal.com/article/10940
> ___
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Desarrollo en portatiles

2011-04-26 Por tema Chema Cortes
El día 26 de abril de 2011 16:29, gerardo Juarez
 escribió:

> Ustedes han tenido experiencia con el desarrollo en dispositivos portátiles
> con Python? Cuáles son las herramientas que recomendarían? La cuestión es
> que tengo que desarrollar una aplicación que corra en un dispositivo así, el
> cuál no está aún determinado, por lo que esa elección está también abierta.

¿Podrías especificar mejor en qué "portátiles" has pensando dirigir
tus desarrollos?

Así, a ciegas, igual acierto si te dejo este enlace a un buen artículo
sobre programación python para android:

http://www.linuxjournal.com/article/10940
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


[Python-es] Desarrollo en portatiles

2011-04-26 Por tema gerardo Juarez

Hola,

Ustedes han tenido experiencia con el desarrollo en dispositivos 
portátiles con Python? Cuáles son las herramientas que recomendarían? La 
cuestión es que tengo que desarrollar una aplicación que corra en un 
dispositivo así, el cuál no está aún determinado, por lo que esa 
elección está también abierta.


Muchas gracias anticipadas por sus comentarios,

Gerardo

___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] script

2011-04-26 Por tema Carlos Galisteo
2011/4/26 lasizoillo :

> En tu distribución de linux favorita podrás encontrar ejemplos en
> /etc/init.d (si no recuerdo mal). Si eres más de FreeBSD puedes
> encontrarlos en /etc/rc.d o /usr/local/etc/rc.d.

/etc/init.d/skeleton en Debian y derivados.

-- 
---
Carlos Galisteo 
GPG key :0x8E0076E9:
Fingerprint: 939E 3D10 EAA2 A972 3AF2  E25C 26B7 D8E3 8E00 76E9
---
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Modificando un XML

2011-04-26 Por tema Francisco Rivas
Perfecto :D Gracias por todos los comentarios.

2011/4/26 Nekmo 

> Te recomiendo no parsear XML/XHTML mediante regex, no es una buena idea ;-)
>
> Un cordial saludo:
> -- Nekmo.
>
> Sitio web: http://nekmo.com
> Dirección de contacto: conta...@nekmo.com
> XMPP/Jabber: conta...@nekmo.com
> Identi.ca: http://identi.ca/nekmo
> Diaspora: Nekmo
>
>
>
> El día 26 de abril de 2011 13:04, Francisco Rivas
>  escribió:
> > Hola a todos, perdonen la tardanza he estado fuera estos dias. Feliz
> > Pascua!.
> > Pues gracias a los comentarios hare pruebas con varias de ellas, pero
> estoy
> > viendo que por ejemplo una expresion regular tambien puede ser muy util
> sin
> > usar ningun modulo adicional.
> >
> > lxml esta muy bien. :D
> >
> > Muy buen dia.
> >
> > 2011/4/21 lasizoillo 
> >>
> >> El día 21 de abril de 2011 15:16, lopz  escribió:
> >> >
> >> > El día 20 de abril de 2011 09:37, lasizoillo 
> >> > escribió:
> >> >>
> >> >> Recuerdo que cuando usaba BeautifulSoup, antes de por supuesto
> pasarme
> >> >> a otra librería, tenía la extraña costumbre de leer la documentación:
> >> >>
> >> >>
> http://www.crummy.com/software/BeautifulSoup/documentation.html#Modifying%20the%20Parse%20Tree
> >> >
> >> >
> >> > Solo por curiosidad ¿cuál usas ahora?
> >> > Es que yo me he quedado con BS y al parecer el lxml va bastante fino.
> >> >
> >>
> >> Pues si, uso lxml mayormente. Pero no hay que olvidarse de BS del todo
> ;-)
> >> http://lxml.de/elementsoup.html
> >>
> >> Tener xpath y selectores css puede ahorrar mucho tiempo (de
> >> programador) y lineas de código. Con el iterparse puedes procesar
> >> ficheros xml de varios gigas a una velocidad equivalente o superior a
> >> la que se puede conseguir con un parser sax en java (mucho más coñazo
> >> de hacer y mantener).
> >>
> >> Tanto para webscraping, como para procesar ficheros enormes en xml,
> >> lxml no defrauda. La unica desventaja es que hay que compilar cosas en
> >> c, no es pure python.
> >>
> >> Saludos:
> >>
> >> Javi
> >> ___
> >> Python-es mailing list
> >> Python-es@python.org
> >> http://mail.python.org/mailman/listinfo/python-es
> >> FAQ: http://python-es-faq.wikidot.com/
> >
> >
> > ___
> > Python-es mailing list
> > Python-es@python.org
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
> >
> ___
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Modificando un XML

2011-04-26 Por tema Nekmo
Te recomiendo no parsear XML/XHTML mediante regex, no es una buena idea ;-)

Un cordial saludo:
-- Nekmo.

Sitio web: http://nekmo.com
Dirección de contacto: conta...@nekmo.com
XMPP/Jabber: conta...@nekmo.com
Identi.ca: http://identi.ca/nekmo
Diaspora: Nekmo



El día 26 de abril de 2011 13:04, Francisco Rivas
 escribió:
> Hola a todos, perdonen la tardanza he estado fuera estos dias. Feliz
> Pascua!.
> Pues gracias a los comentarios hare pruebas con varias de ellas, pero estoy
> viendo que por ejemplo una expresion regular tambien puede ser muy util sin
> usar ningun modulo adicional.
>
> lxml esta muy bien. :D
>
> Muy buen dia.
>
> 2011/4/21 lasizoillo 
>>
>> El día 21 de abril de 2011 15:16, lopz  escribió:
>> >
>> > El día 20 de abril de 2011 09:37, lasizoillo 
>> > escribió:
>> >>
>> >> Recuerdo que cuando usaba BeautifulSoup, antes de por supuesto pasarme
>> >> a otra librería, tenía la extraña costumbre de leer la documentación:
>> >>
>> >> http://www.crummy.com/software/BeautifulSoup/documentation.html#Modifying%20the%20Parse%20Tree
>> >
>> >
>> > Solo por curiosidad ¿cuál usas ahora?
>> > Es que yo me he quedado con BS y al parecer el lxml va bastante fino.
>> >
>>
>> Pues si, uso lxml mayormente. Pero no hay que olvidarse de BS del todo ;-)
>> http://lxml.de/elementsoup.html
>>
>> Tener xpath y selectores css puede ahorrar mucho tiempo (de
>> programador) y lineas de código. Con el iterparse puedes procesar
>> ficheros xml de varios gigas a una velocidad equivalente o superior a
>> la que se puede conseguir con un parser sax en java (mucho más coñazo
>> de hacer y mantener).
>>
>> Tanto para webscraping, como para procesar ficheros enormes en xml,
>> lxml no defrauda. La unica desventaja es que hay que compilar cosas en
>> c, no es pure python.
>>
>> Saludos:
>>
>> Javi
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> http://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Modificando un XML

2011-04-26 Por tema Francisco Rivas
Hola a todos, perdonen la tardanza he estado fuera estos dias. Feliz
Pascua!.

Pues gracias a los comentarios hare pruebas con varias de ellas, pero estoy
viendo que por ejemplo una expresion regular tambien puede ser muy util sin
usar ningun modulo adicional.

lxml esta muy bien. :D

Muy buen dia.

2011/4/21 lasizoillo 

> El día 21 de abril de 2011 15:16, lopz  escribió:
> >
> > El día 20 de abril de 2011 09:37, lasizoillo 
> escribió:
> >>
> >> Recuerdo que cuando usaba BeautifulSoup, antes de por supuesto pasarme
> >> a otra librería, tenía la extraña costumbre de leer la documentación:
> >>
> http://www.crummy.com/software/BeautifulSoup/documentation.html#Modifying%20the%20Parse%20Tree
> >
> >
> > Solo por curiosidad ¿cuál usas ahora?
> > Es que yo me he quedado con BS y al parecer el lxml va bastante fino.
> >
>
> Pues si, uso lxml mayormente. Pero no hay que olvidarse de BS del todo ;-)
> http://lxml.de/elementsoup.html
>
> Tener xpath y selectores css puede ahorrar mucho tiempo (de
> programador) y lineas de código. Con el iterparse puedes procesar
> ficheros xml de varios gigas a una velocidad equivalente o superior a
> la que se puede conseguir con un parser sax en java (mucho más coñazo
> de hacer y mantener).
>
> Tanto para webscraping, como para procesar ficheros enormes en xml,
> lxml no defrauda. La unica desventaja es que hay que compilar cosas en
> c, no es pure python.
>
> Saludos:
>
> Javi
> ___
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] script

2011-04-26 Por tema lasizoillo
El día 26 de abril de 2011 03:52, Yixander de la Paz Milán
 escribió:
> hola a todos:
>
> He terminado por fin el proyecto que he estado desarrollando, tengo una serie 
> de paquetes dentro del mismo un serie de módulos que importan librerias y por 
> ultimo un módulo que se llama principal.py el cual se encarga de ejecutar 
> todas las funciones que se encuentran en los diferentes paquetes y modulos. 
> Mi pregunta es como hacer un script o algo similar que me de la opción de 
> stop,start,restart, etc. Alguien me podría poner un ejemplo o facilitarme 
> alguna bibliografía...
>

En tu distribución de linux favorita podrás encontrar ejemplos en
/etc/init.d (si no recuerdo mal). Si eres más de FreeBSD puedes
encontrarlos en /etc/rc.d o /usr/local/etc/rc.d.

Pero como esa solución no es excesivamente portable (si miras varios
encontrarás diferencias), te voy a proponer otra: usar supervisord.
http://supervisord.org/

Es un programa hecho en python que sirve para eso que comentas. Aparte
controla si el programa se mantiene en pie para relanzarlo en caso de
caida.

Saludos:

Javi
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/