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'
|
||||
)
|
||||
|
||||
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 = []
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user