From 971541175815ffde6ca1df3c4ba64474d37d923b Mon Sep 17 00:00:00 2001 From: DrFrasierCrane Date: Mon, 24 Dec 2007 15:23:21 +0100 Subject: [PATCH] Take functionality related to items out of FeedManager to ItemManager. --- straw/Application.py | 4 ++++ straw/FeedManager.py | 64 ++++++++-------------------------------------------- straw/ItemList.py | 10 ++++---- 3 files changed, 20 insertions(+), 58 deletions(-) diff --git a/straw/Application.py b/straw/Application.py index 32ca35a..daa3203 100644 --- a/straw/Application.py +++ b/straw/Application.py @@ -29,6 +29,7 @@ from xml.sax import saxutils import Config import FeedManager import ImageCache +import ItemManager import JobManager import MVP import error @@ -772,6 +773,9 @@ class Application: FeedManager.setup(storage_path = "test.db") FeedManager.init() + ItemManager.setup(storage_path = "test.db") + ItemManager.init() + #FeedManager.import_opml(os.path.join(straw.STRAW_DATA_DIR, "default_subscriptions.opml")) #if config.first_time: diff --git a/straw/FeedManager.py b/straw/FeedManager.py index e497b44..a82abbf 100644 --- a/straw/FeedManager.py +++ b/straw/FeedManager.py @@ -11,8 +11,6 @@ import straw _storage_path = None -model_data = None - def init(): fm = _get_instance() fm.init_storage(_storage_path) @@ -29,22 +27,14 @@ def export_opml(root_id, filename): fm = _get_instance() fm.export_opml(root_id, filename) -def lookup_feed(id, ctg_id): +def lookup_feed(id): fm = _get_instance() - return fm.lookup_feed(id, ctg_id) + return fm.lookup_feed(id) def lookup_category(ctg_id): fm = _get_instance() return fm.lookup_category(ctg_id) -def get_feed_items(id): - fm = _get_instance() - return fm.get_feed_items(id) - -def get_category_items(id): - fm = _get_instance() - return fm.get_category_items(id) - def get_feeds(): fm = _get_instance() return fm.get_feeds() @@ -78,6 +68,14 @@ def get_model(): fm = _get_instance() return fm.nodes +def get_children_feeds(node_id): + node = lookup_category(node_id) + + if not node: + return None + + return [_node for _node in node.all_children() if _node.type == "F"] + def categories(root_id = 1): nodes = get_model() @@ -292,8 +290,6 @@ class FeedManager(GObject): self.dao.tx_commit() - # CATEGORIES - def save_category(self, category): debug("saving category %s with parent %s" % (category.name, str(category.parent_id))) @@ -313,46 +309,6 @@ class FeedManager(GObject): self._setup_node_signals(category) self.emit("category-added", category) - def get_feed_items(self, id): - feed = self.lookup_feed(id) - feed.items = self.dao.get(Item, " WHERE feed_id = %d" % feed.id) - - for item in feed.items: - item.feed = feed - item.connect("is-read-changed", feed.on_is_read_changed) - item.connect("is-read-changed", self.on_item_is_read_changed) - - return feed.items - - def get_children_feeds(self, node_id): - node = self.nodes[node_id] - return [_node for _node in node.all_children() if _node.type == "F"] - - def get_category_items(self, id): - category = self.lookup_category(id) - - if not category: - return None - - in_str = ", ".join([str(feed.id) for feed in self.get_children_feeds(id)]) - - items = self.dao.get(Item, " WHERE feed_id IN(%s) ORDER BY id" % in_str) - - for item in items: - feed = self.lookup_feed(item.feed_id) - item.feed = feed - item.connect("is-read-changed", feed.on_is_read_changed) - item.connect("is-read-changed", self.on_item_is_read_changed) - - return items - - def feed_item_exists(self, item): - result = self.dao.get(Item, " WHERE feed_id = ? AND title = ?", (item.feed_id, item.title,)) - return len(result) > 0 - - def on_item_is_read_changed(self, obj, is_read): - self.dao.save(obj) - def on_parent_changed(self, obj, old_parent): debug("parent changed, saving %d" % (obj.id)) self.dao.save(obj) diff --git a/straw/ItemList.py b/straw/ItemList.py index 37e84ae..2476eb8 100644 --- a/straw/ItemList.py +++ b/straw/ItemList.py @@ -24,6 +24,7 @@ Boston, MA 02111-1307, USA. from straw import helpers from xml.sax import saxutils import Config +import ItemManager import MVP import error import gobject @@ -271,17 +272,18 @@ class ItemListPresenter(MVP.BasicPresenter): def feedlist_selection_changed(self, feedlist_selection, column): (model, pathlist) = feedlist_selection.get_selected_rows() iters = [model.get_iter(path) for path in pathlist] + if not iters: return + nodes = [model.get_value(treeiter, column) for treeiter in iters] items = [] node = nodes[0] - import FeedManager - + if node.node.type == "F": - items = FeedManager.get_feed_items(node.node.id) + items = ItemManager.get_feed_items(node.node.id) elif node.node.type == "C": - items = FeedManager.get_category_items(node.node.id) + items = ItemManager.get_category_items(node.node.id) self.model.populate(items) if not len(self.model.model): return -- 2.11.4.GIT