64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
from django.contrib import admin
|
|
from django.utils.html import format_html
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from ..models.exercisetree import ExerciseTree, ExerciseTreeTranslation, \
|
|
ExerciseTreeParents
|
|
|
|
'''
|
|
ExerciseTree
|
|
------------
|
|
'''
|
|
|
|
|
|
class TranslationTreeInline(admin.TabularInline):
|
|
model = ExerciseTreeTranslation
|
|
fields = ('language_code', 'name', 'description')
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTreeParentsInline(admin.TabularInline):
|
|
model = ExerciseTreeParents
|
|
fk_name = 'exercise_tree_child'
|
|
fields = ('exercise_tree_parent',)
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTreeAdmin(admin.ModelAdmin):
|
|
list_display = ('tree_id', 'name_colored', 'internal_name', 'active')
|
|
search_fields = ['name']
|
|
list_editable = ('internal_name', 'active')
|
|
|
|
fields = ["name", 'description', "image_url", "active", "get_image_preview"]
|
|
readonly_fields = ("get_image_preview",)
|
|
|
|
def get_image_preview(self, obj):
|
|
image_url = '/media/' + str(obj.image_url)
|
|
if obj.pk:
|
|
return format_html('<img src="{url}" title="{url}" width="30%" height="30%"/> '
|
|
.format(url=image_url))
|
|
|
|
get_image_preview.short_description = _("Image Preview")
|
|
|
|
def name_colored(self, obj):
|
|
if obj.active:
|
|
if obj.image_url != "":
|
|
color_code = '7bc863'
|
|
else:
|
|
color_code = 'f2cdb3'
|
|
else:
|
|
color_code = 'C20000'
|
|
html = '<span style="color: #{};">{}</span>˓→'.format(color_code, obj.name)
|
|
return format_html(html)
|
|
|
|
name_colored.admin_order_field = 'name'
|
|
name_colored.short_description = 'name'
|
|
|
|
inlines = [
|
|
TranslationTreeInline,
|
|
ExerciseTreeParentsInline
|
|
]
|
|
|
|
|
|
admin.site.register(ExerciseTree, ExerciseTreeAdmin)
|
|
admin.autodiscover() |