Beispiel #1
0
    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])
Beispiel #2
0
  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)
Beispiel #3
0
    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.row_converters_from_ids()
            self.block_converters.append(block_converter)
Beispiel #4
0
  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])
Beispiel #5
0
  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)