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.utils.translation import gettext as _
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
from django.db.models import Min
|
||||||
|
|
||||||
|
|
||||||
class DocArtForm(forms.ModelForm):
|
class DocArtForm(forms.ModelForm):
|
||||||
@@ -29,6 +29,14 @@ class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
|
|||||||
return '-'
|
return '-'
|
||||||
show_versions.short_description = _('Версии')
|
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 = [
|
fieldsets = [
|
||||||
(None, {
|
(None, {
|
||||||
@@ -58,11 +66,15 @@ class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
|
|||||||
list_display = [
|
list_display = [
|
||||||
'id', 'enable',
|
'id', 'enable',
|
||||||
'name', 'url',
|
'name', 'url',
|
||||||
'show_versions', 'parent',
|
'show_versions',
|
||||||
|
# 'versions',
|
||||||
|
'parent',
|
||||||
'order', 'modifiedDT', 'createDT'
|
'order', 'modifiedDT', 'createDT'
|
||||||
]
|
]
|
||||||
|
|
||||||
ordering = ['versions', 'order', 'name']
|
# ordering = [
|
||||||
|
# # 'versions',
|
||||||
|
# 'order', 'name']
|
||||||
|
|
||||||
prepopulated_fields = {"url": ("name_en",)}
|
prepopulated_fields = {"url": ("name_en",)}
|
||||||
|
|
||||||
@@ -86,6 +98,7 @@ class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
|
|||||||
from BaseModels.functions import create_url
|
from BaseModels.functions import create_url
|
||||||
for obj in queryset:
|
for obj in queryset:
|
||||||
obj.name += '-копия'
|
obj.name += '-копия'
|
||||||
|
obj.parent = None
|
||||||
obj.url = create_url({'name': obj.name}, DocArt)
|
obj.url = create_url({'name': obj.name}, DocArt)
|
||||||
obj.pk = None
|
obj.pk = None
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class DocVersion(BaseModel):
|
|||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Версия документации')
|
verbose_name = _('Версия документации')
|
||||||
verbose_name_plural = _('Версии документации')
|
verbose_name_plural = _('Версии документации')
|
||||||
|
ordering = ['order', 'name']
|
||||||
|
|
||||||
|
|
||||||
class DocArt(BaseModelViewPage):
|
class DocArt(BaseModelViewPage):
|
||||||
@@ -42,11 +43,33 @@ class DocArt(BaseModelViewPage):
|
|||||||
related_name='rel_docArts_for_version'
|
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):
|
def __str__(self):
|
||||||
if self.name:
|
if self.name:
|
||||||
return self.name
|
s = self.name
|
||||||
else:
|
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:
|
class Meta:
|
||||||
verbose_name = _('Статья документации')
|
verbose_name = _('Статья документации')
|
||||||
verbose_name_plural = _('Статьи документации')
|
verbose_name_plural = _('Статьи документации')
|
||||||
|
# ordering = ['order', 'name']
|
||||||
@@ -11,14 +11,15 @@ from django.urls import reverse
|
|||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
|
|
||||||
def get_tree_arts(art, arts):
|
def get_tree_arts(art, arts, sel_arts_ids):
|
||||||
|
|
||||||
docs_tree = OrderedDict()
|
docs_tree = OrderedDict()
|
||||||
docs_tree.update({
|
docs_tree.update({
|
||||||
art_item.name: {
|
art_item.name: {
|
||||||
'url': art_item.url,
|
'url': art_item.url,
|
||||||
'id': art_item.id,
|
'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)
|
} for art_item in arts.filter(parent=art)
|
||||||
})
|
})
|
||||||
return docs_tree
|
return docs_tree
|
||||||
@@ -52,14 +53,15 @@ def DocsView(request, version=None, art_url=None):
|
|||||||
except DocVersion.DoesNotExist:
|
except DocVersion.DoesNotExist:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
|
active_arts, active_arts_ids = art.get_parents_path()
|
||||||
arts = DocArt.objects.filter(enable=True, versions=vers_obj).order_by('order')
|
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 = {
|
Dict = {
|
||||||
'cur_article': art,
|
'cur_article': art,
|
||||||
'cur_version': vers_obj,
|
'cur_version': vers_obj,
|
||||||
'doc_tree': doc_tree
|
'doc_tree': doc_tree,
|
||||||
}
|
}
|
||||||
t = loader.get_template('pages/p_documentation.html')
|
t = loader.get_template('pages/p_documentation.html')
|
||||||
return get_inter_http_respose(t, Dict, request)
|
return get_inter_http_respose(t, Dict, request)
|
||||||
|
|||||||
Reference in New Issue
Block a user