BO 1.9 tutorials, model and admin.py separeted, django 3.2

This commit is contained in:
Bossanyi Tibor
2021-04-24 14:47:53 +02:00
parent 056e22c407
commit a764cb8f21
29 changed files with 1099 additions and 948 deletions
@@ -0,0 +1,10 @@
# init
from .exercise_type import ExerciseTypeAdmin
from .exercisetree import ExerciseTreeAdmin
from .exercise_plan_template import ExercisePlanTemplateAdmin, ExercisePlanTemplateDetailAdmin
from .product import ProductAdmin
from .exercise_device import ExerciseDeviceAdmin
from .tutorial import TutorialAdmin
from .evaluation import EvaluationAdmin, EvaluationAttributeAdmin
from .exercise_plan import ExercisePlanAdmin
@@ -0,0 +1,32 @@
from django.contrib import admin
from ..models.evaluation import EvaluationAttribute, Evaluation
class EvaluationAdmin(admin.ModelAdmin):
list_display = ('evaluation_id', 'name', 'get_exercise_type')
def get_exercise_type(self, obj):
return obj.exercise_type.name
class EvaluationAttributeAdmin(admin.ModelAdmin):
list_display = (
'evaluation_attr_id', 'name', 'sex', 'age_min', 'age_max', 'value_min', 'value_max', 'evaluation_text')
list_editable = ('name', 'sex', 'age_min', 'age_max', 'value_min', 'value_max', 'evaluation_text')
list_filter = ('evaluation',)
def copy_attributes(self, request, queryset):
for objectAttr in reversed(queryset):
objectAttr.pk = None
objectAttr.name = objectAttr.name + "_copy"
objectAttr.save()
copy_attributes.short_description = "Clone the selected attribute"
actions = [copy_attributes]
admin.site.register(Evaluation, EvaluationAdmin)
admin.site.register(EvaluationAttribute, EvaluationAttributeAdmin)
admin.autodiscover()
@@ -0,0 +1,41 @@
from django.contrib import admin
from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _
from ..models.exercise_device import ExerciseDeviceTranslation, ExerciseDeviceAlternative, ExerciseDevice
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(ExerciseDevice, ExerciseDeviceAdmin)
admin.autodiscover()
@@ -0,0 +1,42 @@
from django.contrib import admin
from django.utils.html import format_html
from ..models.exercise_plan import ExercisePlanTranslation
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
'''
@@ -0,0 +1,51 @@
from django.contrib import admin
from django.utils.html import format_html
from ..models.exercise_plan_template import ExercisePlanTemplateTranslation, ExercisePlanTemplateDetail, ExercisePlanTemplate
class TranslationPlanTemplateInline(admin.TabularInline):
model = ExercisePlanTemplateTranslation
fields = ('language_code', 'name', 'description')
extra = 0
class TranslationPlanTemplateDetailInline(admin.TabularInline):
model = ExercisePlanTemplateDetail
verbose_name = 'name'
fields = ('exercise_type','sort')
extra = 0
ordering = ('sort',)
class ExercisePlanTemplateAdmin(admin.ModelAdmin):
list_display = ('name_colored', 'template_type')
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 = [
TranslationPlanTemplateInline,
TranslationPlanTemplateDetailInline
]
class ExercisePlanTemplateDetailAdmin(admin.ModelAdmin):
list_display = ('get_plan', 'get_exercise_type', 'quantity', 'quantity_unit_quantity', 'rest_time',)
list_editable = ('serie', 'quantity', 'quantity_unit_quantity', 'rest_time')
def get_plan(self, obj):
return obj.exercise_plan_template.name
def get_exercise_type(self, obj):
return obj.exercise_type.name
admin.site.register(ExercisePlanTemplate, ExercisePlanTemplateAdmin)
admin.autodiscover()
@@ -0,0 +1,79 @@
from django.contrib import admin
from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _
from ..models.exercise_type import ExerciseType, ExerciseTypeImage, ExerciseTypeTranslation, ExerciseTypeAlternative, \
ExerciseTypeParents, ExerciseTypeDevice
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', 'exercisetypetranslation__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',)
admin.site.register(ExerciseType, ExerciseTypeAdmin)
admin.autodiscover()
@@ -0,0 +1,63 @@
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', 'active')
search_fields = ['name']
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()
@@ -0,0 +1,11 @@
from django.contrib import admin
from ..models.product import Product
class ProductAdmin(admin.ModelAdmin):
list_display = ('product_id', 'name', 'type')
admin.site.register(Product, ProductAdmin)
admin.autodiscover()
@@ -0,0 +1,29 @@
from django.contrib import admin
from ..models.tutorial import TutorialTranslation, Tutorial, TutorialSteps
class TranslationTutorialInline(admin.TabularInline):
model = TutorialTranslation
fields = ('language_code', 'tutorial_text', 'error_text')
extra = 0
class TutorialStepsAdmin(admin.ModelAdmin):
list_display = ('tutorial', 'step',)
list_filter = ('tutorial',)
fields = ('tutorial', 'step', "tutorial_text", "error_text", "check_text",)
inlines = [
TranslationTutorialInline,
]
class TutorialAdmin(admin.ModelAdmin):
list_display = ('name',)
fields = ('name',)
admin.site.register(Tutorial, TutorialAdmin)
admin.site.register(TutorialSteps, TutorialStepsAdmin)
admin.autodiscover()