Files
django-ram/ram/consist/models.py

67 lines
1.9 KiB
Python

import os
from uuid import uuid4
from django.db import models
from django.urls import reverse
from tinymce import models as tinymce
from ram.utils import DeduplicatedStorage
from metadata.models import Company, Tag
from roster.models import RollingStock
class Consist(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid4, editable=False)
identifier = models.CharField(max_length=128, unique=False)
tags = models.ManyToManyField(Tag, related_name="consist", blank=True)
consist_address = models.SmallIntegerField(
default=None, null=True, blank=True
)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
era = models.CharField(max_length=32, blank=True)
image = models.ImageField(
upload_to=os.path.join("images", "consists"),
storage=DeduplicatedStorage,
null=True,
blank=True,
)
notes = tinymce.HTMLField(blank=True)
creation_time = models.DateTimeField(auto_now_add=True)
updated_time = models.DateTimeField(auto_now=True)
def __str__(self):
return "{0} {1}".format(self.company, self.identifier)
def get_absolute_url(self):
return reverse("consist", kwargs={"uuid": self.uuid})
class Meta:
ordering = ["company", "-creation_time"]
class ConsistItem(models.Model):
consist = models.ForeignKey(
Consist, on_delete=models.CASCADE, related_name="consist_item"
)
rolling_stock = models.ForeignKey(RollingStock, on_delete=models.CASCADE)
order = models.PositiveIntegerField(default=0, blank=False, null=False)
class Meta(object):
ordering = ["order"]
def __str__(self):
return "{0}".format(self.rolling_stock)
def type(self):
return self.rolling_stock.rolling_class.type
def address(self):
return self.rolling_stock.address
def company(self):
return self.rolling_stock.company()
def era(self):
return self.rolling_stock.era