def create_top_level(self): top_level_names = [] for name in self.equipment_table.header: if name in self.skip_names: continue if name in self.rename_map: name = self.rename_map[name] top_level_names.append(name) top_level_names.extend(['Backend', 'Interface']) # for ConnectionRecord's for item in sorted(top_level_names): QtWidgets.QTreeWidgetItem(self, [item])
def populate_tree(self): self.clear() self.create_top_level() for index in range(self.topLevelItemCount()): item = self.topLevelItem(index) name = item.text(0) if name == 'Manufacturer': values = {} for record in self.equipment_table.records_all: if record.manufacturer and record.manufacturer not in values: values[record.manufacturer] = [record.model] else: if record.model and record.model not in values[ record.manufacturer]: values[record.manufacturer].append(record.model) item.setText(0, name + ' ({})'.format(len(values))) for manufacturer in sorted(values): model_item = QtWidgets.QTreeWidgetItem( item, [manufacturer]) for model in sorted(values[manufacturer]): QtWidgets.QTreeWidgetItem(model_item, [model]) elif name == 'Year Calibrated': years = [] for record in self.equipment_table.records_all: year = record.date_calibrated.year if year > 1 and year not in years: years.append(year) item.setText(0, name + ' ({})'.format(len(years))) for year in sorted(years)[::-1]: QtWidgets.QTreeWidgetItem(item, [str(year)]) elif name == 'Connection': bools = {'True': 0, 'False': 0} for record in self.equipment_table.records_all: bools[str(record.connection is not None)] += 1 item.setText(0, name + ' (2)') for key in sorted(bools): QtWidgets.QTreeWidgetItem(item, [key]) elif name == 'Calibration Cycle': cycles = [] for record in self.equipment_table.records_all: if record.calibration_cycle == 0: continue if int(record.calibration_cycle ) == record.calibration_cycle: cycle = int(record.calibration_cycle) else: cycle = record.calibration_cycle if cycle not in cycles: cycles.append(cycle) item.setText(0, name + ' ({})'.format(len(cycles))) for c in sorted(cycles): QtWidgets.QTreeWidgetItem(item, [str(c)]) else: if name == 'Backend' or name == 'Interface': values = self._get_distinct_connection_records(name) else: values = self._get_distinct_equipment_records(name) item.setText(0, name + ' ({})'.format(len(values))) for value in sorted(values): QtWidgets.QTreeWidgetItem(item, [value])