def __init__(self, p): self._dm = XLSDataManager() self._dm.open(p)
def _load_level_from_file(self, p, positions, irradiation, level): """ use an xls file to enter irradiation positions looks for sheet named "IrradiationLoading" if not present use 0th sheet """ dm = XLSDataManager() dm.open(p) header_offset = 1 sheet = dm.get_sheet(('IrradiationLoading', 0)) idxs = self._get_idxs(dm, sheet) if not idxs: return rows = [ ri for ri in range(sheet.nrows - header_offset) if sheet.cell_value(ri + header_offset, idxs['level']) == level ] prog = self.progress if prog: prog.max = len(rows) - 1 for ri in rows: ri += header_offset project, material = None, None sample = sheet.cell_value(ri, idxs['sample']) if sample.lower() == 'monitor': sample = self.monitor_name if sample: #is this a sample in the database dbsam = self.db.get_sample(sample) if dbsam: if dbsam.project: project = dbsam.project.name if dbsam.material: material = dbsam.material.name if project is None: project = sheet.cell_value(ri, idxs['project']) if material is None: material = sheet.cell_value(ri, idxs['material']) pos = sheet.cell_value(ri, idxs['position']) weight = sheet.cell_value(ri, idxs['weight']) note = sheet.cell_value(ri, idxs['note']) if prog: prog.change_message('Importing {}'.format(pos)) prog.increment() ir_pos, canvas_pos = self._get_position(pos, positions) if ir_pos: ir_pos.trait_set( weight=weight, project=project, material=material, sample=sample, note=note, ) if sample: canvas_pos.fill = True else: msg = 'Invalid position for this tray {}'.format(ir_pos) #self.warning_dialog() self.warning(msg)
def _dm_factory(self, p): dm = XLSDataManager() dm.open(p) return dm # ============= EOF ============================================= # def get_nlevels(self, irradname): # dm =self.dm # if not dm: # raise AttributeError # # sheet = self.dm.get_sheet(('Irradiations',0)) # idx = dm.get_column_idx('Name', sheet=sheet) # lidx = dm.get_column_idx('Levels', sheet=sheet) # for ri, ni in enumerate(sheet.col(idx)): # if ni.value==irradname: # level_str = sheet.cell(ri, lidx) # ps = parse_level_str(level_str.value) # return len(ps) if ps else 0 # def iterate_irradiations2(self): # dm = self.dm # sheet = dm.get_sheet(('Irradiations', 0)) # # irrads=[] # rows = [] # for ri in dm.iterrows(sheet): # # for ji in dm.iterrows(sheet): # if ctype_text[ri[1].ctype]=='empty': # irrads.append(rows) # rows=[] # else: # rows.append(ri) # # if rows: # irrads.append(rows) # return irrads # # # def _load_level_from_file(self, p, positions, irradiation, level): # """ # use an xls file to enter irradiation positions # # looks for sheet named "IrradiationLoading" # if not present use 0th sheet # """ # # # dm = XLSDataManager() # # dm.open(p) # dm = self._dm_factory(p) # # header_offset = 1 # sheet = dm.get_sheet(('IrradiationLoading', 0)) # idxs = self._get_idxs(dm, sheet) # # if not idxs: # return # # rows = [ri for ri in range(sheet.nrows - header_offset) # if sheet.cell_value(ri + header_offset, idxs['level']) == level] # # prog = self.progress # if prog: # prog.max = len(rows) - 1 # # for ri in rows: # ri += header_offset # # project, material = None, None # sample = sheet.cell_value(ri, idxs['sample']) # if sample.lower() == 'monitor': # sample = self.monitor_name # # if sample: # #is this a sample in the database # dbsam = self.db.get_sample(sample) # if dbsam: # if dbsam.project: # project = dbsam.project.name # if dbsam.material: # material = dbsam.material.name # # if project is None: # project = sheet.cell_value(ri, idxs['project']) # if material is None: # material = sheet.cell_value(ri, idxs['material']) # # pos = sheet.cell_value(ri, idxs['position']) # # weight = sheet.cell_value(ri, idxs['weight']) # note = sheet.cell_value(ri, idxs['note']) # # if prog: # prog.change_message('Importing {}'.format(pos)) # prog.increment() # # ir_pos, canvas_pos = self._get_position(pos, positions) # if ir_pos: # ir_pos.trait_set(weight=weight, # project=project, # material=material, # sample=sample, # note=note) # if sample: # canvas_pos.fill = True # else: # msg = 'Invalid position for this tray {}'.format(ir_pos) # #self.warning_dialog() # self.warning(msg)