Changes between Version 2 and Version 3 of Version2/Tutoriales/Consola_Web/Tutorial_5_Acciones_avanzadas_en_Panel_Contextual


Ignore:
Timestamp:
Apr 6, 2011, 11:17:57 AM (13 years ago)
Author:
edulix
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Version2/Tutoriales/Consola_Web/Tutorial_5_Acciones_avanzadas_en_Panel_Contextual

    v2 v3  
    99= Devolviendo acciones =
    1010
    11 El código de nuestro plugin va a variar un poco. Primeramente, hemos eliminado la acción hello, y hemos cambiado la acción hello_entity por hello_computer. Además en vez de definir self.actions_for_urls, vamos a definir una función llamada get_action_instances_for_url. Esa función recibe la url que se está visitando actualmente, y en función de lo que queramos que haga el plugin, devolverá una lista de acciones para esa url (que puede estar vacía).
     11El código de nuestro plugin va a variar un poco. Primeramente, hemos eliminado la acción hello, y hemos cambiado la acción hello_entity por hello_computer. Además en vez de definir self.actions_for_urls, vamos a definir una función llamada get_action_instances_for_view. Esa función recibe la vista que se está visitando actualmente y los argumentos que dicha vista recibe, y en función de lo que queramos que haga el plugin, devolverá una lista de acciones para esa url (que puede estar vacía).
    1212
    1313{{{
     
    2424import web
    2525
    26 class ComputerNotFoundError(Exception):
    27     pass
    28 
    2926class Plugin(PluginBase):
    3027    '''
     
    3330        self.urls = ('hello_computer/(.*)', views.HelloComputerView)
    3431
    35     def get_action_instances_for_url(self, url):
    36         if url.startswith("/navigator/computer"):
     32    def get_action_instances_for_view(self, view_path, args):
     33        if view_path == "navigator.navigator.NavigatorComputer" and len(args) == 1:
    3734            # Getting the computer
    38             name = url.split('/').pop()
     35            name = args[0]
    3936            orm = web.ctx.orm
    4037            computer = orm.query(Computer).filter(Computer.name == name).first()
    4138
    4239            if not computer:
    43                 raise ComputerNotFoundError()
     40                return []
    4441
    4542            # Show the action only if computer is online