def display_job(self, upload_id):

        _debug("S3Importer.display_job()")

        db = current.db
        request = self.request
        table = self.upload_table
        job_id = self.job_id
        if job_id is None:
            # redirect to the start page (removes all vars)
            query = (table.id == upload_id)
            db(query).update(status = 2) # in error
            current.session.warning = self.messages.no_records_to_import
            redirect(URL(r=request, f=self.function, args=["import"]))

        # Get the status of the upload job
        query = (table.id == upload_id)
        row = db(query).select(table.status,
                               table.modified_on,
                               table.summary_added,
                               table.summary_error,
                               table.summary_ignored,
                               limitby=(0, 1)).first()
        status = row.status
        # completed display details
        if status == 3: # Completed
            # @todo currently this is an unnecessary server call,
            #       change for completed records to be a display details
            #       and thus avoid the round trip.
            #       but keep this code to protect against hand-crafted URLs
            #       (and the 'go back' syndrome on the browser)
            result = (row.summary_added,
                      row.summary_error,
                      row.summary_ignored,
                     )
            self._display_completed_job(result, row.modified_on)
            redirect(URL(r=request, f=self.function, args=["import"]))

        output = self._create_import_item_dataTable(upload_id, job_id)
        if request.representation == "aadata":
            return output

        # Interactive Import
        # Display import items
        response = current.response
        response.view = self._view(request, "list.html")
        if response.s3.error_report:
            error_report = "Errors|" + "|".join(response.s3.error_report)
            error_tip = A("All Errors",
                          _class="errortip",
                          _title=error_report)
        else:
            # @todo: restore the error tree from all items?
            error_tip = ""

        rowcount = len(self._get_all_items(upload_id))
        rheader = DIV(TABLE(TR(TH("%s: " % self.messages.job_total_records),
                               TD(rowcount, _id="totalAvailable"),
                               TH("%s: " % self.messages.job_records_selected),
                               TD(0, _id="totalSelected"),
                               TH(error_tip)
                               ),
                            ))

        output["title"] = self.messages.title_job_read
        output["rheader"] = rheader
        output["subtitle"] = self.messages.title_job_list

        return output

    # -------------------------------------------------------------------------
Helper method to do the comparisons
dataset/ETHPy150Open sahana/eden/modules/s3/s3import.py/S3Importer.display_job--crossover with--dataset/ETHPy150Open geopandas/geopandas/geopandas/tests/test_plotting.py/TestImageComparisons._compare_images