def create_obom_from_listing(component_list, head): obom_descriptor = OutputElnBomDescriptor(head, None, head, None) obom = OutputBom(obom_descriptor) for line in component_list: device, value, footprint = parse_ident(line['ident']) from tendril.boms.electronics import EntityElnComp item = EntityElnComp() item.define('Undef', device, value, footprint) if device and fpiswire(device): length = Length(line['qty']) if length > 0: wireitem = EntityElnComp() wireitem.define( 'Undef', device, value, str(length) ) obom.insert_component(wireitem) else: num = int(line['qty']) if num > 0: for i in range(num): obom.insert_component(item) return obom
def load_cobom_from_file(f, name, tf=None, verbose=True, generic=False): bomlist = [] header = [] reader = csv.reader(f) for line in reader: line = [elem.strip() for elem in line] if line[0] == 'device': header = line break if verbose: logger.info('Inserting External Boms') oboms = [] for head in header[1:-1]: if verbose: logger.info('Creating Bom : ' + head) obom_descriptor = OutputElnBomDescriptor(head, None, head, None) obom = OutputBom(obom_descriptor) oboms.append(obom) for line in reader: line = [elem.strip() for elem in line] if line[0] == '': continue if line[0] == 'END': break if tf and not tf.has_contextual_repr(line[0]): logger.warn('{0} Possibly not recognized'.format(line[0])) if tf: device, value, footprint = parse_ident( tf.get_canonical_repr(line[0]), generic=generic ) else: device, value, footprint = parse_ident(line[0], generic=generic) logger.debug("Trying to insert line : " + line[0]) # print base_tf.get_canonical_repr(line[0]) from tendril.boms.electronics import EntityElnComp item = EntityElnComp() item.define('Undef', device, value, footprint) for idx, col in enumerate(line[1:-1]): if col != '': if device and fpiswire(device): length = Length(col) if length > 0: wireitem = EntityElnComp() wireitem.define( 'Undef', device, value, str(length) ) oboms[idx].insert_component(wireitem) else: num = int(col) if num > 0: for i in range(num): oboms[idx].insert_component(item) for obom in oboms: if verbose: logger.info('Inserting External Bom : ' + obom.descriptor.configname) bomlist.append(obom) cobom = CompositeOutputBom( bomlist, name=name ) return cobom