diff --git a/BaseModels/admin_utils.py b/BaseModels/admin_utils.py
index 014e480..df6247e 100644
--- a/BaseModels/admin_utils.py
+++ b/BaseModels/admin_utils.py
@@ -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)
diff --git a/DocsApp/models.py b/DocsApp/models.py
index 2ce6211..b1447ee 100644
--- a/DocsApp/models.py
+++ b/DocsApp/models.py
@@ -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,
diff --git a/GeneralApp/admin.py b/GeneralApp/admin.py
index 579d773..9041d2f 100644
--- a/GeneralApp/admin.py
+++ b/GeneralApp/admin.py
@@ -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)
diff --git a/GeneralApp/models.py b/GeneralApp/models.py
index 37bc810..9410edc 100644
--- a/GeneralApp/models.py
+++ b/GeneralApp/models.py
@@ -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)
diff --git a/requirements.pip b/requirements.pip
index 609afcd..297f1e1 100644
--- a/requirements.pip
+++ b/requirements.pip
@@ -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
\ No newline at end of file
diff --git a/templates/filebrowser/custom_field.html b/templates/filebrowser/custom_field.html
new file mode 100644
index 0000000..e4671b5
--- /dev/null
+++ b/templates/filebrowser/custom_field.html
@@ -0,0 +1,30 @@
+{% load i18n fb_versions %}
+
+
+
+
+{% if value.filetype == "Image" and value.exists %}
+{% version value.path final_attrs.ADMIN_THUMBNAIL as thumbnail_version %}
+{% if thumbnail_version %}
+
+
+
+
+