From b576e4f224bf70e069d21f6b14a75dd7e0db443f Mon Sep 17 00:00:00 2001 From: SDE Date: Thu, 11 Jul 2024 16:16:57 +0300 Subject: [PATCH] 0.5.4 documentation --- DocsApp/models.py | 15 +++++++++++++++ DocsApp/views.py | 49 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/DocsApp/models.py b/DocsApp/models.py index d078483..dc119a5 100644 --- a/DocsApp/models.py +++ b/DocsApp/models.py @@ -10,6 +10,21 @@ class DocVersion(BaseModel): help_text=_('можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)') ) + def get_article(self, art_url=None): + art = None + if art_url: + try: + art = self.rel_docArts_for_version.get(enable=True, url=art_url) + except DocArt.DoesNotExist: + art = None + + if not art: + art = self.rel_docArts_for_version.filter( + enable=True, parent=None + ).order_by('order').first() + + return art + class Meta: verbose_name = _('Версия документации') verbose_name_plural = _('Версии документации') diff --git a/DocsApp/views.py b/DocsApp/views.py index 86b26d0..eb30b76 100644 --- a/DocsApp/views.py +++ b/DocsApp/views.py @@ -1,17 +1,58 @@ import json -from django.http import HttpResponse, Http404, FileResponse +from django.http import HttpResponse, Http404, FileResponse, HttpResponseRedirect from django.template import loader, RequestContext from django.contrib.auth.decorators import login_required from .models import * from django.conf import settings from GeneralApp.funcs import get_inter_http_respose from django.utils.translation import gettext_lazy as _ +from django.urls import reverse def DocsView(request, version=None, art_url=None): + art = None + kwargs = {} + + if art_url: + kwargs['url'] = art_url + try: + art = DocArt.objects.get(**kwargs) + Dict = {'cur_article': art} + t = loader.get_template('pages/p_documentation.html') + return get_inter_http_respose(t, Dict, request) + except DocArt.DoesNotExist: + raise Http404 + + if version: + try: + vers_obj = DocVersion.objects.get(url=version) + if vers_obj: + art = vers_obj.get_article() + if art: + url = reverse( + 'docs_art_page', + kwargs={'version': version, 'art_url': art.url} + ) + return HttpResponseRedirect(url) + except DocVersion.DoesNotExist: + raise Http404 + + art = DocArt.objects.exclude( + versions=None + ).filter( + enable=True, parent=None + ).order_by('versions__order', 'order').first() + if art: + url = reverse( + 'docs_art_page', + kwargs={'version': art.versions.order_by('order').first().url, 'art_url': art.url} + ) + return HttpResponseRedirect(url) + + + if not art: + raise Http404 + - Dict = {} - t = loader.get_template('pages/p_documentation.html') - return get_inter_http_respose(t, Dict, request) \ No newline at end of file