store.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import os
  2. from path import path
  3. from PIL import Image
  4. from misago.conf import settings
  5. from misago.users.avatars.paths import AVATARS_STORE
  6. def store_avatar(user, image):
  7. avatar_dir = get_existing_avatars_dir(user)
  8. for size in sorted(settings.MISAGO_AVATARS_SIZES, reverse=True):
  9. image = image.resize((size, size), Image.ANTIALIAS)
  10. image.save('%s/%s_%s.png' % (avatar_dir, user.pk, size), "PNG")
  11. def delete_avatar(user):
  12. avatar_dir = get_existing_avatars_dir(user)
  13. suffixes_to_delete = settings.MISAGO_AVATARS_SIZES + ('org', 'tmp')
  14. for size in suffixes_to_delete:
  15. avatar_file = path('%s/%s_%s.png' % (avatar_dir, user.pk, size))
  16. if avatar_file.exists():
  17. avatar_file.remove()
  18. def store_new_avatar(user, image):
  19. """
  20. Deletes old image before storing new one
  21. """
  22. delete_avatar(user)
  23. store_avatar(user, image)
  24. def get_existing_avatars_dir(user):
  25. date_dir = unicode(user.joined_on.strftime('%y%m'))
  26. avatars_dir = path(os.path.join(AVATARS_STORE, date_dir))
  27. if not avatars_dir.exists():
  28. avatars_dir.mkdir()
  29. return avatars_dir