0.5.9 documentation prev and next article navigation
This commit is contained in:
0
DocsApp/funcs.py
Normal file
0
DocsApp/funcs.py
Normal 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 = []
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
Reference in New Issue
Block a user