[Python-es] cómo usar MVC
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
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
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
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/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
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
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
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
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/