cache.py 1.1 KB

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