Example #1
0
    def iter_import_from_settings(self, settings, plates_restriction=None, scan_plates=None):
        settings.set_section(SECTION_NAME_GENERAL)

        for info in self.iter_check_plates(settings, plates_restriction):
            plate_id, path_plate_in, path_plate_out, filename = info

            # check whether this plate has to be rescanned
            if not scan_plates is None:
                scan_plate = scan_plates[plate_id]
            else:
                scan_plate = False

            # if no structure file was found scan the plate
            if filename is None:
                scan_plate = True

            # (re)scan the file structure
            if scan_plate:
                config_parser = CecogEnvironment.naming_schema
                section_name = settings.get2('namingscheme')
                importer = IniFileImporter()
                importer.setup(path_plate_in, config_parser, section_name)
                importer.scan()

                if importer.is_valid:
                    filename = self._get_structure_filename(settings, plate_id,
                                                            path_plate_in,
                                                            path_plate_out)

                    # make missing plate directories
                    if not os.path.isdir(path_plate_out):
                        os.mkdir(path_plate_out)

                    importer.save_xml(filename)
                    self.register_plate(plate_id, path_plate_in,
                                        path_plate_out, filename)
            else:
                self.register_plate(plate_id, path_plate_in,
                                    path_plate_out, filename)

            yield info