0.5.6 documentation
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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']
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user