Files
Aerbim/DocsApp/models.py
2024-07-11 18:37:29 +03:00

75 lines
2.4 KiB
Python

from django.db import models
from BaseModels.base_models import BaseModelViewPage, BaseModel
from ckeditor_uploader.fields import RichTextUploadingField
from django.utils.translation import gettext_lazy as _
class DocVersion(BaseModel):
url = models.TextField(
verbose_name=_('URL привязанной страницы'), unique=True,
help_text=_('можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)')
)
def get_article(self, art_url=None):
art = None
if art_url:
try:
art = self.rel_docArts_for_version.get(enable=True, url=art_url)
except DocArt.DoesNotExist:
art = None
if not art:
art = self.rel_docArts_for_version.filter(
enable=True, parent=None
).order_by('order').first()
return art
class Meta:
verbose_name = _('Версия документации')
verbose_name_plural = _('Версии документации')
ordering = ['order', 'name']
class DocArt(BaseModelViewPage):
parent = models.ForeignKey(
'DocArt', verbose_name=_('Родитель'),
null=True, blank=True,
on_delete=models.SET_NULL,
related_name='rel_childArts_for_docArt'
)
versions = models.ManyToManyField(
DocVersion, verbose_name=_('Подключенные версии'), blank=True,
related_name='rel_docArts_for_version'
)
def get_parents_path(self, version_obj=None):
res = []
res_ids = []
res.append(self)
res_ids.append(self.id)
obj = self
while obj.parent:
res.insert(0, obj.parent)
res_ids.insert(0, obj.parent.id)
obj = obj.parent
return res, res_ids
def __str__(self):
if self.name:
s = self.name
else:
s = str(self.id)
if self.versions.count():
s += ' - v' + str(' - '.join(item.name for item in self.versions.filter(enable=True)))
return s
class Meta:
verbose_name = _('Статья документации')
verbose_name_plural = _('Статьи документации')
# ordering = ['order', 'name']