0.5.11 documentation file storage

This commit is contained in:
SDE
2024-07-15 02:22:53 +03:00
parent 5f207aed36
commit 83d50657ef
7 changed files with 85 additions and 24 deletions

View File

@@ -272,9 +272,9 @@ class Admin_BaseIconModel(admin.ModelAdmin):
# ckeditor + youtube фикс
for field in form.changed_data:
if type(field) == str:
if 'RichTextUploading' in str(form.fields[field]):
val = getattr(obj, field, None)
if val:
if val and type(val) == str:
val = val.replace(' sandbox=""', '')
setattr(obj, field, val)
# setattr(form.instance, field, val)

View File

@@ -48,11 +48,17 @@ class DocArt(BaseModelViewPage):
# self.modifiedDT = datetime.now()
# super().save(*args, **kwargs)
def get_last_child(self):
return self.rel_childArts_for_docArt.filter(enable=True).order_by('-order').first()
def get_last_child(self, version):
return self.rel_childArts_for_docArt.filter(
versions=version,
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_first_child(self, version):
return self.rel_childArts_for_docArt.filter(
versions=version,
enable=True
).order_by('order').first()
def get_last_version(self):
return self.versions.all().order_by('-order').first()
@@ -73,8 +79,8 @@ class DocArt(BaseModelViewPage):
).order_by('-order').first()
if art:
while art.get_last_child():
art = art.get_last_child()
while art.get_last_child(version=version):
art = art.get_last_child(version=version)
if not art and self.parent:
art = self.parent
@@ -86,7 +92,7 @@ class DocArt(BaseModelViewPage):
if not version:
version = self.get_last_version()
art = self.get_first_child()
art = self.get_first_child(version=version)
if not art:
art = DocArt.objects.filter(
enable=True,

View File

@@ -1,3 +1,5 @@
from django import forms
from sets.admin import *
from .models import *
from django.contrib import admin
@@ -21,31 +23,45 @@ class LogEntryAdmin(admin.ModelAdmin):
admin.site.register(LogEntry, LogEntryAdmin)
class Admin_FileUnit(Admin_Trans_BaseModelViewPage):
def formfield_for_dbfield(self, db_field, request, **kwargs):
from filebrowser.fields import FileBrowseWidget
formfield = super(Admin_FileUnit, self).formfield_for_dbfield(db_field, request, **kwargs)
if db_field and db_field.name in ['file']:
widget_sets = formfield.widget.site
formfield.widget = FileBrowseWidget(attrs={'style': 'width: 80%'})
formfield.widget.site = widget_sets
return formfield
def fn(self, obj):
return obj.file.filename
fn.short_description = 'Файл'
def fn_full_path(self, obj):
return obj.file.url
fn_full_path.short_description = 'Линк для использования в HTML'
fieldsets = [
(None, {
'classes': [],
'fields': [
('name',),
# ('name',),
('file',),
# 'image'
'order'
]
})
]
list_display = [
'image_thumb',
'id',
'fn',
'fn_full_path',
# 'title',
'order', 'modifiedDT', 'createDT'
]
list_display_links = ['id', 'image_thumb']
list_editable = ['order']
list_filter = ['modifiedDT', 'createDT']
search_fields = ['file']
admin.site.register(FileUnit, Admin_FileUnit)

View File

@@ -15,6 +15,14 @@ from filebrowser.base import FileObject
class FileUnit(BaseModel):
file = FileBrowseField(verbose_name=_('Файл'), max_length=250, directory="files/")
def __str__(self):
if self.file:
return self.file.filename
else:
return str(self.id)
class Meta:
verbose_name = _('Файл')
verbose_name_plural = _('Файлы')
class StaticPage(BaseModelViewPage):
promo_header = models.BooleanField(verbose_name='Промо-хэдер', default=False)

View File

@@ -6,4 +6,5 @@ django-modeltranslation==0.18.11
Pillow==10.1.0
psycopg2-binary==2.9.9
django-super-inlines
django-filebrowser-4.0.3
django-filebrowser-no-grappelli==4.0.2

View File

@@ -0,0 +1,30 @@
{% load i18n fb_versions %}
<input id="{{ final_attrs.id }}" type="text" class="vFileBrowseField{% if final_attrs.class %} {{ final_attrs.class }}{% endif %}" style="width: 80%;" name="{{ final_attrs.name }}" value="{{ value.path }}" {% for k, v in final_attrs.data_attrs.items %}{{k}}="{{v}}" {% endfor %}/>
<a href="#" onclick="FileBrowser.show(this.parentNode.getElementsByTagName('input')[0].id, '{{ url }}?pop=1{% if final_attrs.directory %}&amp;dir={{ final_attrs.directory|urlencode|urlencode }}{% endif %}{% if final_attrs.format %}&amp;filter={{ final_attrs.format }}{% endif %}');" class="fb_show">
<img src="{{ final_attrs.search_icon }}" style="margin: 5px 0 0 10px;" alt="{% trans "Change" %}" />
</a>
{% if value.filetype == "Image" and value.exists %}
{% version value.path final_attrs.ADMIN_THUMBNAIL as thumbnail_version %}
{% if thumbnail_version %}
<p class="preview" id="preview_{{ final_attrs.id }}">
<a href="{{ value.url }}" target="_blank" id="previewlink_{{ final_attrs.id }}">
<img id="previewimage_{{ final_attrs.id }}" src="{{ thumbnail_version.url }}" class="preview" />
</a>
</p>
{% else %}
<p class="preview" id="preview_{{ final_attrs.id }}" style="display: none;">
<a href="javascript://" target="_self" id="previewlink_{{ final_attrs.id }}">
<img id="previewimage_{{ final_attrs.id }}" class="preview" src="" />
</a>
</p>
{% endif %}
{% else %}
<p class="preview" id="preview_{{ final_attrs.id }}" style="display: none;">
<a href="javascript://" target="_self" id="previewlink_{{ final_attrs.id }}">
<img id="previewimage_{{ final_attrs.id }}" class="preview" src="" />
</a>
</p>
{% endif %}
{% if value and not value.exists %}
<ul class="errorlist"><li>{% trans "File not found" %}</li></ul>
{% endif %}

View File

@@ -133,16 +133,16 @@
<img class="arrow_control_content_part_tree_el_img" src="{% static "images/arrow_control_part_tree_el.svg" %}" alt="">
</picture>
<a class="txt_control_content_part_tree_el" href="{% url 'docs_art_page' cur_version.url prev_article.url %}">
<div class="txt_control_content_part_tree_el" data-url="{% url 'docs_art_page' cur_version.url prev_article.url %}" onclick="changeCurArticle(this)">
{% trans "Предыдущий" %}
</a>
</div>
{% endif %}
</div>
<div class="control_content_part_tree_el right">
{% if next_article %}
<a class="txt_control_content_part_tree_el" href="{% url 'docs_art_page' cur_version.url next_article.url %}">
<div class="txt_control_content_part_tree_el" data-url="{% url 'docs_art_page' cur_version.url next_article.url %}" onclick="changeCurArticle(this)">
{% trans "Следующий" %}
</a>
</div>
<picture class="arrow_control_content_part_tree_el_picture">
<source srcset="{% static "images/arrow_control_part_tree_el.svg" %}">
<img class="arrow_control_content_part_tree_el_img" src="{% static "images/arrow_control_part_tree_el.svg" %}" alt="">