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' 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): def get_parents_path(self, version_obj=None):
res = [] res = []

View File

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