Author: andar Revision: 4771
Log: Get blocklist plugin working Diff: Modified: trunk/deluge/plugins/blocklist/blocklist/__init__.py =================================================================== --- trunk/deluge/plugins/blocklist/blocklist/__init__.py 2009-02-24 01:02:28 UTC (rev 4770) +++ trunk/deluge/plugins/blocklist/blocklist/__init__.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -1,10 +1,9 @@ # # blocklist/__init__.py # -# Copyright (C) 2007 Andrew Resch <andrewre...@gmail.com> -# Copyright (C) 2008 Mark Stahler ('kramed') <markstah...@gmail.com> - +# Copyright (C) 2007-2009 Andrew Resch <andrewre...@gmail.com> # +# # Deluge is free software. # # You may redistribute it and/or modify it under the terms of the @@ -24,36 +23,13 @@ # Boston, MA 02110-1301, USA. # -from deluge.log import LOG as log - from deluge.plugins.init import PluginInitBase class CorePlugin(PluginInitBase): - def __init__(self, plugin_name): - # Load the Core portion of the plugin - try: - from core import Core - self.plugin = Core(plugin_name) - except Exception, e: - log.error("Failed to load core plugin %s!", plugin_name) - log.exception(e) + from core import Core as _plugin_cls class GtkUIPlugin(PluginInitBase): - def __init__(self, plugin_name): - # Load the GtkUI portion of the plugin - try: - from gtkui import GtkUI - self.plugin = GtkUI(plugin_name) - except Exception, e: - log.error("Failed to load gtkui plugin %s!", plugin_name) - log.exception(e) + from gtkui import GtkUI as _plugin_cls class WebUIPlugin(PluginInitBase): - def __init__(self, plugin_name): - # Load the WebUI portion of the plugin - try: - from webui import WebUI - self.plugin = WebUI(plugin_name) - except Exception, e: - log.error("Failed to load webui plugin %s!", plugin_name) - log.exception(e) + from webui import WebUI as _plugin_cls Added: trunk/deluge/plugins/blocklist/blocklist/common.py =================================================================== --- trunk/deluge/plugins/blocklist/blocklist/common.py (rev 0) +++ trunk/deluge/plugins/blocklist/blocklist/common.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -0,0 +1,30 @@ +# +# common.py +# +# Copyright (C) 2009 Andrew Resch <andrewre...@gmail.com> +# +# Deluge is free software. +# +# You may redistribute it and/or modify it under the terms of the +# GNU General Public License, as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) +# any later version. +# +# deluge is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with deluge. If not, write to: +# The Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor +# Boston, MA 02110-1301, USA. +# + + +import pkg_resources +import os.path + +def get_resource(filename): + return pkg_resources.resource_filename("blocklist", os.path.join("data", filename)) Modified: trunk/deluge/plugins/blocklist/blocklist/core.py =================================================================== --- trunk/deluge/plugins/blocklist/blocklist/core.py 2009-02-24 01:02:28 UTC (rev 4770) +++ trunk/deluge/plugins/blocklist/blocklist/core.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -32,7 +32,7 @@ import shutil from deluge.log import LOG as log -from deluge.plugins.corepluginbase import CorePluginBase +from deluge.plugins.pluginbase import CorePluginBase import deluge.component as component import deluge.configmanager from deluge.core.rpcserver import export @@ -94,29 +94,29 @@ pass ## Exported RPC methods ### - @export + @export() def download_list(self, _import=False): """Download the blocklist specified in the config as url""" self.download_blocklist(_import) - @export + @export() def import_list(self, force=False): """Import the blocklist from the blocklist.cache, if load is True, then it will download the blocklist file if needed.""" threading.Thread(target=self.import_blocklist, kwargs={"force": force}).start() - @export + @export() def get_config(self): """Returns the config dictionary""" return self.config.config - @export + @export() def set_config(self, config): """Sets the config based on values in 'config'""" for key in config.keys(): self.config[key] = config[key] - @export + @export() def get_status(self): """Returns the status of the plugin.""" status = {} Modified: trunk/deluge/plugins/blocklist/blocklist/gtkui.py =================================================================== --- trunk/deluge/plugins/blocklist/blocklist/gtkui.py 2009-02-24 01:02:28 UTC (rev 4770) +++ trunk/deluge/plugins/blocklist/blocklist/gtkui.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -25,21 +25,23 @@ import gtk from deluge.log import LOG as log -from deluge.ui.client import aclient as client +from deluge.ui.client import client import deluge.component as component import deluge.common +from deluge.plugins.pluginbase import GtkPluginBase +import common -import ui from core import FORMATS -class GtkUI(ui.UI): +class GtkUI(GtkPluginBase): def enable(self): log.debug("Blocklist GtkUI enable..") + self.plugin = component.get("PluginManager") self.load_preferences_page() self.status_item = component.get("StatusBar").add_item( - image=self.get_resource("blocklist16.png"), + image=common.get_resource("blocklist16.png"), text="", callback=self._on_status_item_clicked, tooltip="Blocked IP Ranges") @@ -114,7 +116,7 @@ self.glade.get_widget("label_url").set_text( status["file_url"]) - client.blocklist.get_status(_on_get_status) + client.blocklist.get_status().addCallback(_on_get_status) def _on_show_prefs(self): def _on_get_config(config): @@ -132,7 +134,7 @@ self.glade.get_widget("chk_import_on_start").set_active( config["load_on_start"]) - client.blocklist.get_config(_on_get_config) + client.blocklist.get_config().addCallback(_on_get_config) def _on_apply_prefs(self): config = {} @@ -141,15 +143,15 @@ config["url"] = self.glade.get_widget("entry_url").get_text() config["check_after_days"] = self.glade.get_widget("spin_check_days").get_value_as_int() config["load_on_start"] = self.glade.get_widget("chk_import_on_start").get_active() - client.blocklist.set_config(None, config) + client.blocklist.set_config(config) def _on_button_check_download_clicked(self, widget): self._on_apply_prefs() - client.blocklist.import_list(None, False) + client.blocklist.import_list(False) def _on_button_force_download_clicked(self, widget): self._on_apply_prefs() - client.blocklist.import_list(None, True) + client.blocklist.import_list(True) def _on_status_item_clicked(self, widget, event): component.get("Preferences").show("Blocklist") @@ -157,7 +159,7 @@ def load_preferences_page(self): """Initializes the preferences page and adds it to the preferences dialog""" # Load the preferences page - self.glade = gtk.glade.XML(self.get_resource("blocklist_pref.glade")) + self.glade = gtk.glade.XML(common.get_resource("blocklist_pref.glade")) self.progress_bar = self.glade.get_widget("progressbar") self.table_info = self.glade.get_widget("table_info") @@ -187,10 +189,10 @@ # Set button icons self.glade.get_widget("image_download").set_from_file( - self.get_resource("blocklist_download24.png")) + common.get_resource("blocklist_download24.png")) self.glade.get_widget("image_import").set_from_file( - self.get_resource("blocklist_import24.png")) + common.get_resource("blocklist_import24.png")) # Update the preferences page with config values from the core self._on_show_prefs() Deleted: trunk/deluge/plugins/blocklist/blocklist/ui.py =================================================================== --- trunk/deluge/plugins/blocklist/blocklist/ui.py 2009-02-24 01:02:28 UTC (rev 4770) +++ trunk/deluge/plugins/blocklist/blocklist/ui.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -1,40 +0,0 @@ -# -# ui.py -# -# Copyright (C) 2008 Andrew Resch <andrewre...@gmail.com> -# -# Deluge is free software. -# -# You may redistribute it and/or modify it under the terms of the -# GNU General Public License, as published by the Free Software -# Foundation; either version 3 of the License, or (at your option) -# any later version. -# -# deluge is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with deluge. If not, write to: -# The Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor -# Boston, MA 02110-1301, USA. -# - - -import pkg_resources -import os.path - -class UI: - def __init__(self, plugin_api, plugin_name): - self.plugin = plugin_api - - def enable(self): - pass - - def disable(self): - pass - - def get_resource(self, filename): - return pkg_resources.resource_filename("blocklist", os.path.join("data", filename)) Modified: trunk/deluge/plugins/blocklist/blocklist/webui.py =================================================================== --- trunk/deluge/plugins/blocklist/blocklist/webui.py 2009-02-24 01:02:28 UTC (rev 4770) +++ trunk/deluge/plugins/blocklist/blocklist/webui.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -26,13 +26,13 @@ import os from deluge.log import LOG as log -from deluge.ui.client import sclient, aclient +from deluge.ui.client import client from deluge import component -import ui +from deluge.plugins.pluginbase import WebPluginBase -import deluge.ui.webui.lib.newforms_plus as forms +#import deluge.ui.webui.lib.newforms_plus as forms -config_page_manager = component.get("ConfigPageManager") +#config_page_manager = component.get("ConfigPageManager") FORMAT_LIST = [ ('gzmule',_("Emule IP list (GZip)")), @@ -41,68 +41,11 @@ ('p2bgz',_("PeerGuardian P2B (GZip)")) ] -class BlockListCfgForm(forms.Form): - """ - a config form based on django forms. - see webui.lib.newforms_plus, config_forms, etc. - """ - #meta: - title = _("BlockList") - - #load/save: - def initial_data(self): - data = sclient.blocklist.get_config() - return data - - def save(self, data): - cfg = dict(data) - del cfg["btn_import_now"] - del cfg["btn_force_download"] - sclient.blocklist.set_config(cfg) - if data.btn_import_now: - sclient.blocklist.import_list(data.btn_force_download) - - #input fields : - listtype = forms.ChoiceField(FORMAT_LIST) - url = forms.CharField(label=_("Url")) - check_after_days = forms.IntegerField(label=_("Check for every (days)"), min_value=-1, max_value=14) - timeout = forms.IntegerField(label=_("Timeout (seconds)"), min_value=15, max_value=360) - try_times = forms.IntegerField(label=_("Times to attempt download"), min_value=1, max_value=5) - load_on_start = forms.CheckBox(_('Import on daemon startup')) - - btn_import_now = forms.CheckBox(_('Import Now')) - btn_force_download = forms.CheckBox(_('Force Download')) - - def post_html(self): - "show blocklist status" - status = sclient.blocklist.get_status() - - if status["state"] == "Downloading": - txt = _("Downloading %.2f%%") % (status["file_progress"] * 100) - elif status["state"] == "Importing": - txt = _("Importing %s") % str(status["num_blocked"]) - elif status["state"] == "Idle": - txt = _("Blocked Ranges: %s") % str(status["num_blocked"]) - else: - txt = _("Inactive") - - return """ - <h3>Status</h3> - <div class="info"> - %s<br><form method="GET"><input type="submit" value="%s"></form> - </div> - """ % (txt, _("Refresh status")) - - -class WebUI(ui.UI): - def __init__(self, plugin_api, plugin_name): - log.debug("Calling UI init") - # Call UI constructor - ui.UI.__init__(self, plugin_api, plugin_name) - log.debug("Blocklist WebUI plugin initalized..") - +class WebUI(WebPluginBase): def enable(self): - config_page_manager.register('plugins','blocklist',BlockListCfgForm) + #config_page_manager.register('plugins','blocklist',BlockListCfgForm) + pass def disable(self): - config_page_manager.deregister('blocklist') + #config_page_manager.deregister('blocklist') + pass Modified: trunk/deluge/plugins/pluginbase.py =================================================================== --- trunk/deluge/plugins/pluginbase.py 2009-02-24 01:02:28 UTC (rev 4770) +++ trunk/deluge/plugins/pluginbase.py 2009-02-24 01:03:02 UTC (rev 4771) @@ -38,13 +38,16 @@ # Register RPC methods component.get("RPCServer").register_object(self, plugin_name.lower()) log.debug("CorePlugin initialized..") + component.start("CorePlugin." + plugin_name) class GtkPluginBase(PluginBase): def __init__(self, plugin_name): component.Component.__init__(self, "GtkPlugin." + plugin_name) log.debug("GtkPlugin initialized..") + component.start("GtkPlugin." + plugin_name) class WebPluginBase(PluginBase): def __init__(self, plugin_name): component.Component.__init__(self, "WebPlugin." + plugin_name) log.debug("WebPlugin initialized..") + component.start("WebPlugin." + plugin_name) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "deluge-commit" group. To post to this group, send email to deluge-commit@googlegroups.com To unsubscribe from this group, send email to deluge-commit+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/deluge-commit?hl=en -~----------~----~----~----~------~----~------~--~---