Exemple #1
0
 def __init__(self, p):
     self._dm = XLSDataManager()
     self._dm.open(p)
Exemple #2
0
    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)