コード例 #1
0
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)))
コード例 #2
0
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))
コード例 #3
0
ファイル: get_next_img_url.py プロジェクト: arcc/SG2
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))
コード例 #4
0
ファイル: push_result_2_database.py プロジェクト: arcc/SG2
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)))