inventory/inventory/models/box.py

36 lines
1.2 KiB
Python

from django.urls import reverse
from django.utils.text import slugify
from django.template.loader import get_template, TemplateDoesNotExist
from django.db import models
from .container import CanBeContained, Container
class Box(CanBeContained, Container):
name = models.CharField(max_length=255, unique=True)
description = models.CharField(max_length=4096)
tags = models.ManyToManyField('inventory.Tag', blank=True)
created_at = models.DateTimeField(auto_now_add=True)
changed_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name_plural = 'Boxes'
@property
def template_name(self):
if self.layout.template_name:
template = 'inventory/box-' + self.layout.template_name + '.html'
else:
template = 'inventory/box-' + slugify(self.layout.name) + '.html'
try:
get_template(template)
return template
except TemplateDoesNotExist:
return 'inventory/box-generic.html'
@property
def url(self):
return reverse("box-detail", args=[self.pk])
class Meta:
ordering = ("name", )