Make addImage more robust.
[feedingit] / src / rss_sqlite.py
index cf6cbcc..444c918 100644 (file)
@@ -24,6 +24,8 @@
 # Description : Simple RSS Reader
 # ============================================================================
 
+from __future__ import with_statement
+
 import sqlite3
 from os.path import isfile, isdir
 from shutil import rmtree
@@ -61,15 +63,15 @@ def download_callback(connection):
 def downloader(progress_handler=None, proxy=None):
     openers = []
 
-    if progress_handler:
-        openers.append (progress_handler)
+    if progress_handler is not None:
+        openers.append(progress_handler)
     else:
         openers.append(HTTPProgressHandler(download_callback))
 
     if proxy:
-        openers.append (proxy)
+        openers.append(proxy)
 
-    return urllib2.build_opener (*openers)
+    return urllib2.build_opener(*openers)
 
 # If not None, a subprocess.Popen object corresponding to a
 # update_feeds.py process.
@@ -113,10 +115,12 @@ class Feed:
 
                 abs_url = urljoin(baseurl,url)
                 f = opener.open(abs_url)
-                outf = open(filename, "w")
-                outf.write(f.read())
-                f.close()
-                outf.close()
+                try:
+                    with open(filename, "w") as outf:
+                        for data in f:
+                            outf.write(data)
+                finally:
+                    f.close()
             except (urllib2.HTTPError, urllib2.URLError, IOError), exception:
                 logger.info("Could not download image %s: %s"
                             % (abs_url, str (exception)))