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_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))