def get_files_by_img_id(img_id, check_hash=True):
    """
    Шукає файли для img_id.
    Повертає:
    {
        'main': 'relative path to main image',
        'variants': {
            'label': 'relative path to variant image by label',
            ...
        }
    }
    Якщо check_hash=True, тоді файли з невірним хешем будуть ігноруватись.
    Якщо файл не існує, тоді поверає None.
    Пошук варіантів відбуваться в файловій системі не залежно від налаштувань.
    """
    main_rel_path = get_relative_path_from_img_id(img_id)
    main_path = media_path(main_rel_path)
    if not os.path.isfile(main_path):
        return None
    filename = os.path.basename(main_rel_path)
    name_left_part = filename.split(dju_settings.DJU_IMG_UPLOAD_MAIN_SUFFIX, 1)[0]
    img_name = name_left_part
    if img_name.startswith(dju_settings.DJU_IMG_UPLOAD_TMP_PREFIX):
        img_name = img_name[len(dju_settings.DJU_IMG_UPLOAD_TMP_PREFIX):]
    img_name_parts = img_name.split('_', 2)
    img_name = '_'.join(img_name_parts[:2])
    search_pattern = name_left_part + dju_settings.DJU_IMG_UPLOAD_VARIANT_SUFFIX + '*'
    search_dir = os.path.dirname(main_path)
    variants = {}
    for var_path in glob.iglob(os.path.join(search_dir, search_pattern.replace('\\', '/'))):
        var_filename = os.path.basename(var_path)
        m = variant_hash_label_re.match(var_filename)
        if not m:
            continue
        var_hash, var_label = m.groups()
        if check_hash and var_hash != get_hash(img_name, var_label):
            continue
        variants[var_label] = os.path.relpath(var_path, settings.MEDIA_ROOT)
    return {
        'main': main_rel_path,
        'variants': variants,
    }