If a new feed's title is '', don't abort: set the title to that in the feed.
authorNeal H. Walfield <neal@gnu.org>
Sun, 24 Jul 2011 17:05:15 +0000 (19:05 +0200)
committerNeal H. Walfield <neal@walfield.org>
Sun, 31 Jul 2011 19:58:35 +0000 (21:58 +0200)
src/FeedingIt.py
src/rss_sqlite.py

index f7a45b3..a36d663 100644 (file)
@@ -175,7 +175,8 @@ class AddWidgetWizard(gtk.Dialog):
 
         self.nameEntry = hildon.Entry(gtk.HILDON_SIZE_AUTO)
         self.nameEntry.set_placeholder('Feed name')
-        if not titleIn == None:
+        # If titleIn matches urlIn, there is no title.
+        if not titleIn == None and titleIn != urlIn:
             self.nameEntry.set_text(titleIn)
             self.nameEntry.select_region(-1, -1)
 
@@ -538,7 +539,7 @@ class SortList(hildon.StackableWindow):
                 ret = wizard.run()
                 if ret == 2:
                     (title, url, category) = wizard.getData()
-                    if (not title == '') and (not url == ''):
+                    if url != '':
                         self.listing.editFeed(key, title, url, category=category)
                         self.refreshList()
                 wizard.destroy()
@@ -559,7 +560,7 @@ class SortList(hildon.StackableWindow):
             ret = wizard.run()
             if ret == 2:
                 (title, url, category) = wizard.getData()
-                if (not title == '') and (not url == ''): 
+                if url:
                    self.listing.addFeed(title, url, category=category)
         wizard.destroy()
         self.refreshList()
@@ -1177,7 +1178,7 @@ class FeedingIt:
         ret = wizard.run()
         if ret == 2:
             (title, url, category) = wizard.getData()
-            if (not title == '') and (not url == ''): 
+            if url:
                self.listing.addFeed(title, url, category=category)
         wizard.destroy()
         self.displayListing()
index b3dc2b0..6735468 100644 (file)
@@ -443,9 +443,14 @@ class Feed:
                 if not success:
                     etag = None
                     modified = None
+                title = None
+                try:
+                    title = tmp.feed.title
+                except (AttributeError, UnboundLocalError), exception:
+                    pass
                 if postFeedUpdateFunc is not None:
                     postFeedUpdateFunc (self.key, updateTime, etag, modified,
-                                        *postFeedUpdateFuncArgs)
+                                        title, *postFeedUpdateFuncArgs)
 
     def setEntryRead(self, id):
         self.db.execute("UPDATE feed SET read=1 WHERE id=?;", (id,) )
@@ -808,7 +813,7 @@ class Listing:
     def _queuePostFeedUpdate(self, *args, **kwargs):
         mainthread.execute (self._postFeedUpdate, async=True, *args, **kwargs)
 
-    def _postFeedUpdate(self, key, updateTime, etag, modified):
+    def _postFeedUpdate(self, key, updateTime, etag, modified, title):
         if modified==None:
             modified="None"
         else:
@@ -817,6 +822,10 @@ class Listing:
             self.db.execute("UPDATE feeds SET updateTime=?, etag=?, modified=? WHERE id=?;", (updateTime, etag, modified, key) )
         else:
             self.db.execute("UPDATE feeds SET etag=?, modified=? WHERE id=?;", (etag, modified, key) )
+
+        if title is not None:
+            self.db.execute("UPDATE feeds SET title=(case WHEN title=='' THEN ? ELSE title END) where id=?;",
+                            (title, key))
         self.db.commit()
         self.updateUnread(key)
         
@@ -846,7 +855,10 @@ class Listing:
         return self.db.execute("SELECT unread FROM feeds WHERE id=?;", (key,)).fetchone()[0]
         
     def getFeedTitle(self, key):
-        return self.db.execute("SELECT title FROM feeds WHERE id=?;", (key,)).fetchone()[0]
+        (title, url) = self.db.execute("SELECT title, url FROM feeds WHERE id=?;", (key,)).fetchone()
+        if title:
+            return title
+        return url
         
     def getFeedUrl(self, key):
         return self.db.execute("SELECT url FROM feeds WHERE id=?;", (key,)).fetchone()[0]
@@ -918,7 +930,7 @@ class Listing:
 
     def addFeed(self, title, url, id=None, category=1):
         if not id:
-            id = getId(title)
+            id = getId(url)
         count = self.db.execute("SELECT count(*) FROM feeds WHERE id=?;", (id,) ).fetchone()[0]
         if count == 0:
             max_rank = self.db.execute("SELECT MAX(rank) FROM feeds;").fetchone()[0]