[gpodder-devel] Use of gpodder.user_hooks without checking if it is valid

  • From: neal at walfield.org (Neal H. Walfield)
  • Date: Mon, 20 Jun 2011 18:28:01 +0200

gui.py calls gpodder.user_hooks.on_episodes_context_menu with checking
if gpodder.user_hooks is valid.  This results in:

  Traceback (most recent call last):
    File "/home/us/neal/src/gpodder/src/gpodder/gui.py", line 824, in
    on_treeview_episodes_button_released
      return self.treeview_available_show_context_menu(treeview, event)
    File "/home/us/neal/src/gpodder/src/gpodder/gui.py", line 1958, in
    treeview_available_show_context_menu
      result = gpodder.user_hooks.on_episodes_context_menu(episodes)
  AttributeError: 'NoneType' object has no attribute
    'on_episodes_context_menu'

The attached patch fixes that.

Also, the on_episodes_context_menu function is missing a function
body.  I've also attached the one line change (as a separate patch) to
this email.

Thanks,

Neal


From e1cf07f68a295c1f1da82edc1e618de0d00a8526 Mon Sep 17 00:00:00 2001
From: Neal H. Walfield <neal at gnu.org>
Date: Mon, 20 Jun 2011 18:25:08 +0200
Subject: [PATCH 1/2] Only call user hooks if user_hooks is not None.

---
 src/gpodder/gui.py |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/gpodder/gui.py b/src/gpodder/gui.py
index f57d88d..ac0fdf0 100644
--- a/src/gpodder/gui.py
+++ b/src/gpodder/gui.py
@@ -1955,13 +1955,15 @@ class gPodder(BuilderWidget, dbus.service.Object):
             item.connect('activate', self.on_btnDownloadedDelete_clicked)
             menu.append(item)
 
-            result = gpodder.user_hooks.on_episodes_context_menu(episodes)
-            if result:
-                menu.append(gtk.SeparatorMenuItem())
-                for label, callback in result:
-                    item = gtk.MenuItem(label)
-                    item.connect('activate', lambda item: callback(episodes))
-                    menu.append(item)
+            if gpodder.user_hooks is not None:
+                result = gpodder.user_hooks.on_episodes_context_menu(episodes)
+                if result:
+                    menu.append(gtk.SeparatorMenuItem())
+                    for label, callback in result:
+                        item = gtk.MenuItem(label)
+                        item.connect('activate',
+                                     lambda item: callback(episodes))
+                        menu.append(item)
 
             ICON = lambda x: x
 
-- 
1.7.2.5


From ed22225effc95f8c47f24b1689f0340adbd82597 Mon Sep 17 00:00:00 2001
From: Neal H. Walfield <neal at gnu.org>
Date: Mon, 20 Jun 2011 18:25:35 +0200
Subject: [PATCH 2/2] Change on_episodes_context_menu to include a proper body.

---
 src/gpodder/hooks.py |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/gpodder/hooks.py b/src/gpodder/hooks.py
index cfd5310..7d8f776 100644
--- a/src/gpodder/hooks.py
+++ b/src/gpodder/hooks.py
@@ -168,4 +168,5 @@ class HookManager(object):
 
         @param episode: A list of gpodder.model.PodcastEpisode instances
         """
+        pass
 
-- 
1.7.2.5


Other related posts: