import pathlib
from patch.include import *
from tqdm import tqdm
import hashlib
import os


@app_context(commit=True)
def patch():
    """
    Здесь можно работать с моделями через models.CmfTask и т.д.
    Для прогрессбара используйте:
    for task in tqdm(models.CmfTask.list()):
        ...
    """
    for person in models.CmfPerson.list(fields=['avatar_hash']):
        if person.login:
            avatar_directory = f'{config.PROJECT_DIR}/common/static/avatar/'
            m = hashlib.md5()
            m.update(person.login.value.encode('utf-8'))
            avatar_hash = m.hexdigest()
            avatar_path = pathlib.Path(f'{avatar_directory}/{avatar_hash}/avatar.jpg')

            if avatar_path.exists():
                with avatar_path.open('rb') as file:
                    image_data = file.read()
                    image_hash = f'{hashlib.md5(image_data).hexdigest()}.jpg'
                person.avatar_filename = image_hash
                image_path = person.avatar_path(image_hash)
                with image_path.open('wb') as new_file:
                    new_file.write(image_data)
                person.save()


if __name__ == "__main__":
    patch()
