229 lines
6.4 KiB
Python
229 lines
6.4 KiB
Python
from django.contrib import admin
|
|
from django.utils.html import format_html
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from .models import ExerciseType, ExerciseTypeAlternative, ExerciseTypeParents
|
|
from .models import Product
|
|
from .models import ExerciseDevice, ExerciseDeviceTranslation, ExerciseTypeDevice, ExerciseDeviceAlternative
|
|
from .models import ExerciseTypeImage
|
|
from .models import ExerciseTypeTranslation
|
|
from .models import ExerciseTreeTranslation
|
|
from .models import ExerciseTree, ExerciseTreeParents
|
|
from .models import ExercisePlanTranslation
|
|
from .models import ExercisePlanDetail
|
|
from .models import ExercisePlan
|
|
|
|
'''
|
|
ExerciseTree
|
|
------------
|
|
'''
|
|
|
|
|
|
class TranslationTreeInline(admin.TabularInline):
|
|
model = ExerciseTreeTranslation
|
|
fields = ('language_code', 'name',)
|
|
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', 'active')
|
|
search_fields = ['name']
|
|
|
|
fields = ["name", "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
|
|
]
|
|
|
|
|
|
'''
|
|
ExerciseTYPE
|
|
------------
|
|
'''
|
|
|
|
|
|
class ExerciseTypeDeviceInline(admin.StackedInline):
|
|
model = ExerciseTypeDevice
|
|
extra = 0
|
|
fields = ["exercise_type", "exercise_device"]
|
|
|
|
|
|
class ImageInline(admin.StackedInline):
|
|
model = ExerciseTypeImage
|
|
extra = 0
|
|
fields = ["name", "url", "type", "get_image_preview"]
|
|
readonly_fields = ("get_image_preview",)
|
|
|
|
def get_image_preview(self, obj):
|
|
image_url = '/media/' + str(obj.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")
|
|
|
|
|
|
class TranslationInline(admin.TabularInline):
|
|
model = ExerciseTypeTranslation
|
|
fields = ('language_code', 'name', 'description')
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTypeAlternativesInline(admin.TabularInline):
|
|
model = ExerciseTypeAlternative
|
|
fk_name = 'exercise_type_child'
|
|
fields = ('exercise_type_parent',)
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTypeParentsInline(admin.TabularInline):
|
|
model = ExerciseTypeParents
|
|
fields = ('exercise_tree',)
|
|
extra = 0
|
|
|
|
|
|
class ExerciseTypeAdmin(admin.ModelAdmin):
|
|
list_display = ('exercise_type_id', 'name_colored', 'active', 'base')
|
|
search_fields = ['name']
|
|
fields = ('name', 'description', 'unit', 'unit_quantity', 'unit_quantity_unit', 'active', 'base')
|
|
|
|
def name_colored(self, obj):
|
|
if obj.active:
|
|
if obj.base:
|
|
color_code = '7bc863'
|
|
else:
|
|
color_code = '4178bc'
|
|
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 = [
|
|
ImageInline,
|
|
TranslationInline,
|
|
ExerciseTypeDeviceInline,
|
|
ExerciseTypeAlternativesInline,
|
|
ExerciseTypeParentsInline
|
|
]
|
|
exclude = ('exercise_tree',)
|
|
|
|
|
|
'''
|
|
ExercisePlan
|
|
------------
|
|
'''
|
|
|
|
|
|
class TranslationPlanInline(admin.TabularInline):
|
|
model = ExercisePlanTranslation
|
|
fields = ('language_code', 'name', 'description')
|
|
extra = 0
|
|
|
|
|
|
class ExercisePlanAdmin(admin.ModelAdmin):
|
|
list_display = ('name_colored',)
|
|
search_fields = ['name']
|
|
|
|
def name_colored(self, obj):
|
|
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 = [
|
|
TranslationPlanInline
|
|
]
|
|
|
|
|
|
class ExercisePlanDetailAdmin(admin.ModelAdmin):
|
|
list_display = ('get_plan', 'get_exercise_type', 'serie', 'repeats', 'weight_equation',)
|
|
list_editable = ('serie', 'repeats', 'weight_equation',)
|
|
|
|
# list_editable_link('',)
|
|
|
|
def get_plan(self, obj):
|
|
return obj.exercise_plan.name
|
|
|
|
def get_exercise_type(self, obj):
|
|
return obj.exercise_type.name
|
|
|
|
|
|
class ProductAdmin(admin.ModelAdmin):
|
|
list_display = ('product_id', 'name', 'type')
|
|
|
|
|
|
class TranslationExerciseDeviceInline(admin.TabularInline):
|
|
model = ExerciseDeviceTranslation
|
|
fields = ('language_code', 'name')
|
|
extra = 0
|
|
|
|
|
|
class ExerciseDeviceAlternativesInline(admin.TabularInline):
|
|
model = ExerciseDeviceAlternative
|
|
fk_name = 'exercise_device_child'
|
|
fields = ('exercise_device_parent',)
|
|
extra = 0
|
|
|
|
|
|
class ExerciseDeviceAdmin(admin.ModelAdmin):
|
|
list_display = ('name',)
|
|
fields = ('name', 'description', "image_url", "get_image_preview", "sort", "place")
|
|
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")
|
|
|
|
inlines = [
|
|
TranslationExerciseDeviceInline,
|
|
ExerciseDeviceAlternativesInline
|
|
]
|
|
|
|
|
|
admin.site.register(ExerciseType, ExerciseTypeAdmin)
|
|
admin.site.register(ExerciseTree, ExerciseTreeAdmin)
|
|
admin.site.register(ExercisePlan, ExercisePlanAdmin)
|
|
admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin)
|
|
admin.site.register(Product, ProductAdmin)
|
|
admin.site.register(ExerciseDevice, ExerciseDeviceAdmin)
|
|
admin.autodiscover()
|