0.5.6 documentation

This commit is contained in:
SDE
2024-07-11 18:37:29 +03:00
parent 37d61847ae
commit b160fb7256
3 changed files with 48 additions and 10 deletions

View File

@@ -6,7 +6,7 @@ from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
from django.utils.translation import gettext as _
from django import forms
from django.utils.text import slugify
from django.db.models import Min
class DocArtForm(forms.ModelForm):
@@ -29,6 +29,14 @@ class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
return '-'
show_versions.short_description = _('Версии')
def get_queryset(self, request):
queryset = super().get_queryset(request)
queryset = queryset.annotate(
min_version_order=Min('versions__order'),
max_version_name=Min('versions__name'),
).order_by('min_version_order', 'max_version_name', 'order').distinct()
return queryset
fieldsets = [
(None, {
@@ -58,11 +66,15 @@ class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
list_display = [
'id', 'enable',
'name', 'url',
'show_versions', 'parent',
'show_versions',
# 'versions',
'parent',
'order', 'modifiedDT', 'createDT'
]
ordering = ['versions', 'order', 'name']
# ordering = [
# # 'versions',
# 'order', 'name']
prepopulated_fields = {"url": ("name_en",)}
@@ -86,6 +98,7 @@ class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
from BaseModels.functions import create_url
for obj in queryset:
obj.name += '-копия'
obj.parent = None
obj.url = create_url({'name': obj.name}, DocArt)
obj.pk = None
obj.save()

View File

@@ -28,6 +28,7 @@ class DocVersion(BaseModel):
class Meta:
verbose_name = _('Версия документации')
verbose_name_plural = _('Версии документации')
ordering = ['order', 'name']
class DocArt(BaseModelViewPage):
@@ -42,11 +43,33 @@ class DocArt(BaseModelViewPage):
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:
return self.name
s = self.name
else:
return str(self.id)
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 = _('Статьи документации')
verbose_name_plural = _('Статьи документации')
# ordering = ['order', 'name']

View File

@@ -11,14 +11,15 @@ from django.urls import reverse
from collections import OrderedDict
def get_tree_arts(art, arts):
def get_tree_arts(art, arts, sel_arts_ids):
docs_tree = OrderedDict()
docs_tree.update({
art_item.name: {
'url': art_item.url,
'id': art_item.id,
'children': get_tree_arts(art_item, arts),
'children': get_tree_arts(art_item, arts, sel_arts_ids),
'active': art_item.id in sel_arts_ids
} for art_item in arts.filter(parent=art)
})
return docs_tree
@@ -52,14 +53,15 @@ def DocsView(request, version=None, art_url=None):
except DocVersion.DoesNotExist:
raise Http404
active_arts, active_arts_ids = art.get_parents_path()
arts = DocArt.objects.filter(enable=True, versions=vers_obj).order_by('order')
doc_tree = get_tree_arts(None, arts)
doc_tree = get_tree_arts(None, arts, active_arts_ids)
Dict = {
'cur_article': art,
'cur_version': vers_obj,
'doc_tree': doc_tree
'doc_tree': doc_tree,
}
t = loader.get_template('pages/p_documentation.html')
return get_inter_http_respose(t, Dict, request)