diff --git a/apps/hadis/admin/hadis.py b/apps/hadis/admin/hadis.py index 2a382d3..8bbd170 100644 --- a/apps/hadis/admin/hadis.py +++ b/apps/hadis/admin/hadis.py @@ -747,7 +747,7 @@ class HadisInCollectionInline(TabularInline): class HadisCollectionAdmin(ModelAdmin): """Admin for HadisCollection model""" form = HadisCollectionAdminForm - list_display = ('get_title_display', 'slug', 'status', 'order', 'created_at') + list_display = ('display_header','get_title_display', 'slug', 'status', 'order', 'created_at') list_filter = ('status', 'created_at') search_fields = ('title', 'slug', 'summary') readonly_fields = ('slug', 'created_at', 'updated_at') @@ -756,7 +756,7 @@ class HadisCollectionAdmin(ModelAdmin): fieldsets = ( (None, { - 'fields': ('title', 'slug', 'summary', 'status', 'order') + 'fields': ('title', 'slug', 'summary', 'status', 'order','thumbnail') }), (_('Timestamps'), { 'fields': ('created_at', 'updated_at'), @@ -776,6 +776,27 @@ class HadisCollectionAdmin(ModelAdmin): return first_item.get('text', '-') return '-' + @display(description=_("Collection"), header=True) + def display_header(self, obj): + from django.templatetags.static import static + + # Get thumbnail image path - use article's thumbnail if available, otherwise use default + thumbnail_path = obj.thumbnail.url if obj.thumbnail else None + + return [ + self.get_title_display(obj), + None, + None, + { + "path": thumbnail_path, + "height": 30, + "width": 50, + "borderless": True, + # "squared": True, + }, + ] + + class HadisInCollectionAdmin(ModelAdmin): """Admin for HadisInCollection model""" diff --git a/apps/hadis/admin/transmitter.py b/apps/hadis/admin/transmitter.py index 95597f6..9ae727f 100644 --- a/apps/hadis/admin/transmitter.py +++ b/apps/hadis/admin/transmitter.py @@ -126,7 +126,7 @@ class TransmittersAdminForm(forms.ModelForm): class TransmittersAdmin(ModelAdmin): """Admin for Transmitters model""" form = TransmittersAdminForm - list_display = ('get_full_name_display', 'birth_year_hijri', 'death_year_hijri') + list_display = ('display_header', 'birth_year_hijri', 'death_year_hijri') list_filter = ('birth_year_hijri', 'death_year_hijri') search_fields = ('full_name', 'description') readonly_fields = ('created_at', 'updated_at') @@ -134,7 +134,7 @@ class TransmittersAdmin(ModelAdmin): fieldsets = ( (None, { - 'fields': ('full_name', 'birth_year_hijri', 'death_year_hijri','known_as','nickname') + 'fields': ('full_name', 'birth_year_hijri', 'death_year_hijri','known_as','nickname','thumbnail') }), (_('Additional Information'), { 'fields': ('description','origin','lived_in','died_in','kunya'), @@ -157,6 +157,26 @@ class TransmittersAdmin(ModelAdmin): return first_item.get('text', '-') return '-' + @display(description=_("Transmitter"), header=True) + def display_header(self, obj): + from django.templatetags.static import static + + # Get thumbnail image path - use article's thumbnail if available, otherwise use default + thumbnail_path = obj.thumbnail.url if obj.thumbnail else None + + return [ + self.get_full_name_display(obj), + None, + None, + { + "path": thumbnail_path, + "height": 30, + "width": 50, + "borderless": True, + # "squared": True, + }, + ] + class HadisTransmitterAdmin(ModelAdmin): """Admin for HadisTransmitter model""" diff --git a/apps/hadis/migrations/0004_alter_hadiscollection_thumbnail_and_more.py b/apps/hadis/migrations/0004_alter_hadiscollection_thumbnail_and_more.py new file mode 100644 index 0000000..a5bcf52 --- /dev/null +++ b/apps/hadis/migrations/0004_alter_hadiscollection_thumbnail_and_more.py @@ -0,0 +1,32 @@ +# Generated by Django 4.2.27 on 2026-01-24 10:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("hadis", "0003_booksubjectarea_booktype_hadisstatus_description_and_more"), + ] + + operations = [ + migrations.AlterField( + model_name="hadiscollection", + name="thumbnail", + field=models.ImageField( + blank=True, + help_text="image allowed", + null=True, + upload_to="hadis/collection_thumbnails/", + ), + ), + migrations.AlterField( + model_name="transmitters", + name="thumbnail", + field=models.ImageField( + blank=True, + help_text="image allowed", + null=True, + upload_to="hadis/transmitter_thumbnails/", + ), + ), + ] diff --git a/apps/hadis/models/hadis.py b/apps/hadis/models/hadis.py index f30313e..3f7c98b 100644 --- a/apps/hadis/models/hadis.py +++ b/apps/hadis/models/hadis.py @@ -5,7 +5,6 @@ from django.db.models import F, ForeignKey from django.utils.translation import gettext_lazy as _ from django.conf import settings from django.utils.text import slugify -from filer.fields.image import FilerImageField from .reference import BookReference from utils.slug import generate_smart_slug @@ -15,14 +14,7 @@ class HadisCollection(models.Model): summary = models.JSONField(default = list , verbose_name=_('Summary')) status = models.BooleanField(default=True, verbose_name=_('status')) order = models.IntegerField(default=0, verbose_name=_('order')) - thumbnail = FilerImageField( - related_name="+", - on_delete=models.CASCADE, - help_text=_('thumbnail image'), - null=True, - blank=True, - verbose_name=_('thumbnail') - ) + thumbnail = models.ImageField(upload_to='hadis/collection_thumbnails/', null=True, blank=True, help_text=_('image allowed')) created_at = models.DateTimeField(auto_now_add=True, verbose_name=_('created at')) updated_at = models.DateTimeField(auto_now=True, verbose_name=_('updated at')) diff --git a/apps/hadis/models/transmitter.py b/apps/hadis/models/transmitter.py index 095f2f6..fd7b78c 100644 --- a/apps/hadis/models/transmitter.py +++ b/apps/hadis/models/transmitter.py @@ -3,7 +3,6 @@ from tabnanny import verbose from django.db import models from django.utils.translation import gettext_lazy as _ -from filer.fields.image import FilerImageField from django.utils.text import slugify from typing import Optional from utils.slug import generate_smart_slug @@ -215,13 +214,7 @@ class Transmitters(models.Model): # Additional Information description = models.JSONField(default = list , verbose_name=_('Description')) - thumbnail = FilerImageField( - related_name="+", - on_delete=models.CASCADE, - help_text=_('image allowed'), - null=True, - blank=True - ) + thumbnail = models.ImageField(upload_to='hadis/transmitter_thumbnails/', null=True, blank=True, help_text=_('image allowed')) created_at = models.DateTimeField(auto_now_add=True, verbose_name=_('created at')) updated_at = models.DateTimeField(auto_now=True, verbose_name=_('updated at'))