Repository URL to install this package:
Version:
0.2.0a5 ▾
|
from dj_kaos.utils.models import generate_upload_path
from django.db import models
from dj_kaos.building_blocks.configs import HasDescriptionModelConfig, HasMediaModelConfig
from dj_kaos.building_blocks.models import ArchivableModel, TimestampedModel, UUIDModel, SluggedModel, NamedModel
from dj_kaos.building_blocks.querysets import ArchivableQuerySet
from .history import ProxyAwareHistoricalRecords
class BasicOntologicalObject(TimestampedModel, UUIDModel):
class Meta:
abstract = True
class OntologicalObjectQuerySet(ArchivableQuerySet):
pass
class OntologicalObject(
ArchivableModel,
BasicOntologicalObject
):
history = ProxyAwareHistoricalRecords(inherit=True)
objects = OntologicalObjectQuerySet.as_manager()
class Meta:
abstract = True
class SluggedOntologicalObject(
SluggedModel,
NamedModel,
OntologicalObject,
):
class Meta:
abstract = True
def business_object_icon_upload_to(instance, filename):
return generate_upload_path(instance, 'icon', filename)
def business_object_cover_photo_upload_to(instance, filename):
return generate_upload_path(instance, 'cover_photo', filename)
class BusinessObject(
NamedModel,
OntologicalObject
):
icon = models.ImageField(upload_to=business_object_icon_upload_to, blank=True)
cover_photo = models.ImageField(upload_to=business_object_cover_photo_upload_to, blank=True)
description = models.TextField(blank=True)
class Meta:
abstract = True
config_mixins = (
HasDescriptionModelConfig(),
HasMediaModelConfig('icon', 'cover_photo'),
)
class SluggedBusinessObject(
SluggedModel,
BusinessObject,
):
class Meta:
abstract = True
class DocumentObject(BusinessObject):
content = models.TextField(blank=True)
class Meta:
abstract = True
fields = ('content',)
fieldsets = (
("Content", {'fields': fields}),
)
class SluggedDocumentObject(
SluggedModel,
DocumentObject,
):
class Meta:
abstract = True
__all__ = (
'BasicOntologicalObject',
'OntologicalObjectQuerySet',
'OntologicalObject',
'SluggedOntologicalObject',
'BusinessObject',
'SluggedBusinessObject',
'DocumentObject',
'SluggedDocumentObject',
)