def remake_images_variants(profiles, clear=True):
assert isinstance(profiles, (list, tuple)) or profiles is None<EOL>if profiles is None:<EOL><INDENT>profiles = dju_settings.DJU_IMG_UPLOAD_PROFILES.keys()<EOL><DEDENT>profiles = set(('<STR_LIT:default>',) + tuple(profiles))<EOL>removed = remade = <NUM_LIT:0><EOL>for profile in profiles:<EOL><INDENT>conf = get_profile_configs(profile=profile)<EOL>root_path = os.path.join(settings.MEDIA_ROOT, dju_settings.DJU_IMG_UPLOAD_SUBDIR, conf['<STR_LIT>'])<EOL>if clear:<EOL><INDENT>for fn in get_files_recursive(root_path):<EOL><INDENT>if dju_settings.DJU_IMG_UPLOAD_VARIANT_SUFFIX in os.path.basename(fn):<EOL><INDENT>os.remove(fn)<EOL>removed += <NUM_LIT:1><EOL><DEDENT><DEDENT><DEDENT>for fn in get_files_recursive(root_path):<EOL><INDENT>filename = os.path.basename(fn)<EOL>if dju_settings.DJU_IMG_UPLOAD_VARIANT_SUFFIX in filename:<EOL><INDENT>continue<EOL><DEDENT>if dju_settings.DJU_IMG_UPLOAD_MAIN_SUFFIX not in filename:<EOL><INDENT>continue<EOL><DEDENT>img_id = '<STR_LIT>'.format(<EOL>profile=profile,<EOL>name=filename[:filename.find(dju_settings.DJU_IMG_UPLOAD_MAIN_SUFFIX)]<EOL>)<EOL>with open(fn, '<STR_LIT:rb>') as f:<EOL><INDENT>for v_conf in conf['<STR_LIT>']:<EOL><INDENT>label = v_conf['<STR_LIT>']<EOL>if not label:<EOL><INDENT>label = get_variant_label(v_conf)<EOL><DEDENT>v_f = adjust_image(f, max_size=v_conf['<STR_LIT>'], new_format=v_conf['<STR_LIT>'],<EOL>jpeg_quality=v_conf['<STR_LIT>'], fill=v_conf['<STR_LIT>'],<EOL>stretch=v_conf['<STR_LIT>'], return_new_image=True)<EOL>v_relative_path = get_relative_path_from_img_id(img_id, variant_label=label,<EOL>ext=image_get_format(v_f))<EOL>v_full_path = media_path(v_relative_path)<EOL>save_file(v_f, v_full_path)<EOL>remade += <NUM_LIT:1><EOL><DEDENT><DEDENT><DEDENT><DEDENT>return removed, remade<EOL>
Перестворює варіанти для картинок згідно налаштувань.
profiles - список профілів, для картинок яких треба перестворити варіанти.
clear - якщо True, тоді перед створенням варіантів будуть видалені ВСІ попередні варіанти.