예제 #1
0
 def write_status(wiki, message):
     """
     get the status information for the wiki dump run for all dump jobs
     and write it into the status html file
     """
     index = StatusHtml.get_statusfile_path(wiki, wiki.date)
     FileUtils.write_file_in_place(index, message, wiki.config.fileperms)
예제 #2
0
 def _write_dump_runinfo(self, content):
     for fmt in RunInfo.FORMATS:
         dump_runinfo_filename = self._get_dump_runinfo_filename(fmt=fmt)
         #  FileUtils.write_file(directory, dumpRunInfoFilename, text,
         #    self.wiki.config.fileperms)
         FileUtils.write_file_in_place(dump_runinfo_filename, content[fmt],
                                       self.wiki.config.fileperms)
예제 #3
0
    def update_index_html_and_json(self, dump_status=""):
        '''
        generate the index.html file for the wiki's dump run which contains
        information on each dump step as well as links to completed files
        for download, hash files, etc. and links to completed files;
        generate the json file with the same information as well'''
        if Report.NAME in self._enabled:

            self.dumpjobdata.notice.refresh_notice()
            status_items = [Report.report_dump_step_status(self.dump_dir, item)
                            for item in self.items]
            status_items_html = [item['html'] for item in status_items]
            status_items_html.reverse()
            html = "\n".join(status_items_html)
            checksums = [self.get_checksum_html(htype)
                         for htype in Checksummer.HASHTYPES]
            checksums_html = ", ".join(checksums)
            failed_jobs = sum(1 for item in self.items if item.status() == "failed")
            txt = self.wiki.config.read_template("report.html") % {
                "db": self.wiki.db_name,
                "date": self.wiki.date,
                "notice": self.dumpjobdata.notice.notice,
                "status": StatusHtml.report_dump_status(failed_jobs, dump_status),
                "previous": self.report_previous_dump_link(dump_status),
                "items": html,
                "checksum": checksums_html,
                "index": self.wiki.config.index}

            json_out = {'jobs': {}}
            for item in status_items:
                for jobname in item['json']:
                    json_out['jobs'][jobname] = item['json'][jobname]
            try:
                indexpath = os.path.join(self.wiki.public_dir(), self.wiki.date,
                                         self.wiki.config.perdump_index)
                FileUtils.write_file_in_place(indexpath, txt, self.wiki.config.fileperms)
                json_filepath = os.path.join(self.wiki.public_dir(), self.wiki.date,
                                             Report.JSONFILE)
                FileUtils.write_file_in_place(json_filepath, json.dumps(json_out),
                                              self.wiki.config.fileperms)
            except Exception:
                if self.verbose:
                    exc_type, exc_value, exc_traceback = sys.exc_info()
                    sys.stderr.write(repr(traceback.format_exception(exc_type, exc_value,
                                                                     exc_traceback)))
                message = "Couldn't update status files. Continuing anyways"
                if self.error_callback:
                    self.error_callback(message)
                else:
                    sys.stderr.write("%s\n" % message)
예제 #4
0
    def update_index_html(self, dump_status=""):
        '''
        generate the index.html file for the wiki's dump run which contains
        information on each dump step as well as links to completed files
        for download, hash files, etc.
        and links to completed files'''
        if IndexHtml.NAME in self._enabled:

            self.dumpjobdata.noticefile.refresh_notice()
            status_items = [IndexHtml.report_dump_step_status(self.dump_dir, item)
                            for item in self.items]
            status_items.reverse()
            html = "\n".join(status_items)
            checksums = [self.get_checksum_html(htype)
                         for htype in Checksummer.HASHTYPES]
            checksums_html = ", ".join(checksums)
            text = self.wiki.config.read_template("report.html") % {
                "db": self.wiki.db_name,
                "date": self.wiki.date,
                "notice": self.dumpjobdata.noticefile.notice,
                "status": StatusHtml.report_dump_status(
                    self.failhandler.failure_count, dump_status),
                "previous": self.report_previous_dump_link(dump_status),
                "items": html,
                "checksum": checksums_html,
                "index": self.wiki.config.index}

            try:
                index = os.path.join(self.wiki.public_dir(), self.wiki.date,
                                     self.wiki.config.perdump_index)
                FileUtils.write_file_in_place(index, text, self.wiki.config.fileperms)
            except Exception as ex:
                if self.verbose:
                    exc_type, exc_value, exc_traceback = sys.exc_info()
                    sys.stderr.write(repr(traceback.format_exception(exc_type, exc_value,
                                                                     exc_traceback)))
                message = "Couldn't update status files. Continuing anyways"
                if self.error_callback:
                    self.error_callback(message)
                else:
                    sys.stderr.write("%s\n" % message)
예제 #5
0
    def _write_dump_runinfo_file(self, text):
        dump_runinfo_filename = self._get_dump_runinfo_filename()
#        FileUtils.write_file(directory, dumpRunInfoFilename, text, self.wiki.config.fileperms)
        FileUtils.write_file_in_place(dump_runinfo_filename, text, self.wiki.config.fileperms)
예제 #6
0
 def write_status(wiki, message):
     index = StatusHtml.get_statusfile_path(wiki, wiki.date)
     FileUtils.write_file_in_place(index, message, wiki.config.fileperms)