0.5.2 documentation

This commit is contained in:
SDE
2024-07-11 13:28:25 +03:00
parent 66f721d5bf
commit 5272d7503f
11 changed files with 386 additions and 6 deletions

View File

@@ -1,3 +1,131 @@
from django.contrib import admin
from sets.admin import *
from .models import *
from BaseModels.admin_utils import Admin_BaseIconModel
from super_inlines.admin import SuperInlineModelAdmin, SuperModelAdmin
from django.utils.translation import gettext as _
from django import forms
from django.utils.text import slugify
# Register your models here.
class DocArtForm(forms.ModelForm):
class Meta:
model = DocArt
fields = '__all__'
def __init__(self, *args, **kwargs):
super(DocArtForm, self).__init__(*args, **kwargs)
self.fields['parent'].queryset = DocArt.objects.exclude(id__exact=self.instance.id)
class Admin_DocArt(SuperModelAdmin, Admin_Trans_BaseModelViewPage):
form = DocArtForm
def show_versions(self, obj):
versions = obj.versions.filter(enable=True).values_list('name', flat=True)
if versions:
return ' - '.join(versions)
return '-'
show_versions.short_description = _('Версии')
fieldsets = [
(None, {
'classes': ['wide'],
'fields': (
'name', 'url',
'enable',
'parent',
'versions',
'order',
# 'title',
# 'description',
'text',
# 'picture',
)
}),
# ('SEO', {
# 'classes': ['wide', 'collapse'],
# 'fields': (
# 'seo_title', 'seo_description', 'seo_keywords', 'seo_text',
# )
# }),
]
list_display = [
'id', 'enable',
'name', 'url',
'show_versions',
'order', 'modifiedDT', 'createDT'
]
# ordering = ['section', 'parent_service', 'order']
prepopulated_fields = {"url": ("name_en",)}
list_display_links = ['id', 'name']
list_editable = ['enable', 'order']
filter_horizontal = ['versions']
list_filter = [
# 'section', 'parent_service',
'modifiedDT', 'createDT',
]
search_fields = ['name', 'title']
# filter_horizontal = ['options']
# inlines = [Admin_StackedInline_Block]
admin.site.register(DocArt, Admin_DocArt)
class Admin_DocVersion(Admin_BaseIconModel):
fieldsets = [
(None, {
'classes': ['wide'],
'fields': (
'name', 'url', 'enable', 'order',
)
}),
# ('SEO', {
# 'classes': ['wide', 'collapse'],
# 'fields': (
# 'seo_title', 'seo_description', 'seo_keywords', 'seo_text',
# )
# }),
]
list_display = [
'id', 'enable',
'name', 'url',
# 'title',
'order', 'modifiedDT', 'createDT'
]
# ordering = ['section', 'parent_service', 'order']
# prepopulated_fields = {"url": ("name",)}
list_display_links = ['id', 'name']
list_editable = ['enable', 'order']
list_filter = [
# 'section', 'parent_service',
'modifiedDT', 'createDT',
]
search_fields = ['name']
# filter_horizontal = ['options']
# inlines = [Admin_StackedInline_Block]
admin.site.register(DocVersion, Admin_DocVersion)

View File

@@ -0,0 +1,65 @@
# Generated by Django 4.2.7 on 2024-07-10 16:02
import BaseModels.base_models
import ckeditor_uploader.fields
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='DocVersion',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
('url', models.TextField(help_text='можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)', unique=True, verbose_name='URL привязанной страницы')),
],
options={
'verbose_name': 'Версия документации',
'verbose_name_plural': 'Версии документации',
},
),
migrations.CreateModel(
name='DocArt',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название')),
('name_plural', models.TextField(blank=True, null=True, verbose_name='Название (множественное число)')),
('order', models.IntegerField(blank=True, null=True, verbose_name='Очередность отображения')),
('createDT', models.DateTimeField(auto_now_add=True, verbose_name='Дата и время создания')),
('modifiedDT', models.DateTimeField(blank=True, null=True, verbose_name='Дата и время последнего изменения')),
('enable', models.BooleanField(db_index=True, default=True, verbose_name='Включено')),
('json_data', models.JSONField(blank=True, default=dict, verbose_name='Дополнительные данные')),
('url', models.TextField(help_text='можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)', unique=True, verbose_name='URL привязанной страницы')),
('title', models.TextField(blank=True, null=True, verbose_name='Заголовок')),
('description', ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание')),
('picture', models.FileField(blank=True, null=True, upload_to='uploads/', validators=[BaseModels.base_models.validate_file_extension], verbose_name='Картинка')),
('visible', models.BooleanField(default=True, verbose_name='Отображать')),
('seo_title', models.CharField(blank=True, max_length=250, null=True, verbose_name='Title (80 знаков)')),
('seo_description', models.CharField(blank=True, max_length=250, null=True, verbose_name='Description (150 знаков)')),
('seo_keywords', models.CharField(blank=True, max_length=250, null=True, verbose_name='Keywords (200 знаков)')),
('seo_text', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Текст SEO статьи')),
('FAQ_title', models.CharField(blank=True, max_length=250, null=True, verbose_name='FAQ Заголовок')),
('text', ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Статья')),
('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='DocsApp.docart', verbose_name='Родитель')),
('versions', models.ManyToManyField(blank=True, to='DocsApp.docversion', verbose_name='Подключенные версии')),
],
options={
'verbose_name': 'Статья документации',
'verbose_name_plural': 'Статьи документации',
},
),
]

View File

@@ -0,0 +1,59 @@
# Generated by Django 4.2.7 on 2024-07-10 16:12
import ckeditor_uploader.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('DocsApp', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='docart',
name='description_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AddField(
model_name='docart',
name='description_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, help_text='краткое описание страницы (до 240 символов)', null=True, verbose_name='Краткое описание'),
),
migrations.AddField(
model_name='docart',
name='name_en',
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
),
migrations.AddField(
model_name='docart',
name='name_ru',
field=models.TextField(blank=True, help_text='Название', null=True, verbose_name='Название'),
),
migrations.AddField(
model_name='docart',
name='text_en',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AddField(
model_name='docart',
name='text_ru',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
migrations.AddField(
model_name='docart',
name='title_en',
field=models.TextField(blank=True, null=True, verbose_name='Заголовок'),
),
migrations.AddField(
model_name='docart',
name='title_ru',
field=models.TextField(blank=True, null=True, verbose_name='Заголовок'),
),
migrations.AlterField(
model_name='docart',
name='text',
field=ckeditor_uploader.fields.RichTextUploadingField(blank=True, null=True, verbose_name='Полное описание'),
),
]

View File

@@ -0,0 +1,24 @@
# Generated by Django 4.2.7 on 2024-07-10 17:56
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('DocsApp', '0002_docart_description_en_docart_description_ru_and_more'),
]
operations = [
migrations.AlterField(
model_name='docart',
name='parent',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_childArts_for_docArt', to='DocsApp.docart', verbose_name='Родитель'),
),
migrations.AlterField(
model_name='docart',
name='versions',
field=models.ManyToManyField(blank=True, related_name='rel_docArts_for_version', to='DocsApp.docversion', verbose_name='Подключенные версии'),
),
]

View File

@@ -1,3 +1,37 @@
from django.db import models
from BaseModels.base_models import BaseModelViewPage, BaseModel
from ckeditor_uploader.fields import RichTextUploadingField
from django.utils.translation import gettext_lazy as _
# Create your models here.
class DocVersion(BaseModel):
url = models.TextField(
verbose_name=_('URL привязанной страницы'), unique=True,
help_text=_('можно изменить адрес страницы (!!! ВНИМАНИЕ !!! поисковые системы потеряют страницу и найдут лишь спустя неделю...месяц)')
)
class Meta:
verbose_name = _('Версия документации')
verbose_name_plural = _('Версии документации')
class DocArt(BaseModelViewPage):
parent = models.ForeignKey(
'DocArt', verbose_name=_('Родитель'),
null=True, blank=True,
on_delete=models.SET_NULL,
related_name='rel_childArts_for_docArt'
)
versions = models.ManyToManyField(
DocVersion, verbose_name=_('Подключенные версии'), blank=True,
related_name='rel_docArts_for_version'
)
def __str__(self):
if self.name:
return self.name
else:
return str(self.id)
class Meta:
verbose_name = _('Статья документации')
verbose_name_plural = _('Статьи документации')

19
DocsApp/translation.py Normal file
View File

@@ -0,0 +1,19 @@
from modeltranslation.translator import translator, TranslationOptions
from .models import *
class DocArt_TranslationOptions(TranslationOptions):
fields = (
'name', 'description', 'text', 'title'
)
translator.register(DocArt, DocArt_TranslationOptions)
# class DocVersion_TranslationOptions(TranslationOptions):
# fields = (
# 'name', 'description', 'text', 'title', 'FAQ_title', 'seo_title', 'seo_description', 'seo_text'
# )
# translator.register(DocVersion, DocVersion_TranslationOptions)

View File

@@ -6,4 +6,6 @@ from .views import *
urlpatterns = [
path('docs/3dsd/', DocsView, name='docs_main'),
path('docs/3dsd/v<str:version>/', DocsView, name='docs_version_page'),
path('docs/3dsd/v<str:version>/<str:art_url>/', DocsView, name='docs_art_page'),
]

View File

@@ -9,7 +9,7 @@ from GeneralApp.funcs import get_inter_http_respose
from django.utils.translation import gettext_lazy as _
def DocsView(request):
def DocsView(request, version=None, art_url=None):
Dict = {}