Step two (broken)

This commit is contained in:
2025-02-09 15:31:03 +01:00
parent 83b80cd7b0
commit 81d251e310
12 changed files with 256 additions and 86 deletions

View File

@@ -1,7 +1,12 @@
from django.contrib import admin
from ram.admin import publish, unpublish
from repository.models import GenericDocument, RollingStockDocument
from repository.models import (
GenericDocument,
BaseBookDocument,
DecoderDocument,
RollingStockDocument
)
@admin.register(GenericDocument)
@@ -49,6 +54,76 @@ class GenericDocumentAdmin(admin.ModelAdmin):
actions = [publish, unpublish]
# @admin.register(BaseBookDocument)
# class BookDocumentAdmin(admin.ModelAdmin):
# readonly_fields = ("size",)
# list_display = (
# "__str__",
# # FIXME
# "book__book",
# "book__catalog",
# "description",
# "private",
# "size",
# "download",
# )
# search_fields = (
# "book__title",
# "description",
# "file",
# )
# fieldsets = (
# (
# None,
# {
# "fields": (
# "private",
# # FIXME
# "description",
# "file",
# "size",
# )
# },
# ),
# )
# actions = [publish, unpublish]
@admin.register(DecoderDocument)
class DecoderDocumentAdmin(admin.ModelAdmin):
readonly_fields = ("size",)
list_display = (
"__str__",
"decoder",
"description",
"private",
"size",
"download",
)
search_fields = (
"decoder__name",
"decoder__manufacturer__name",
"description",
"file",
)
autocomplete_fields = ("decoder",)
fieldsets = (
(
None,
{
"fields": (
"private",
"decoder",
"description",
"file",
"size",
)
},
),
)
actions = [publish, unpublish]
@admin.register(RollingStockDocument)
class RollingStockDocumentAdmin(admin.ModelAdmin):
readonly_fields = ("size",)
@@ -81,3 +156,4 @@ class RollingStockDocumentAdmin(admin.ModelAdmin):
},
),
)
actions = [publish, unpublish]

View File

@@ -0,0 +1,80 @@
# Generated by Django 5.1.4 on 2025-02-09 13:48
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("bookshelf", "0023_delete_basebookdocument"),
(
"metadata",
"0024_remove_genericdocument_tags_delete_decoderdocument_and_more",
),
("repository", "0001_initial"),
("roster", "0036_delete_rollingstockdocument"),
]
operations = [
migrations.AlterModelOptions(
name="decoderdocument",
options={},
),
migrations.AlterModelOptions(
name="rollingstockdocument",
options={},
),
migrations.AlterField(
model_name="basebookdocument",
name="book",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="document",
to="bookshelf.basebook",
),
),
migrations.AlterField(
model_name="decoderdocument",
name="decoder",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="document",
to="metadata.decoder",
),
),
migrations.AlterField(
model_name="genericdocument",
name="tags",
field=models.ManyToManyField(
blank=True, related_name="document", to="metadata.tag"
),
),
migrations.AlterField(
model_name="rollingstockdocument",
name="rolling_stock",
field=models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="document",
to="roster.rollingstock",
),
),
migrations.AddConstraint(
model_name="basebookdocument",
constraint=models.UniqueConstraint(
fields=("book", "file"), name="unique_book_file"
),
),
migrations.AddConstraint(
model_name="decoderdocument",
constraint=models.UniqueConstraint(
fields=("decoder", "file"), name="unique_decoder_file"
),
),
migrations.AddConstraint(
model_name="rollingstockdocument",
constraint=models.UniqueConstraint(
fields=("rolling_stock", "file"), name="unique_stock_file"
),
),
]

View File

@@ -1,4 +1,6 @@
from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import fields
from tinymce import models as tinymce
@@ -10,50 +12,56 @@ from bookshelf.models import BaseBook
class GenericDocument(Document):
notes = tinymce.HTMLField(blank=True)
tags = models.ManyToManyField(Tag, blank=True, related_name="new_document")
tags = models.ManyToManyField(Tag, blank=True, related_name="document")
class Meta:
verbose_name_plural = "Generic Documents"
class InvoiceDocument(Document):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = fields.GenericForeignKey("content_type", "object_id")
class DecoderDocument(Document):
decoder = models.ForeignKey(
Decoder, on_delete=models.CASCADE, related_name="new_document"
Decoder, on_delete=models.CASCADE, related_name="document"
)
# class Meta:
# constraints = [
# models.UniqueConstraint(
# fields=["decoder", "file"],
# name="unique_decoder_file"
# )
# ]
class Meta:
constraints = [
models.UniqueConstraint(
fields=["decoder", "file"],
name="unique_decoder_file"
)
]
class BaseBookDocument(Document):
book = models.ForeignKey(
BaseBook, on_delete=models.CASCADE, related_name="new_document"
BaseBook, on_delete=models.CASCADE, related_name="document"
)
# class Meta:
# verbose_name_plural = "Documents"
# constraints = [
# models.UniqueConstraint(
# fields=["book", "file"],
# name="unique_book_file"
# )
# ]
class Meta:
verbose_name_plural = "Documents"
constraints = [
models.UniqueConstraint(
fields=["book", "file"],
name="unique_book_file"
)
]
class RollingStockDocument(Document):
rolling_stock = models.ForeignKey(
RollingStock, on_delete=models.CASCADE, related_name="new_document"
RollingStock, on_delete=models.CASCADE, related_name="document"
)
# class Meta:
# constraints = [
# models.UniqueConstraint(
# fields=["rolling_stock", "file"],
# name="unique_stock_file"
# )
# ]
class Meta:
constraints = [
models.UniqueConstraint(
fields=["rolling_stock", "file"],
name="unique_stock_file"
)
]