Add file migration

This commit is contained in:
Edgar P. Burkhart 2022-12-31 17:57:54 +01:00
parent 06704aaa77
commit 2550c52a61
Signed by: edpibu
GPG key ID: 9833D3C5A25BD227
2 changed files with 64 additions and 1 deletions

View file

@ -0,0 +1,63 @@
# Generated by Django 4.1.4 on 2022-12-31 16:41
import pathlib
from django.conf import settings
from django.db import migrations
import main.models
def move_files(apps, schema_editor):
Invoice = apps.get_model("main", "Invoice")
Snapshot = apps.get_model("main", "Snapshot")
for invoice in Invoice.objects.all():
print(invoice.pk)
if invoice.file is None:
invoice.delete()
continue
try:
initial_path = pathlib.Path(invoice.file.path)
except ValueError:
invoice.delete()
continue
if invoice.file is None or not initial_path.exists():
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()
for snapshot in Snapshot.objects.filter(file__isnull=False):
print(snapshot.pk)
try:
initial_path = pathlib.Path(snapshot.file.path)
except ValueError:
snapshot.file = None
snapshot.save()
continue
if not initial_path.exists():
print(f"!!! Path {initial_path} does not exist")
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()
class Migration(migrations.Migration):
dependencies = [
("main", "0022_alter_account_icon_alter_category_icon"),
]
operations = [migrations.RunPython(move_files)]

View file

@ -34,7 +34,7 @@ class CustomModel(UserModel):
def get_path(instance, filename): def get_path(instance, filename):
return pathlib.Path( return pathlib.Path(
"user", "user",
str(instance.user.get_username()), str(instance.user.username),
instance._meta.model_name, instance._meta.model_name,
str(instance.pk), str(instance.pk),
).with_suffix(".pdf") ).with_suffix(".pdf")