diff --git a/DocsApp/funcs.py b/DocsApp/funcs.py new file mode 100644 index 0000000..e69de29 diff --git a/DocsApp/models.py b/DocsApp/models.py index 6c807a8..8463088 100644 --- a/DocsApp/models.py +++ b/DocsApp/models.py @@ -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 = [] diff --git a/DocsApp/views.py b/DocsApp/views.py index fa739e0..ead9115 100644 --- a/DocsApp/views.py +++ b/DocsApp/views.py @@ -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',