def db_column_hook(module, param_name, value, yaml_filename): from sqlalchemy import select mo = __db_column_pattern.match(param_name) if mo is not None: try: name = mo.group('name') engine = DBConnection().engine images_table = DBConnection().images_table result = engine.execute(select([images_table.c[value]]).distinct()) fields = [field[0] for field in result] utils.set_parameter_kwargs(__name__, '{}_filter'.format(name), items=fields) utils.set_parameter_value(__name__, '{}_filter'.format(name), fields) except utils.ParameterException: return value return value
def reload_db_schema(): print 'Loading database schemas' images_table = DBConnection().images_table objects_table = DBConnection().objects_table for param_name in ('images_db_columns', 'image_files_db_columns', 'image_id_db_column', 'position_db_column', 'plate_db_column', 'replicate_db_column', 'well_db_column', 'treatment_db_column'): utils.set_parameter_kwargs(__name__, param_name, items=images_table.c.keys()) utils.set_parameter_visible(__name__, param_name) for param_name in ('objects_db_columns', 'object_img_id_db_column', 'position_x_db_column', 'position_y_db_column'): utils.set_parameter_kwargs(__name__, param_name, items=objects_table.c.keys()) utils.set_parameter_visible(__name__, param_name) utils.invalidate_module(__name__) msg = 'Finished retrieving database schema' print msg return msg