def initialize_block_converters(self): """ Initialize block converters. Prepare BlockConverters and order them like specified in self.CLASS_ORDER. """ offsets, data_blocks = split_array(self.csv_data) for offset, data in zip(offsets, data_blocks): if len(data) < 2: continue # empty block class_name = data[1][0].strip().lower() object_class = self.exportable.get(class_name) raw_headers, rows = extract_relevant_data(data) block_converter = BlockConverter(self, object_class=object_class, rows=rows, raw_headers=raw_headers, offset=offset, class_name=class_name) block_converter.check_block_restrictions() self.block_converters.append(block_converter) order = defaultdict(int) order.update({c: i for i, c in enumerate(self.CLASS_ORDER)}) order["Person"] = -1 self.block_converters.sort(key=lambda x: order[x.name])
def block_converters_from_ids(self): """ fill the block_converters class variable Generate block converters from a list of tuples with an object name and ids """ object_map = {o.__name__: o for o in self.exportable.values()} for object_data in self.ids_by_type: class_name = object_data["object_name"] object_class = object_map[class_name] object_ids = object_data.get("ids", []) fields = object_data.get("fields") block_converter = BlockConverter(self, object_class=object_class, fields=fields, object_ids=object_ids, class_name=class_name) block_converter.check_block_restrictions() block_converter.row_converters_from_ids() self.block_converters.append(block_converter)
def block_converters_from_csv(self): """Prepare BlockConverters and order them like specified in self.CLASS_ORDER. """ offsets, data_blocks = split_array(self.csv_data) for offset, data in zip(offsets, data_blocks): if len(data) < 2: continue # empty block class_name = data[1][0].strip().lower() object_class = self.exportable.get(class_name) raw_headers, rows = extract_relevant_data(data) block_converter = BlockConverter(self, object_class=object_class, rows=rows, raw_headers=raw_headers, offset=offset, class_name=class_name) block_converter.check_block_restrictions() self.block_converters.append(block_converter) order = defaultdict(int) order.update({c: i for i, c in enumerate(self.CLASS_ORDER)}) order["Person"] = -1 self.block_converters.sort(key=lambda x: order[x.name])
def block_converters_from_ids(self): """Generate block converters. Generate block converters from a list of tuples with an object name and ids and store it to an instance variable. """ object_map = {o.__name__: o for o in self.exportable.values()} for object_data in self.ids_by_type: class_name = object_data["object_name"] object_class = object_map[class_name] object_ids = object_data.get("ids", []) fields = object_data.get("fields") if class_name == "Snapshot": self.block_converters.append( SnapshotBlockConverter(self, object_ids, fields=fields)) else: block_converter = BlockConverter(self, object_class=object_class, fields=fields, object_ids=object_ids, class_name=class_name) block_converter.check_block_restrictions() self.block_converters.append(block_converter)