diff --git a/django_lostplaces/lostplaces/models/models.py b/django_lostplaces/lostplaces/models/models.py index 1f163ca..55c4844 100644 --- a/django_lostplaces/lostplaces/models/models.py +++ b/django_lostplaces/lostplaces/models/models.py @@ -11,7 +11,7 @@ import uuid from django.db import models from django.contrib.auth.models import User -from django.db.models.signals import post_save +from django.db.models.signals import post_save, pre_save from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ @@ -75,6 +75,25 @@ def create_user_profile(sender, instance, created, **kwargs): def save_user_profile(sender, instance, **kwargs): instance.explorer.save() +@receiver(pre_save, sender=Explorer) +def auto_delete_file_on_change(sender, instance, **kwargs): + """ + Deletes old file from filesystem + when corresponding `Explorer` object is updated + with new file. + """ + if not instance.pk: + return False + + try: + old_file = Explorer.objects.get(pk=instance.pk).profile_image + except Explorer.DoesNotExist: + return False + print("Deleting:", old_file) + new_file = instance.profile_image + if not old_file == new_file: + old_file.delete(save=False) + class Voucher(Expireable): """ Vouchers are authorization tokens to allow the registration of new users. diff --git a/django_lostplaces/lostplaces/models/place.py b/django_lostplaces/lostplaces/models/place.py index 8fc6790..a0d1b99 100644 --- a/django_lostplaces/lostplaces/models/place.py +++ b/django_lostplaces/lostplaces/models/place.py @@ -72,7 +72,7 @@ class PlaceAsset(Submittable): null=True ) -class PlaceImage (PlaceAsset): +class PlaceImage(PlaceAsset): """ PlaceImage defines an image file object that points to a file in uploads/. Intermediate image sizes are generated as defined in THUMBNAIL_ALIASES. @@ -104,7 +104,6 @@ class PlaceImage (PlaceAsset): return 'Image ' + str(self.pk) - # These two auto-delete files from filesystem when they are unneeded: @receiver(post_delete, sender=PlaceImage) @@ -118,7 +117,6 @@ def auto_delete_file_on_delete(sender, instance, **kwargs): thumbmanager = get_thumbnailer(instance.filename) thumbmanager.delete(save=False) - @receiver(pre_save, sender=PlaceImage) def auto_delete_file_on_change(sender, instance, **kwargs): """ @@ -137,5 +135,4 @@ def auto_delete_file_on_change(sender, instance, **kwargs): # No need to delete thumbnails, as they will be overwritten on regeneration. new_file = instance.filename if not old_file == new_file: - if os.path.isfile(old_file.path): - os.remove(old_file.path) + old_file.delete(save=False) diff --git a/django_lostplaces/lostplaces/views/explorer_views.py b/django_lostplaces/lostplaces/views/explorer_views.py index 9d9ca3d..4330450 100644 --- a/django_lostplaces/lostplaces/views/explorer_views.py +++ b/django_lostplaces/lostplaces/views/explorer_views.py @@ -56,6 +56,7 @@ class ExplorerProfileUpdateView(IsAuthenticatedMixin, View): return render(request, 'explorer/profile_update.html', context) def post(self, request, *args, **kwargs): + print(request.POST) explorer_user_change_form = ExplorerUserChangeForm( request.POST, instance=request.user @@ -70,6 +71,8 @@ class ExplorerProfileUpdateView(IsAuthenticatedMixin, View): explorer_user_change_form.save() explorer_change_form.save() + print(explorer_change_form.cleaned_data) + messages.success( self.request, _('Successfully updated Explorer profile')