workouttest_backoffice/aitrainer_backoffice/aitrainer_backoffice/admin/exercisetree.py

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()