Desarrollar un módulo para
                Visuse




                              José Luis López Pino
http://visuse.wor...
¿Qué necesitamos para trabajar?

   Un editor para Python. Por ejemplo, Geany.
   Subversion: sistema de control de vers...
Empezamos
   Instalamos Python
       Ubuntu: sudo apt-get install python2.6
       Windows: descargar de python.org la...
Lo que hace un módulo:

   Obtenemos los datos del buscador (usando
    XML, JSON o lo que corresponda).
   Creamos una ...
Creando el módulo

   Creamos Modulo_NombreBuscador.py
   Contendrá la definición de dos clases:
       Clase NombreBus...
Clase NombreBuscador (I)

   Hereda de Result y posiblemente también de
    ImageResult:
    class Result():
        def ...
Clase NombreBuscador (II)

   Únicamente tiene un ”constructor”, que
    inicializa los parámetros necesarios:



class W...
Clase SearchNombreBuscador (I)

   Hereda de SearchModule:
     class SearchModule():
         def __init__(self):
      ...
Clase SearchNombreBuscador (II)

   Obligatoriamente debe incluir un ”constructor”.
   En un principio basta con que ést...
SearchNombreBuscador (III)

   El método search se comunica con el
    buscador en el protocolo que corresponda
    (Json...
SearchNombreBuscador (IV)

   El método add trata cada uno de los resultados
    llamando al constructor de la clase que
...
Probando el módulo

   En el diccionario modules_dictionary del fichero
    config.py debemos añadir un nuevo elemento
  ...
Upcoming SlideShare
Loading in …5
×

Como hacer un módulo para Visuse

1,361 views

Published on

Más información sobre el proyecto en: http://visuse.wordpress.com

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,361
On SlideShare
0
From Embeds
0
Number of Embeds
154
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Como hacer un módulo para Visuse

  1. 1. Desarrollar un módulo para Visuse José Luis López Pino http://visuse.wordpress.com
  2. 2. ¿Qué necesitamos para trabajar?  Un editor para Python. Por ejemplo, Geany.  Subversion: sistema de control de versiones.  Python ~2.6.2.  Elegir un buscador.
  3. 3. Empezamos  Instalamos Python  Ubuntu: sudo apt-get install python2.6  Windows: descargar de python.org la 2.6.4.  Alta en la forja de rediris.  Descargamos el proyecto:  svn checkout https://forja.rediris.es/svn/cusl4-visuse  Los módulos los tenemos en trunk/visuse/modulos  Añadimos la clase a classes.py  Escribimos el módulo en Modulo_Nombre.py
  4. 4. Lo que hace un módulo:  Obtenemos los datos del buscador (usando XML, JSON o lo que corresponda).  Creamos una instancia de la clase por cada resultado.  Creamos una lista de resultados.  Mostramos la lista en pantalla para comprobar que no hay problemas.
  5. 5. Creando el módulo  Creamos Modulo_NombreBuscador.py  Contendrá la definición de dos clases:  Clase NombreBuscador  Heredará de Result y posiblemente de otro tipo (como ImageResult)  Habrá una instancia por cada resultado.  Almacena los atributos relevantes del resultado.  SearchNombreBuscador  Heredará de SearchModule.  Realiza todo el proceso de búsqueda.  La configuración se mantiene en config.py
  6. 6. Clase NombreBuscador (I)  Hereda de Result y posiblemente también de ImageResult: class Result(): def __init__(self, name, url): self.name = name self.url = url def __str__(self): return self.name + "n" + self.url + "n" class ImageResult(): def __init__(self, name, url, thumbnail): Result.__init__(self, name, url) self.thumbnail = thumbnail def __str__(self): return "%sn%sn%sn" % (self.name, self.url, self.thumbnail)
  7. 7. Clase NombreBuscador (II)  Únicamente tiene un ”constructor”, que inicializa los parámetros necesarios: class Wikicommons(Result, ImageResult): def __init__(self, name, url, thumbnail): ImageResult.__init__(self, name, url, thumbnail)
  8. 8. Clase SearchNombreBuscador (I)  Hereda de SearchModule: class SearchModule(): def __init__(self): self.resultList = [] def __str__(self): str = "" for n in range(0, len(self.resultList)): str += "===== %d =====n" % n str += "%s" % self.resultList[n] return str def search(self, search_terms): return self.resultList def add(self, entry): pass
  9. 9. Clase SearchNombreBuscador (II)  Obligatoriamente debe incluir un ”constructor”.  En un principio basta con que éste llame al ”constructor” de la clase de la que hereda (ModuleSearch): def __init__(self): SearchModule.__init__(self)
  10. 10. SearchNombreBuscador (III)  El método search se comunica con el buscador en el protocolo que corresponda (Json, XML, etc.) y obtiene el listado de resultados. def search(self, search_terms): gd_client = gdata.photos.service.PhotosService() photos = gd_client.SearchCommunityPhotos(search_terms, limit=config.picasa_limit) for iterador in photos.entry: print "kkk" self.add(iterador) return self.resultList
  11. 11. SearchNombreBuscador (IV)  El método add trata cada uno de los resultados llamando al constructor de la clase que creamos anteriormente: def add(self, entry): self.resultList.append(Picasa( entry.title.text, entry.content.src, entry.media.thumbnail[-1].url ))
  12. 12. Probando el módulo  En el diccionario modules_dictionary del fichero config.py debemos añadir un nuevo elemento para nuestro módulo.  Se puede ejecutar un simple test mediante:  python manage.py test  Para probarlo visualmente, en el template inicial2.html añadimos la key del diccionario anterior al vector searchEngineList  Acceder a http://127.0.0.1:8000/prueba/rock

×