diff --git a/nummi/main/migrations/0023_auto_20221231_1741.py b/nummi/main/migrations/0023_auto_20221231_1741.py index 602949d..2c4932f 100644 --- a/nummi/main/migrations/0023_auto_20221231_1741.py +++ b/nummi/main/migrations/0023_auto_20221231_1741.py @@ -13,7 +13,7 @@ def move_files(apps, schema_editor): Snapshot = apps.get_model("main", "Snapshot") for invoice in Invoice.objects.all(): - print(invoice.pk) + print(f"Invoice {invoice.pk}") if invoice.file is None: invoice.delete() continue @@ -26,15 +26,12 @@ def move_files(apps, schema_editor): print(f"!!! Path {initial_path} does not exist") invoice.delete() continue - _name = main.models.get_path(invoice, None) - new_path = pathlib.Path(settings.MEDIA_ROOT, _name) - new_path.parent.mkdir(mode=0o750, parents=True, exist_ok=True) - initial_path.rename(new_path) - invoice.file.name = str(_name) - invoice.save() + prev_file = invoice.file.path + invoice.file.save(main.models.get_path(invoice, None), invoice.file) + pathlib.Path(prev_file).unlink() for snapshot in Snapshot.objects.filter(file__isnull=False): - print(snapshot.pk) + print(f"Snapshot {snapshot.pk}") try: initial_path = pathlib.Path(snapshot.file.path) except ValueError: @@ -46,12 +43,9 @@ def move_files(apps, schema_editor): snapshot.file = None snapshot.save() continue - _name = main.models.get_path(snapshot, None) - new_path = pathlib.Path(settings.MEDIA_ROOT, _name) - new_path.parent.mkdir(mode=0o750, parents=True, exist_ok=True) - initial_path.rename(new_path) - snapshot.file.name = str(_name) - snapshot.save() + prev_file = snapshot.file.path + snapshot.file.save(main.models.get_path(snapshot, None), snapshot.file) + pathlib.Path(prev_file).unlink() class Migration(migrations.Migration): diff --git a/nummi/main/models.py b/nummi/main/models.py index 2492404..989b979 100644 --- a/nummi/main/models.py +++ b/nummi/main/models.py @@ -279,11 +279,12 @@ class Invoice(CustomModel): Transaction, on_delete=models.CASCADE, editable=False ) - def save(self): + def save(self, *args, **kwargs): if Invoice.objects.filter(id=self.id).exists(): _prever = Invoice.objects.get(id=self.id) if _prever.file and _prever.file != self.file: pathlib.Path(_prever.file.path).unlink(missing_ok=True) + super().save(*args, **kwargs) def __str__(self): if hasattr(self, "transaction"): diff --git a/nummi/main/views.py b/nummi/main/views.py index 2df7c45..d8cb5ee 100644 --- a/nummi/main/views.py +++ b/nummi/main/views.py @@ -340,7 +340,7 @@ class SearchView(TransactionListView): return super().get_context_data(**kwargs) | {"search": self.kwargs["search"]} -class MediaView(View): +class MediaView(LoginRequiredMixin, View): def get(self, request, *args, **kwargs): _username = kwargs.get("username") _path = kwargs.get("path")