from patch.include import *
from tqdm import tqdm

from sqlalchemy import update
from common.models.cmf_active_entity import CmfActiveEntity


@app_context(commit=True)
def patch():
    """
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    for model_cls in CmfActiveEntity.iter_subclasses():
        print(f'Init is_template on {model_cls.class_name}')
        dp_model = model_cls.dp_model
        model_cls.dp.data_driver.Session().execute(
            update(dp_model).where(dp_model.is_template.is_(None)).values(is_template=False))


if __name__ == "__main__":
    patch()
