Example #1
0
 def _handle_event_start(self, **kwargs):
     logger.info('Writing event_start to DB')
     _date = datetime.strptime(kwargs['call_date'], '%Y-%m-%d %H:%M:%S')
     _call_date = datetime.strptime(kwargs['handler_call_time'],
                                    '%Y-%m-%d %H:%M:%S')
     db_session.add(
         MotionEvent(text_event=kwargs['text_event'],
                     date=_date,
                     event_id=kwargs['event_id'],
                     frame_num=kwargs['frame_num'],
                     cam_num=kwargs['cam'],
                     cam_name=kwargs['cam_name'],
                     host=kwargs['host'],
                     changed_pixels=kwargs['changed_px'],
                     threshold=kwargs['threshold'],
                     despeckle_labels=kwargs['despeckle_labels'],
                     fps=kwargs['fps'],
                     noise=kwargs['noise'],
                     motion_width=kwargs['motion_width'],
                     motion_height=kwargs['motion_height'],
                     motion_center_x=kwargs['motion_center_x'],
                     motion_center_y=kwargs['motion_center_y'],
                     handler_call_start_datetime=_call_date))
     db_session.commit()
     from motion_pipeline.celerytasks.tasks import newevent_ready
     newevent_ready.delay(kwargs['text_event'])
Example #2
0
 def _handle_event_end(self, **kwargs):
     e = db_session.query(MotionEvent).get(kwargs['text_event'])
     _call_date = datetime.strptime(kwargs['handler_call_time'],
                                    '%Y-%m-%d %H:%M:%S')
     if e is None:
         logger.info(
             'Writing event_end to DB without matching started event '
             '(text_event=%s)', kwargs['text_event'])
         _date = datetime.strptime(kwargs['call_date'], '%Y-%m-%d %H:%M:%S')
         e = MotionEvent(text_event=kwargs['text_event'],
                         date=_date,
                         event_id=kwargs['event_id'],
                         frame_num=kwargs['frame_num'],
                         cam_num=kwargs['cam'],
                         cam_name=kwargs['cam_name'],
                         host=kwargs['host'],
                         changed_pixels=kwargs['changed_px'],
                         threshold=kwargs['threshold'],
                         despeckle_labels=kwargs['despeckle_labels'],
                         fps=kwargs['fps'],
                         noise=kwargs['noise'],
                         motion_width=kwargs['motion_width'],
                         motion_height=kwargs['motion_height'],
                         motion_center_x=kwargs['motion_center_x'],
                         motion_center_y=kwargs['motion_center_y'])
         db_session.add(e)
     else:
         logger.info('Writing event_end to DB for existing event %s',
                     kwargs['text_event'])
     e.is_finished = True
     e.handler_call_end_datetime = _call_date
     if kwargs.get('debug_frame_info', None) is not None:
         self._handle_debug_frame_info(kwargs['text_event'],
                                       kwargs['debug_frame_info'])
     db_session.commit()
Example #3
0
 def _handle_debug_frame_info(self, text_event, infos):
     for i in infos:
         try:
             i['text_event'] = text_event
             d = i['date']
             i['date'] = datetime.strptime(d, '%Y-%m-%d %H:%M:%S')
             db_session.add(FrameDebugInfo(**i))
         except Exception:
             logger.error('Malformed debug_frame_info entry: %s',
                          i,
                          exc_info=True)
Example #4
0
 def _get_notification_from_db(self, notification_id):
     if notification_id is not None:
         n = db_session.query(Notification).get(notification_id)
         if n is not None:
             logger.debug('Found existing Notification with ID %s', n.id)
             return n
     logger.debug('Generating new Notification in DB')
     n = Notification(video_filename=self._filename,
                      text_event=self._event_text,
                      generated_time=datetime.now(),
                      provider_name='pushover')
     db_session.add(n)
     db_session.commit()
     return n
Example #5
0
 def _handle_file_upload(self, **kwargs):
     logger.info('Writing file upload to DB for filename: %s',
                 kwargs['filename'])
     _date = datetime.strptime(kwargs['call_date'], '%Y-%m-%d %H:%M:%S')
     _call_date = datetime.strptime(kwargs['handler_call_time'],
                                    '%Y-%m-%d %H:%M:%S')
     db_session.add(
         Video(filename=os.path.basename(kwargs['filename']),
               date=_date,
               event_id=kwargs['event_id'],
               cam_num=kwargs['cam'],
               cam_name=kwargs['cam_name'],
               host=kwargs['host'],
               text_event=kwargs['text_event'],
               file_type=kwargs['filetype'],
               threshold=kwargs['threshold'],
               despeckle_labels=kwargs['despeckle_labels'],
               fps=kwargs['fps'],
               handler_call_datetime=_call_date))
     db_session.commit()
     from motion_pipeline.celerytasks.tasks import do_thumbnail
     do_thumbnail.delay(os.path.basename(kwargs['filename']))