1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from django.db.models.signals import pre_delete, pre_save
- from django.dispatch import receiver
- from .models import BottomBar, Setting
- import os
-
-
- @receiver(pre_delete, sender=BottomBar)
- def bottombar_auto_delete_file_on_delete(instance: BottomBar, **kwargs):
- """
- Deletes file from filesystem
- when corresponding `BottomBar` object is deleted.
- """
- if instance.icon:
- if os.path.isfile(instance.icon.path):
- os.remove(instance.icon.path)
-
-
- @receiver(pre_save, sender=BottomBar)
- def bottombar_auto_delete_file_on_change(instance: BottomBar, **kwargs):
- """
- Deletes old file from filesystem
- when corresponding `icon` object is updated
- with new file.
- """
- if not instance.pk:
- return False
-
- try:
- old_file = BottomBar.objects.get(pk=instance.pk).icon
- except BottomBar.DoesNotExist:
- return False
-
- new_file = instance.icon
- if not old_file == new_file:
- if os.path.isfile(old_file.path):
- os.remove(old_file.path)
-
-
- @receiver(pre_delete, sender=Setting)
- def setting_auto_delete_file_on_delete(instance: Setting, **kwargs):
- """
- Deletes file from filesystem
- when corresponding `Settings` object is deleted.
- """
- if instance.page_image.path.endswith(instance.page_image.field.default):
- return False
-
- if instance.page_image:
- if os.path.isfile(instance.page_image.path):
- os.remove(instance.page_image.path)
-
-
- @receiver(pre_save, sender=Setting)
- def setting_auto_delete_file_on_change(instance: Setting, **kwargs):
- """
- Deletes old file from filesystem
- when corresponding `page_image` object is updated
- with new file.
- """
- if not instance.pk:
- return False
-
- try:
- old_file = Setting.objects.get(pk=instance.pk).page_image
- except Setting.DoesNotExist:
- return False
-
- if old_file.path.endswith(instance.page_image.field.default):
- return False
-
- new_file = instance.page_image
- if not old_file == new_file:
- if os.path.isfile(old_file.path):
- os.remove(old_file.path)
|