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'])
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()
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)
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
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']))