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
Beispiel #2
0
 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])