def assignment_load_handler(obj_response, form_values): """ Load camera assignment from file. """ camera_assignment_old = redis_tools.get_dict(db, 'camera_assignment') mjpeg_info_dict = redis_tools.get_dict(db, 'mjpeg_info_dict') select_values = create_select_values(mjpeg_info_dict) # Load current camera assignment from file yaml_dict = file_tools.read_camera_assignment() camera_assignment_new = assignment_from_yaml_dict(yaml_dict) camera_assignment = {} for camera_id in camera_assignment_old: try: value = camera_assignment_new[camera_id] except KeyError: value = '--' if not value in select_values: value = '--' camera_assignment[camera_id] = value redis_tools.set_dict(db, 'camera_assignment', camera_assignment) set_camera_assignment(obj_response, camera_assignment, select_values) obj_response.attr('#message', 'style', 'color:black') obj_response.html('#message', 'Current camera assignment loaded') obj_response.attr('#message_table', 'style', 'display:none')
def assignment_change_handler(obj_response, form_values): """ Handles changes to the camera assignment """ camera_assignment_old = redis_tools.get_dict(db, 'camera_assignment') camera_assignment_new = json_tools.decode_dict(form_values) redis_tools.set_dict(db, 'camera_assignment', camera_assignment_new) message_str = '' for k, v in camera_assignment_new.iteritems(): if v != camera_assignment_old[k]: message_str = 'Assigned camera {0} to GUID {1}'.format(v, k) obj_response.attr('#message', 'style', 'color:black') obj_response.html('#message', message_str) obj_response.attr('#message_table', 'style', 'display:none')
def clear_form_handler(obj_response, form_values): """ Handles requests to clear form """ camera_assignment = json_tools.decode_dict(form_values) camera_assignment = dict((k, '--') for k in camera_assignment) redis_tools.set_dict(db, 'camera_assignment', camera_assignment) # Update form mjpeg_info_dict = redis_tools.get_dict(db, 'mjpeg_info_dict') select_values = create_select_values(mjpeg_info_dict) set_camera_assignment(obj_response, camera_assignment, select_values) # Update message obj_response.attr('#message', 'style', 'color:black') obj_response.html('#message', 'Camera assignment cleared') obj_response.attr('#message_table', 'style', 'display:none')
def setup_redis_db(): # Create db and add empty camera assignment db = redis.Redis('localhost',db=config.redis_db) # Add mjpeg info dictionary mjpeg_info_dict = mjpeg_servers.get_mjpeg_info_dict() redis_tools.set_dict(db,'mjpeg_info_dict', mjpeg_info_dict) # Add external network interface machine_def = mct_introspection.get_machine_def() ip_iface_ext = iface_tools.get_ip_addr(machine_def['mct_master']['iface-ext']) redis_tools.set_str(db,'ip_iface_ext',ip_iface_ext) # Add default scale for image view scale_default = config.camera_view_table['scale_default'] redis_tools.set_str(db,'scale', scale_default) return db
def setup_redis_db(): """ Sets up the redis database for the camera assignemnt application """ # Create db and add empty camera assignment db = redis.Redis('localhost', db=config.redis_db) machine_def = mct_introspection.get_machine_def() ip_iface_ext = iface_tools.get_ip_addr( machine_def['mct_master']['iface-ext']) redis_tools.set_str(db, 'ip_iface_ext', ip_iface_ext) mjpeg_info_dict = mjpeg_servers.get_mjpeg_info_dict() redis_tools.set_dict(db, 'mjpeg_info_dict', mjpeg_info_dict) camera_assignment = create_empty_assignment(mjpeg_info_dict) redis_tools.set_dict(db, 'camera_assignment', camera_assignment) return db
def test_handler(obj_response, form_values): """ Assign a test camera assignment - for development """ # Create a camera assignment camera_assignment = json_tools.decode_dict(form_values) cnt = 0 test_camera_assignment = {} for k in camera_assignment: cnt += 1 test_camera_assignment[k] = str(cnt) # Set camera assignment values mjpeg_info_dict = redis_tools.get_dict(db, 'mjpeg_info_dict') select_values = create_select_values(mjpeg_info_dict) set_camera_assignment(obj_response, test_camera_assignment, select_values) redis_tools.set_dict(db, 'camera_assignment', test_camera_assignment) obj_response.attr('#message', 'style', 'color:black') obj_response.html('#message', 'Created test assignment') obj_response.attr('#message_table', 'style', 'display:none')
def index(): if flask.g.sijax.is_sijax_request: flask.g.sijax.register_callback('assignment_change', assignment_change_handler) flask.g.sijax.register_callback('clear_form', clear_form_handler) flask.g.sijax.register_callback('assignment_save', assignment_save_handler) flask.g.sijax.register_callback('assignment_load', assignment_load_handler) flask.g.sijax.register_callback('timer_update', timer_update_handler) flask.g.sijax.register_callback('test', test_handler) return flask.g.sijax.process_request() else: # Get scale and compute image width scale, scale_options = common_args.get_scale(config, flask.request) image_width = int(config.camera_image['width'] * float(scale)) image_height = int(config.camera_image['height'] * float(scale)) camera_assignment = redis_tools.get_dict(db, 'camera_assignment') mjpeg_info_dict = redis_tools.get_dict(db, 'mjpeg_info_dict') ip_iface_ext = redis_tools.get_str(db, 'ip_iface_ext') select_values = create_select_values(mjpeg_info_dict) render_dict = { 'mjpeg_info_dict': mjpeg_info_dict, 'camera_assignment': camera_assignment, 'select_values': select_values, 'ip_iface_ext': ip_iface_ext, 'scale_options': scale_options, 'scale': scale, 'image_width': image_width, 'image_height': image_height, } redis_tools.set_dict(db, 'camera_assignment', camera_assignment) return flask.render_template('camera_assignment.html', **render_dict)
def setup_redis_db(): """ Sets up the redis database for the camera assignemnt application """ # Create db and add empty camera assignment db = redis.Redis('localhost',db=config.redis_db) mjpeg_info_dict = mjpeg_servers.get_mjpeg_info_dict() for camera, info in mjpeg_info_dict.iteritems(): info['image_topic'] = info['image_topic'].replace('image_raw','image_calibrator') redis_tools.set_dict(db,'mjpeg_info_dict', mjpeg_info_dict) machine_def = mct_introspection.get_machine_def() ip_iface_ext = iface_tools.get_ip_addr(machine_def['mct_master']['iface-ext']) redis_tools.set_str(db,'ip_iface_ext',ip_iface_ext) scale_default = config.camera_view_table['scale_default'] redis_tools.set_str(db,'scale', scale_default) target_info = file_tools.read_target_info(config.camera_calib_target_type) redis_tools.set_dict(db, 'target_info', target_info) return db
def setup_redis_db(): # Create db and add empty camera assignment db = redis.Redis('localhost', db=config.redis_db) # Add regions dictionary regions_dict = file_tools.read_tracking_2d_regions() redis_tools.set_dict(db, 'regions_dict', regions_dict) # Add extra video dictionary extra_video_dict = file_tools.read_logging_extra_video() redis_tools.set_dict(db, 'extra_video_dict', extra_video_dict) # Add mjpeg info dictionary mjpeg_info_dict = mjpeg_servers.get_mjpeg_info_dict() redis_tools.set_dict(db, 'mjpeg_info_dict', mjpeg_info_dict) # Add external network interface machine_def = mct_introspection.get_machine_def() ip_iface_ext = iface_tools.get_ip_addr( machine_def['mct_master']['iface-ext']) redis_tools.set_str(db, 'ip_iface_ext', ip_iface_ext) # Set operating mode redis_tools.set_str(db, 'current_mode', 'preview') ## Get frame rates frame_rate_dict = file_tools.read_frame_rates() redis_tools.set_dict(db, 'frame_rate_dict', frame_rate_dict) frame_rate = frame_rate_dict['tracking_2d'] # Get logging directory - add base path to directory, and create if it doesn't exist logging_params_dict = file_tools.read_logging_params() logging_params_dict['directory'] = os.path.join( os.environ['HOME'], logging_params_dict['directory']) if not os.path.exists(logging_params_dict['directory']): os.mkdir(logging_params_dict['directory']) redis_tools.set_dict(db, 'logging_params_dict', logging_params_dict) # Get lighting params mightex_params_dict = file_tools.read_mightex_params() lighting_params_dict = mightex_to_lighting_params(mightex_params_dict) redis_tools.set_dict(db, 'lighting_params_dict', lighting_params_dict) return db