def update_summary(self, batch: namedtuple): """ Add batch, then add or update summary in DB :param batch: :return: """ self.add_batch(batch) summary = Summary(batch) if summary.exists(): summary_data = summary.data() summary_info = summary.misc_data() batch_id = batch.batch_name summary_line = (self.session .query(PGSummary) .filter_by( batch_id=batch_id, date=summary_info['date'], time=summary_info['time'] ) .one_or_none()) if summary_line: for key, val in summary_data._asdict().items(): setattr(summary_line, key, val) summary_line.gate_homes = summary_info['gate_homes'] summary_line.lost_homing = summary_info['lost_homing'] else: summary_line = PGSummary( batch_id=batch_id, **summary_data._asdict(), **summary_info ) self.session.add(summary_line) self.session.flush() return summary_line
def test_summary_data_bjkl(self): test_dict = { 'inspected': 2, 'good': 1, 'good_percent': 50.0, 'fail_general': 1, 'fail_gen_percent': 50.0, 'fail_od': 0, 'fail_od_percent': 0.0, 'fail_backward': 0, 'fail_backward_percent': 0.0, 'n_a': 0, 'n_a_percent': 0.0 } test_segments = TestAid().test_segments_dict() summary = Summary(test_segments['bjkl15']) for key, value in test_dict.items(): self.assertEqual(value, getattr(summary.data(), key))