muistox/gallery/admin.py

56 lines
1.5 KiB
Python

from django.contrib import admin
from imagekit import ImageSpec
from imagekit.admin import AdminThumbnail
from imagekit.cachefiles import ImageCacheFile
from imagekit.processors import ResizeToFill
from gallery.models import Album, City, Location, Photo
class AdminThumbnailSpec(ImageSpec):
processors = [ResizeToFill(50, 50)]
format = 'JPEG'
options = {'quality': 60}
def cached_admin_thumb(instance):
cached = ImageCacheFile(AdminThumbnailSpec(instance.photo))
cached.generate()
return cached
class CityAdmin(admin.ModelAdmin):
list_display = ('name',)
search_fields = ('name',)
ordering = ('name',)
list_per_page = 30
class LocationAdmin(admin.ModelAdmin):
list_display = ('city', 'place')
list_filter = ('city',)
ordering = ('city__name',)
search_fields = ('place', 'city__name',)
list_per_page = 30
class AlbumAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('name',)}
list_display = ('__str__', 'location', 'album_date', 'is_public', )
search_fields = ('name',)
ordering = ('name',)
list_per_page = 30
list_editable = ('is_public', 'location')
class PhotoAdmin(admin.ModelAdmin):
list_display = ('slug', 'album', 'admin_thumbnail',)
list_display_links = ('slug',)
readonly_fields = ['slug', 'taken_at', 'height', 'width', 'exif', ]
admin_thumbnail = AdminThumbnail(image_field=cached_admin_thumb)
admin.site.register(City, CityAdmin)
admin.site.register(Location, LocationAdmin)
admin.site.register(Album, AlbumAdmin)
admin.site.register(Photo, PhotoAdmin)