web-status: client methods like list_all_uploads() return Upload instances,
authorBrian Warner <warner@allmydata.com>
Thu, 27 Mar 2008 01:20:07 +0000 (18:20 -0700)
committerBrian Warner <warner@allmydata.com>
Thu, 27 Mar 2008 01:20:07 +0000 (18:20 -0700)
not status instances. Fix this. The symptom was that following a link like
'up-123' that referred to an old operation (no longer in memory) while an
upload was active would get an ugly traceback instead of a "no such resource"
message.

src/allmydata/web/status.py

index 8203e5b156ac9e88550c576f3d2275315020f56d..64e69fa5fa7db9cad9274cc83b373935ea4230e4 100644 (file)
@@ -729,28 +729,33 @@ class Status(rend.Page):
             for s in client.list_recent_uploads():
                 if s.get_counter() == count:
                     return UploadStatusPage(s)
-            for s in client.list_all_uploads():
+            for u in client.list_all_uploads():
+                # u is an uploader object
+                s = u.get_upload_status()
                 if s.get_counter() == count:
                     return UploadStatusPage(s)
         if stype == "down":
             for s in client.list_recent_downloads():
                 if s.get_counter() == count:
                     return DownloadStatusPage(s)
-            for s in client.list_all_downloads():
+            for d in client.list_all_downloads():
+                s = d.get_download_status()
                 if s.get_counter() == count:
                     return DownloadStatusPage(s)
         if stype == "publish":
             for s in client.list_recent_publish():
                 if s.get_counter() == count:
                     return PublishStatusPage(s)
-            for s in client.list_all_publish():
+            for p in client.list_all_publish():
+                s = p.get_status()
                 if s.get_counter() == count:
                     return PublishStatusPage(s)
         if stype == "retrieve":
             for s in client.list_recent_retrieve():
                 if s.get_counter() == count:
                     return RetrieveStatusPage(s)
-            for s in client.list_all_retrieve():
+            for r in client.list_all_retrieve():
+                s = r.get_status()
                 if s.get_counter() == count:
                     return RetrieveStatusPage(s)