Browse Source

Add delete_tmp and delete_src kwargs to store_new_avatar/delete_avatar

rafalp 6 years ago
parent
commit
304fd2c3a3
2 changed files with 8 additions and 13 deletions
  1. 5 12
      misago/users/avatars/store.py
  2. 3 1
      misago/users/avatars/uploaded.py

+ 5 - 12
misago/users/avatars/store.py

@@ -16,11 +16,11 @@ def normalize_image(image):
     return image.copy().convert('RGBA')
     return image.copy().convert('RGBA')
 
 
 
 
-def delete_avatar(user):
-    if user.avatar_tmp:
+def delete_avatar(user, delete_tmp=True, delete_src=True):
+    if delete_tmp and user.avatar_tmp:
         user.avatar_tmp.delete(save=False)
         user.avatar_tmp.delete(save=False)
 
 
-    if user.avatar_src:
+    if delete_src and user.avatar_src:
         user.avatar_src.delete(save=False)
         user.avatar_src.delete(save=False)
 
 
     for avatar in user.avatar_set.all():
     for avatar in user.avatar_set.all():
@@ -50,16 +50,9 @@ def store_avatar(user, image):
     user.avatars = [{'size': a.size, 'url': a.url} for a in avatars]
     user.avatars = [{'size': a.size, 'url': a.url} for a in avatars]
     user.save(update_fields=['avatars'])
     user.save(update_fields=['avatars'])
 
 
-    # delete old user avatar images
-    new_avatars_ids = [i.id for i in avatars]
-    old_avatars_queryset = user.avatar_set.exclude(id__in=new_avatars_ids)
-    for avatar in old_avatars_queryset:
-        avatar.image.delete(save=False)
-    old_avatars_queryset.delete()
-
 
 
-def store_new_avatar(user, image):
-    delete_avatar(user)
+def store_new_avatar(user, image, delete_tmp=True, delete_src=True):
+    delete_avatar(user, delete_tmp=delete_tmp, delete_src=delete_src)
     store_avatar(user, image)
     store_avatar(user, image)
 
 
 
 

+ 3 - 1
misago/users/avatars/uploaded.py

@@ -134,9 +134,11 @@ def crop_source_image(user, source, crop):
             int(round((crop['y'] - min_size) * upscale * -1, 0)),
             int(round((crop['y'] - min_size) * upscale * -1, 0)),
         ))
         ))
 
 
-    store.store_avatar(user, cropped_image)
     if source == 'tmp':
     if source == 'tmp':
+        store.store_new_avatar(user, cropped_image, delete_tmp=False)
         store.store_original_avatar(user)
         store.store_original_avatar(user)
+    else:
+        store.store_new_avatar(user, cropped_image, delete_src=False)
 
 
     return crop
     return crop