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_misc_data_bjkl(self): test_segments = TestAid().test_segments_dict() summary = Summary(test_segments['bjkl15']) test_dict = { 'date': datetime(year=2016, month=7, day=15), 'time': time(hour=13, minute=17), 'lost_homing': 0, 'gate_homes': 0, } for key, value in test_dict.items(): self.assertEqual(value, summary.misc_data()[key])