mirror of
https://github.com/daniviga/django-ram.git
synced 2025-08-04 13:17:50 +02:00
* Implement a customer manager for flatpages * Implement public manager for private objects * Add support for unpublished objects in roster and consist * Add support for unpublished objects in bookshelf * Update filtering on REST views * Use uuid in urls.py * Increment version
87 lines
2.1 KiB
Python
87 lines
2.1 KiB
Python
import os
|
|
from uuid import uuid4
|
|
|
|
from django.db import models
|
|
from django.utils.safestring import mark_safe
|
|
from tinymce import models as tinymce
|
|
|
|
from ram.utils import DeduplicatedStorage, get_image_preview
|
|
from ram.managers import PublicManager
|
|
|
|
|
|
class BaseModel(models.Model):
|
|
uuid = models.UUIDField(primary_key=True, default=uuid4, editable=False)
|
|
notes = tinymce.HTMLField(blank=True)
|
|
creation_time = models.DateTimeField(auto_now_add=True)
|
|
updated_time = models.DateTimeField(auto_now=True)
|
|
published = models.BooleanField(default=True)
|
|
|
|
class Meta:
|
|
abstract = True
|
|
|
|
objects = PublicManager()
|
|
|
|
|
|
class Document(models.Model):
|
|
description = models.CharField(max_length=128, blank=True)
|
|
file = models.FileField(
|
|
upload_to="files/",
|
|
storage=DeduplicatedStorage(),
|
|
)
|
|
private = models.BooleanField(default=False)
|
|
|
|
class Meta:
|
|
abstract = True
|
|
|
|
def __str__(self):
|
|
return "{0}".format(os.path.basename(self.file.name))
|
|
|
|
def filename(self):
|
|
return self.__str__()
|
|
|
|
def download(self):
|
|
return mark_safe(
|
|
'<a href="{0}" target="_blank">Link</a>'.format(self.file.url)
|
|
)
|
|
|
|
objects = PublicManager()
|
|
|
|
|
|
class Image(models.Model):
|
|
order = models.PositiveIntegerField(default=0, blank=False, null=False)
|
|
image = models.ImageField(
|
|
upload_to="images/",
|
|
storage=DeduplicatedStorage,
|
|
)
|
|
|
|
def image_thumbnail(self, max_size=150):
|
|
return get_image_preview(self.image.url, max_size)
|
|
|
|
image_thumbnail.short_description = "Preview"
|
|
|
|
def __str__(self):
|
|
return "{0}".format(os.path.basename(self.image.name))
|
|
|
|
class Meta:
|
|
abstract = True
|
|
ordering = ["order"]
|
|
|
|
objects = PublicManager()
|
|
|
|
|
|
class PropertyInstance(models.Model):
|
|
property = models.ForeignKey(
|
|
"metadata.Property", # To avoid circular dependencies
|
|
on_delete=models.CASCADE
|
|
)
|
|
value = models.CharField(max_length=256)
|
|
|
|
def __str__(self):
|
|
return self.property.name
|
|
|
|
class Meta:
|
|
abstract = True
|
|
verbose_name_plural = "Properties"
|
|
|
|
objects = PublicManager()
|