Index: main/waeup.kofa/trunk/src/waeup/kofa/reports.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/reports.py	(revision 9637)
+++ main/waeup.kofa/trunk/src/waeup/kofa/reports.py	(revision 9638)
@@ -132,11 +132,33 @@
 
     def get_report_jobs_description(user_id=None):
-        """Get running/completed report jobs fur ?user_id` as list of tuples.
-
-        Each tuple holds ``<job_id>, <description>,
-        <status_translated>`` in that order, where ``<description>``
-        is a human readable description of the report run and
-        ``<status_translated>`` is the report jobs' status
-        (translated).
+        """Get running/completed report jobs fur `user_id` as list of tuples.
+
+        The results contain enough information to render a status page
+        or similar. Each tuple holds::
+
+          (``<job_id>, <description>, <status_translated>,
+          <discardable>, <downloadable>``)
+
+        in that order, with
+
+        ``<job_id>``
+            The job id of the represented job. A string.
+
+        ``<description>``
+            A human readable description of the report run.
+
+        ``<status_translated>``
+            The status of report jobs' status (translated)
+
+        ``<discardable>``
+            Boolean indicating whether the job can be discarded.
+            Only completed jobs can be discarded.
+
+        ``<downloadable>``
+            Boolean indicating whether the job result can be
+            downloaded. This is only true if the job finished and
+            didn't raised exceptions.
+
+        If ``user_id`` is ``None``, all jobs are returned.
         """
 
@@ -274,5 +296,5 @@
         if not self.finished:
             return None
-        if not IReport.providedBy(self.result):
+        if not IReport.providedBy(getattr(self, 'result', None)):
             return True
         return False
@@ -384,11 +406,33 @@
 
     def get_report_jobs_description(self, user_id=None):
-        """Get running/completed report jobs fur ?user_id` as list of tuples.
-
-        Each tuple holds ``<job_id>, <description>,
-        <status_translated>`` in that order, where ``<description>``
-        is a human readable description of the report run and
-        ``<status_translated>`` is the report jobs' status
-        (translated).
+        """Get running/completed report jobs fur `user_id` as list of tuples.
+
+        The results contain enough information to render a status page
+        or similar. Each tuple holds::
+
+          (``<job_id>, <description>, <status_translated>,
+          <discardable>, <downloadable>``)
+
+        in that order, with
+
+        ``<job_id>``
+            The job id of the represented job. A string.
+
+        ``<description>``
+            A human readable description of the report run.
+
+        ``<status_translated>``
+            The status of report jobs' status (translated)
+
+        ``<discardable>``
+            Boolean indicating whether the job can be discarded.
+            Only completed jobs can be discarded.
+
+        ``<downloadable>``
+            Boolean indicating whether the job result can be
+            downloaded. This is only true if the job finished and
+            didn't raised exceptions.
+
+        If ``user_id`` is ``None``, all jobs are returned.
         """
         entries = self.get_running_report_jobs(user_id)
@@ -398,7 +442,10 @@
             job = manager.get(job_id)
             status = JOB_STATUS_MAP.get(job.status, job.status)[1]
+            discardable = job.finished
+            downloadable = job.finished and not job.failed
             if not hasattr(job, 'description'):
                 continue
-            result.append((job_id, job.description, status),)
+            result.append((job_id, job.description, status,
+                           discardable, downloadable),)
         return result
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/tests/test_reports.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/tests/test_reports.py	(revision 9637)
+++ main/waeup.kofa/trunk/src/waeup/kofa/tests/test_reports.py	(revision 9638)
@@ -368,5 +368,5 @@
         self.assertEqual(
             result,
-            [('2', 'Report 1 ()', u'new'),]
+            [('2', 'Report 1 ()', u'new', False, False),]
             )
         return
