mirror of
https://github.com/daniviga/django-ram.git
synced 2025-08-04 05:07:50 +02:00
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
from django.db import models
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.contrib.contenttypes import fields
|
|
|
|
from tinymce import models as tinymce
|
|
|
|
from ram.models import Document
|
|
from metadata.models import Decoder, Tag
|
|
from roster.models import RollingStock
|
|
from bookshelf.models import BaseBook
|
|
|
|
|
|
class GenericDocument(Document):
|
|
notes = tinymce.HTMLField(blank=True)
|
|
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="document"
|
|
)
|
|
|
|
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="document"
|
|
)
|
|
|
|
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="document"
|
|
)
|
|
|
|
class Meta:
|
|
constraints = [
|
|
models.UniqueConstraint(
|
|
fields=["rolling_stock", "file"],
|
|
name="unique_stock_file"
|
|
)
|
|
]
|