Version 3 (modified by mvoncken, 13 years ago) (diff)




Webui Examples

Adding a page to the webui


Webui templates are dumb, they get passed data from python, and can't call uiclient api's directly.

They are there to format the data, not to execute logic.

Template language:

Flow of the data

Disclaimer, MVC is a highly abused therm, and i'm abusing it here.

deluged->xmlrpc->uiclient-> webui         -> data passed as arguments to template.
('Model'                 )  ('controller')   ('view') 

Example : a df page in webui

This example assumes you have deluge svn checked out to "~/src/deluge" And that your plugin-development-directory is "~/prj/deluge/plugins"

This plugin will add a page to deluge that display the output of "df -h" to a page in the webui.

Create a new plugin

cd ~/prj/deluge/plugins
python ~/src/deluge/deluge/scripts/ --name Df --basepath . --author-name "My Name" --author-email ""

Restart deluge(d) and enable the plugin in the gtk-ui.

  • Add a core method.

Add this method to ~/prj/deluge/plugins/Df/df/

    def export_get_df(self):
        "returns the result of 'df -h' as a string"
        import subprocess

Test the new method.

create ~/prj/deluge/plugins/df/Df/ ; Contents:

from deluge.ui.client import sclient

print sclient.df_get_df() #export method is prefixed by plugin-name.

Execute test

cd ~/prj/deluge/plugins/Df/df
killall deluged & deluged  && python

Fix any errors until the test outputs the desired result.

todo, webui part