0.5.9 documentation prev and next article navigation

This commit is contained in:
SDE
2024-07-12 21:23:42 +03:00
parent c9d591fa40
commit 9d20b1c8fe
3 changed files with 63 additions and 3 deletions

0
DocsApp/funcs.py Normal file
View File

View File

@@ -43,6 +43,63 @@ class DocArt(BaseModelViewPage):
related_name='rel_docArts_for_version'
)
def get_last_child(self):
return self.rel_childArts_for_docArt.filter(enable=True).order_by('-order').first()
def get_first_child(self):
return self.rel_childArts_for_docArt.filter(enable=True).order_by('order').first()
def get_last_version(self):
return self.versions.all().order_by('-order').first()
def get_children(self, version):
return self.rel_childArts_for_docArt.filter(enable=True)
def get_prev_article(self, version=None):
if not version:
version = self.get_last_version()
art = DocArt.objects.filter(
enable=True,
versions=version,
order__lt=self.order,
parent=self.parent
).order_by('-order').first()
if art:
while art.get_last_child():
art = art.get_last_child()
if not art and self.parent:
art = self.parent
return art
def get_next_article(self, version=None):
if not version:
version = self.get_last_version()
art = self.get_first_child()
if not art:
art = DocArt.objects.filter(
enable=True,
versions=version,
order__gt=self.order,
parent=self.parent
).order_by('order').first()
if not art and self.parent:
art = DocArt.objects.filter(
enable=True,
versions=version,
order__gt=self.parent.order,
parent=self.parent.parent
).order_by('order').first()
return art
def get_parents_path(self, version_obj=None):
res = []

View File

@@ -42,6 +42,7 @@ def DocsView(request, version=None, art_url=None):
if art_url and version:
kwargs = {
'enable': True,
'url': art_url,
'versions__url': version,
}
@@ -49,7 +50,7 @@ def DocsView(request, version=None, art_url=None):
art = DocArt.objects.get(**kwargs)
try:
vers_obj = DocVersion.objects.get(url=version)
vers_obj = DocVersion.objects.get(enable=True, url=version)
except DocVersion.DoesNotExist:
raise Http404
@@ -81,6 +82,8 @@ def DocsView(request, version=None, art_url=None):
'doc_tree': doc_tree,
'allow_versions': versions,
'breadcrumbs': breadcrumbs,
'prev_article': art.get_prev_article(version=vers_obj),
'next_article': art.get_next_article(version=vers_obj)
}
t = loader.get_template('pages/p_documentation.html')
return get_inter_http_respose(t, Dict, request)
@@ -91,7 +94,7 @@ def DocsView(request, version=None, art_url=None):
if version:
try:
vers_obj = DocVersion.objects.get(url=version)
vers_obj = DocVersion.objects.get(enable=True, url=version)
if vers_obj:
art = vers_obj.get_article()
if art:
@@ -107,7 +110,7 @@ def DocsView(request, version=None, art_url=None):
versions=None
).filter(
enable=True, parent=None
).order_by('versions__order', 'order').first()
).order_by('-versions__order', 'order').first()
if art:
url = reverse(
'docs_art_page',