from patch.include import *
from tqdm import tqdm


@app_context(commit=True)
def patch():
    """
    Для тестирования патча: ( cd /opt/crm; python3 -m patch.20220XXXXXXX_PATCHNAME )
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    # compat fix
    if getattr(config, 'SESSION_CRYPT_KEY', None):
        config.EVA_INSTANCE_KEY = config.SESSION_CRYPT_KEY

    field_names = ['ext_password', 'password', 'ext_token', 'ext_secret', 'ext_key']
    for plugin in tqdm(models.CmfPlugin.list(fields=field_names)):
        for field_name in field_names:
            if getattr(plugin, field_name):
                try:
                    setattr(plugin, field_name, getattr(plugin, field_name).value)
                except:
                    print(f'Не удалось конвертировать пароль у плагина {plugin}: {field_name}')


if __name__ == "__main__":
    patch()
