Пример #1
0
    def prepare_to_move_files(self, zip_dict, conf):
        #
        if not os.path.exists(conf.classified_folder):
            os.mkdir(conf.classified_folder)

        #
        move_list = []
        unzip_list = []

        # manager
        for manager in self.manager_list:
            ma_path = os.path.join(conf.classified_folder, manager.name)

            # module
            for module in manager.module_list:
                mo_path = os.path.join(ma_path, module.name)

                # line
                for line in module.line_list:
                    line_folder = IOHelper.Naming.valid_name(
                        line.name)  # line num is not specified
                    li_path = os.path.join(mo_path, line_folder)

                    # ini, server side do not need ini
                    if conf.write_ini:
                        ini = IOHelper.INI()
                        line.report_list = sorted(line.report_list)
                        ini.write(li_path + '\\error_package.ini',
                                  line.report_list)

                    #
                    for i, report_id in enumerate(line.report_list):
                        # move small portion of zip files to folder
                        if 0 < conf.num_zip_move <= i:
                            continue

                        # src
                        # dict struct: id->(folder, zip)
                        src = zip_dict[report_id][1]

                        # dst
                        dfn = IOHelper.DumpFileName(conf)
                        zip_fname = dfn.zip_name_from_id(report_id)
                        dst = os.path.join(li_path, zip_fname)

                        # print(dst, len(line.report_list))

                        # add to move list
                        move_list.append((src, dst))

                        if 0 <= conf.num_zip_extract <= i:
                            continue

                        # add to unzip list
                        unzip_list.append(dst)

        return move_list, unzip_list
Пример #2
0
    def create_folders(self):
        """create folders for new record"""
        for record in self.data:
            if record.update_folder:  # no corresponding folder for this record, create it
                folder = record.to_folder(self.config.classified_folder)
                if not os.path.exists(folder):
                    os.mkdirs(folder)

                # write ini file for current folder
                ini = IOHelper.INI()
                ini.write(os.path.join(folder, 'error_package.ini'),
                          record.report_list)

                # move zip files to current folder
                report_list = record.report_list[0:conf.num_zip_move]
                fm = IOHelper.FileMover(self.config)
                move_list = fm.move(conf.zip_folder, folder, report_list)

                zip_list = [pair[1] for pair in move_list]
                fm.unzip_files(zip_list)

                record.update_folder = False