110 строки
3.1 KiB
Python
110 строки
3.1 KiB
Python
from django.contrib import admin
|
|
from .models import Item, Tag, Setting, TYPE_AUDIO, TYPE_FOLDER, TYPE_IMAGE, TYPE_VIDEO
|
|
|
|
|
|
class ItemAdmin(admin.ModelAdmin):
|
|
list_display = ('rel_path', 'type', )
|
|
search_fields = ('rel_path', )
|
|
readonly_fields = (
|
|
'rel_path',
|
|
'type',
|
|
'artist_c',
|
|
'album_c',
|
|
'year_c',
|
|
'title_c',
|
|
'track_c',
|
|
'duration_c',
|
|
'genre_c',
|
|
'bitrate_c',
|
|
'num_audio_c',
|
|
'num_folders_c',
|
|
'num_images_c',
|
|
'num_other_c',
|
|
'num_videos_c',
|
|
'sil_c',
|
|
'camera_c',
|
|
'width_c',
|
|
'height_c',
|
|
'exposure_program_c',
|
|
'exposure_time_c',
|
|
'iso_c',
|
|
'f_number_c',
|
|
'focal_length_c',
|
|
'flash_c',
|
|
'lon_c',
|
|
'lat_c',
|
|
'orientation_c',
|
|
'ratio_c'
|
|
)
|
|
|
|
list_filter = (
|
|
('type', admin.ChoicesFieldListFilter),
|
|
('public_access', admin.BooleanFieldListFilter),
|
|
('read_access', admin.RelatedFieldListFilter),
|
|
('modify_access', admin.RelatedFieldListFilter),
|
|
)
|
|
|
|
def get_fields(self, request, obj=None):
|
|
if obj is not None:
|
|
rv = ['rel_path', 'type', 'datetime_c']
|
|
if obj.type == TYPE_FOLDER:
|
|
rv += ['public_access', 'read_access', 'modify_access']
|
|
else:
|
|
rv += ['favourite_of']
|
|
rv += ['size_c', 'uid_c', 'settings_c', 'data_version_c']
|
|
if obj.type == TYPE_AUDIO:
|
|
rv += [
|
|
'artist_c',
|
|
'album_c',
|
|
'year_c',
|
|
'title_c',
|
|
'track_c',
|
|
'duration_c',
|
|
'genre_c',
|
|
'bitrate_c',
|
|
]
|
|
if obj.type == TYPE_FOLDER:
|
|
rv += [
|
|
'num_folders_c',
|
|
'num_audio_c',
|
|
'num_images_c',
|
|
'num_other_c',
|
|
'num_videos_c',
|
|
'sil_c',
|
|
]
|
|
if obj.type == TYPE_IMAGE:
|
|
rv += [
|
|
'camera_c',
|
|
'width_c',
|
|
'height_c',
|
|
'lon_c',
|
|
'lat_c',
|
|
'exposure_program_c',
|
|
'exposure_time_c',
|
|
'iso_c',
|
|
'focal_length_c',
|
|
'f_number_c',
|
|
'flash_c',
|
|
'orientation_c',
|
|
]
|
|
if obj.type == TYPE_VIDEO:
|
|
rv += [
|
|
'duration_c',
|
|
'width_c',
|
|
'height_c',
|
|
'ratio_c'
|
|
]
|
|
return rv
|
|
else:
|
|
return admin.ModelAdmin.get_fields(self, request, obj=obj)
|
|
|
|
|
|
class TagAdmin(admin.ModelAdmin):
|
|
list_display = ('item', 'text', )
|
|
search_fields = ('item__rel_path', 'text', )
|
|
|
|
|
|
admin.site.register(Item, ItemAdmin)
|
|
admin.site.register(Tag, TagAdmin)
|
|
admin.site.register(Setting)
|