mirror of
https://github.com/daniviga/django-ram.git
synced 2025-08-04 13:17:50 +02:00
* Create a repository app for documents, first step * Step two (broken) * Complete the implementation of document repository and add invoices * Add support for invoices * Update submodules
362 lines
12 KiB
Python
362 lines
12 KiB
Python
# Generated by Django 5.1.4 on 2025-02-09 13:04
|
|
|
|
import django.db.models.deletion
|
|
import ram.utils
|
|
import tinymce.models
|
|
from django.db import migrations, models
|
|
|
|
|
|
def migrate_document(apps, schema_editor):
|
|
document = apps.get_model("metadata", "GenericDocument")
|
|
document_new = apps.get_model("repository", "GenericDocument")
|
|
for d in document.objects.all():
|
|
n = document_new.objects.create(
|
|
notes=d.notes,
|
|
description=d.description,
|
|
file=d.file,
|
|
private=d.private,
|
|
creation_time=d.creation_time,
|
|
updated_time=d.updated_time,
|
|
)
|
|
for t in d.tags.all():
|
|
n.tags.add(t)
|
|
|
|
|
|
def migrate_decoder(apps, schema_editor):
|
|
dcc_document = apps.get_model("metadata", "DecoderDocument")
|
|
dcc_document_new = apps.get_model("repository", "DecoderDocument")
|
|
for d in dcc_document.objects.all():
|
|
dcc_document_new.objects.create(
|
|
decoder=d.decoder,
|
|
description=d.description,
|
|
file=d.file,
|
|
private=d.private,
|
|
creation_time=d.creation_time,
|
|
updated_time=d.updated_time,
|
|
)
|
|
|
|
|
|
def migrate_rollingstock(apps, schema_editor):
|
|
rs_document = apps.get_model("roster", "RollingStockDocument")
|
|
rs_document_new = apps.get_model("repository", "RollingStockDocument")
|
|
for d in rs_document.objects.all():
|
|
rs_document_new.objects.create(
|
|
rolling_stock=d.rolling_stock,
|
|
description=d.description,
|
|
file=d.file,
|
|
private=d.private,
|
|
creation_time=d.creation_time,
|
|
updated_time=d.updated_time,
|
|
)
|
|
|
|
|
|
def migrate_book(apps, schema_editor):
|
|
book_document = apps.get_model("bookshelf", "BaseBookDocument")
|
|
book_document_new = apps.get_model("repository", "BaseBookDocument")
|
|
catalog_document_new = apps.get_model("repository", "CatalogDocument")
|
|
for d in book_document.objects.all():
|
|
if hasattr(d.book, "book"):
|
|
book_document_new.objects.create(
|
|
book=d.book.book,
|
|
description=d.description,
|
|
file=d.file,
|
|
private=d.private,
|
|
creation_time=d.creation_time,
|
|
updated_time=d.updated_time,
|
|
)
|
|
else:
|
|
catalog_document_new.objects.create(
|
|
catalog=d.book.catalog,
|
|
description=d.description,
|
|
file=d.file,
|
|
private=d.private,
|
|
creation_time=d.creation_time,
|
|
updated_time=d.updated_time,
|
|
)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
("bookshelf", "0022_basebook_shop"),
|
|
("metadata", "0023_shop"),
|
|
("roster", "0035_alter_rollingstock_shop"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="BaseBookDocument",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=128)),
|
|
(
|
|
"file",
|
|
models.FileField(
|
|
storage=ram.utils.DeduplicatedStorage(), upload_to="files/"
|
|
),
|
|
),
|
|
(
|
|
"private",
|
|
models.BooleanField(
|
|
default=False,
|
|
help_text="Document will be visible only to logged users",
|
|
),
|
|
),
|
|
("creation_time", models.DateTimeField(auto_now_add=True)),
|
|
("updated_time", models.DateTimeField(auto_now=True)),
|
|
(
|
|
"book",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="new_document",
|
|
to="bookshelf.basebook",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name_plural": "Documents",
|
|
"abstract": False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="BookDocument",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=128)),
|
|
(
|
|
"file",
|
|
models.FileField(
|
|
storage=ram.utils.DeduplicatedStorage(), upload_to="files/"
|
|
),
|
|
),
|
|
("creation_time", models.DateTimeField(auto_now_add=True)),
|
|
("updated_time", models.DateTimeField(auto_now=True)),
|
|
(
|
|
"private",
|
|
models.BooleanField(
|
|
default=False,
|
|
help_text="Document will be visible only to logged users",
|
|
),
|
|
),
|
|
(
|
|
"book",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="document",
|
|
to="bookshelf.book",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name_plural": "Book documents",
|
|
"constraints": [
|
|
models.UniqueConstraint(
|
|
fields=("book", "file"), name="unique_book_file"
|
|
)
|
|
],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="CatalogDocument",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=128)),
|
|
(
|
|
"file",
|
|
models.FileField(
|
|
storage=ram.utils.DeduplicatedStorage(), upload_to="files/"
|
|
),
|
|
),
|
|
("creation_time", models.DateTimeField(auto_now_add=True)),
|
|
("updated_time", models.DateTimeField(auto_now=True)),
|
|
(
|
|
"private",
|
|
models.BooleanField(
|
|
default=False,
|
|
help_text="Document will be visible only to logged users",
|
|
),
|
|
),
|
|
(
|
|
"catalog",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="document",
|
|
to="bookshelf.catalog",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name_plural": "Catalog documents",
|
|
"constraints": [
|
|
models.UniqueConstraint(
|
|
fields=("catalog", "file"), name="unique_catalog_file"
|
|
)
|
|
],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="GenericDocument",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=128)),
|
|
(
|
|
"file",
|
|
models.FileField(
|
|
storage=ram.utils.DeduplicatedStorage(), upload_to="files/"
|
|
),
|
|
),
|
|
(
|
|
"private",
|
|
models.BooleanField(
|
|
default=False,
|
|
help_text="Document will be visible only to logged users",
|
|
),
|
|
),
|
|
("creation_time", models.DateTimeField(auto_now_add=True)),
|
|
("updated_time", models.DateTimeField(auto_now=True)),
|
|
("notes", tinymce.models.HTMLField(blank=True)),
|
|
(
|
|
"tags",
|
|
models.ManyToManyField(
|
|
blank=True, related_name="new_document", to="metadata.tag"
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name_plural": "Generic Documents",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="RollingStockDocument",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=128)),
|
|
(
|
|
"file",
|
|
models.FileField(
|
|
storage=ram.utils.DeduplicatedStorage(), upload_to="files/"
|
|
),
|
|
),
|
|
(
|
|
"private",
|
|
models.BooleanField(
|
|
default=False,
|
|
help_text="Document will be visible only to logged users",
|
|
),
|
|
),
|
|
("creation_time", models.DateTimeField(auto_now_add=True)),
|
|
("updated_time", models.DateTimeField(auto_now=True)),
|
|
(
|
|
"rolling_stock",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="new_document",
|
|
to="roster.rollingstock",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name_plural": "Documents",
|
|
"abstract": False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="DecoderDocument",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("description", models.CharField(blank=True, max_length=128)),
|
|
(
|
|
"file",
|
|
models.FileField(
|
|
storage=ram.utils.DeduplicatedStorage(), upload_to="files/"
|
|
),
|
|
),
|
|
(
|
|
"private",
|
|
models.BooleanField(
|
|
default=False,
|
|
help_text="Document will be visible only to logged users",
|
|
),
|
|
),
|
|
("creation_time", models.DateTimeField(auto_now_add=True)),
|
|
("updated_time", models.DateTimeField(auto_now=True)),
|
|
(
|
|
"decoder",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="new_document",
|
|
to="metadata.decoder",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name_plural": "Documents",
|
|
"abstract": False,
|
|
},
|
|
),
|
|
migrations.RunPython(
|
|
migrate_document,
|
|
reverse_code=migrations.RunPython.noop
|
|
),
|
|
migrations.RunPython(
|
|
migrate_decoder,
|
|
reverse_code=migrations.RunPython.noop
|
|
),
|
|
migrations.RunPython(
|
|
migrate_rollingstock,
|
|
reverse_code=migrations.RunPython.noop
|
|
),
|
|
migrations.RunPython(
|
|
migrate_book,
|
|
reverse_code=migrations.RunPython.noop
|
|
),
|
|
]
|