def push_result(username, index_in_db, category_code, user_specify=''): """A function pushes a result to database Parameter ---------- username : str User name project_name : str Project name, database table name index_in_db : int Index of image of database category_code : list of int The category code input for the image from 1 to 13 user_specify : str, optional default '' If no Specified, user input their answer max_rate : int optional default 4 Maximum number of rated. """ index_in_db = int(index_in_db) user = u.USER(username) imc = sg2c.image_category(db, user) result = imc.user_input('sg2_image_rate', index_in_db, category_code, user_specify=user_specify) return json.dumps((str(result), str(index_in_db)))
def get_next_image_url(username, index_in_db, project_name=''): """This is a wrapper funciton for sg2 category php Parameter ---------- username : str The user name who is categorating sg2 image index_in_db : int The image index in database projcet_name : str The projcet name, which project you want to select Return ----------- JSON dump image url and image index in database """ index_in_db = int(index_in_db) user = u.USER(username) imc = sg2c.image_category(db, user, project_name) img_table = 'sg2_image_info' rate_table = 'sg2_image_rate' total_img = imc.database.get_total_num_image(img_table) if index_in_db > total_img: return json.dumps(('-1', '-1', index_in_db)) if index_in_db == 0: index_in_db = 1 under_rate_image = imc.database.get_table_element( img_table, 'image_index, project, image_ID, ' 'number_rated, max_rate', 'number_rated<max_rate AND image_index>=%d' % index_in_db) if under_rate_image == []: return json.dumps(('-1', '-1', '-1', index_in_db)) condition = ("SELECT image_index FROM %s WHERE number_rated<max_rate and" " image_index>=%d") % (img_table, index_in_db) user_rated = imc.database.get_table_element( rate_table, 'info_table_index, image_ID', "rater_name='%s' and info_table_index IN (%s)" % (username, condition)) rated = set() under_rated = set() for ur in user_rated: rated.add(ur[0]) for unimg in under_rate_image: under_rated.add(unimg[0]) usr_unrate = under_rated.symmetric_difference(rated) if list(usr_unrate) == []: return json.dumps(('-1', '-1', '-1', index_in_db)) target_index = min(list(usr_unrate)) #result_image_index = imc.database.get_table_element(img_table, 'image_index', "image_ID='%s'"%target_id)[0][0] imc.get_image_from_database(index=target_index) url = imc.current_image.image_url url_large = imc.current_image.image_url_large url_page = imc.current_image.page_url return json.dumps((url, url_large, url_page, target_index))
def get_next_image_url(username, index_in_db, project_name=''): """This is a wrapper funciton for sg2 category php Parameter ---------- username : str The user name who is categorating sg2 image index_in_db : int The image index in database projcet_name : str The projcet name, which project you want to select Return ----------- JSON dump image url and image index in database """ index_in_db = int(index_in_db) user = u.USER(username) imc = sg2c.image_category( db, user, project_name) img_table = 'sg2_image_info' rate_table = 'sg2_image_rate' total_img = imc.database.get_total_num_image(img_table) if index_in_db > total_img: return json.dumps(('-1', '-1', index_in_db)) if index_in_db == 0: index_in_db = 1 under_rate_image = imc.database.get_table_element(img_table, 'image_index, project, image_ID, ' 'number_rated, max_rate', 'number_rated<max_rate AND image_index>=%d'%index_in_db) if under_rate_image ==[]: return json.dumps(('-1', '-1', '-1',index_in_db)) condition = ("SELECT image_index FROM %s WHERE number_rated<max_rate and" " image_index>=%d")%(img_table, index_in_db) user_rated = imc.database.get_table_element(rate_table, 'info_table_index, image_ID', "rater_name='%s' and info_table_index IN (%s)"%(username, condition)) rated = set() under_rated = set() for ur in user_rated: rated.add(ur[0]) for unimg in under_rate_image: under_rated.add(unimg[0]) usr_unrate = under_rated.symmetric_difference(rated) if list(usr_unrate) == []: return json.dumps(('-1', '-1', '-1',index_in_db)) target_index = min(list(usr_unrate)) #result_image_index = imc.database.get_table_element(img_table, 'image_index', "image_ID='%s'"%target_id)[0][0] imc.get_image_from_database(index=target_index) url = imc.current_image.image_url url_large = imc.current_image.image_url_large url_page = imc.current_image.page_url return json.dumps((url, url_large, url_page, target_index))