BO 1.9 tutorials, model and admin.py separeted, django 3.2
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user