API 1.0.26 admin: ExercisePlanTemplate

This commit is contained in:
Bossanyi Tibor 2021-02-23 17:13:54 +01:00
parent 0f089d7882
commit 78c6dbee71
6 changed files with 243 additions and 119 deletions

View File

@ -1,3 +1,5 @@
from abc import ABC
from django.contrib import admin from django.contrib import admin
from django.utils.html import format_html from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -11,6 +13,7 @@ from .models import ExerciseTree, ExerciseTreeParents
from .models import ExercisePlanTranslation from .models import ExercisePlanTranslation
from .models import ExercisePlanDetail from .models import ExercisePlanDetail
from .models import ExercisePlan from .models import ExercisePlan
from .models import ExercisePlanTemplate, ExercisePlanTemplateTranslation, ExercisePlanTemplateDetail
''' '''
ExerciseTree ExerciseTree
@ -114,7 +117,7 @@ class ExerciseTypeParentsInline(admin.TabularInline):
class ExerciseTypeAdmin(admin.ModelAdmin): class ExerciseTypeAdmin(admin.ModelAdmin):
list_display = ('exercise_type_id', 'name_colored', 'active', 'base') list_display = ('exercise_type_id', 'name_colored', 'active', 'base')
search_fields = ['name'] search_fields = ['name', 'exercisetypetranslation__name']
fields = ('name', 'description', 'unit', 'unit_quantity', 'unit_quantity_unit', 'active', 'base') fields = ('name', 'description', 'unit', 'unit_quantity', 'unit_quantity_unit', 'active', 'base')
def name_colored(self, obj): def name_colored(self, obj):
@ -142,11 +145,53 @@ class ExerciseTypeAdmin(admin.ModelAdmin):
''' '''
ExercisePlan ExercisePlan + Template
------------ ------------
''' '''
class TranslationPlanTemplateInline(admin.TabularInline):
model = ExercisePlanTemplateTranslation
fields = ('language_code', 'name', 'description')
extra = 0
class TranslationPlanTemplateDetailInline(admin.TabularInline):
model = ExercisePlanTemplateDetail
fields = ('exercise_type',)
extra = 0
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
class TranslationPlanInline(admin.TabularInline): class TranslationPlanInline(admin.TabularInline):
model = ExercisePlanTranslation model = ExercisePlanTranslation
fields = ('language_code', 'name', 'description') fields = ('language_code', 'name', 'description')
@ -169,7 +214,7 @@ class ExercisePlanAdmin(admin.ModelAdmin):
TranslationPlanInline TranslationPlanInline
] ]
'''
class ExercisePlanDetailAdmin(admin.ModelAdmin): class ExercisePlanDetailAdmin(admin.ModelAdmin):
list_display = ('get_plan', 'get_exercise_type', 'serie', 'repeats', 'weight_equation',) list_display = ('get_plan', 'get_exercise_type', 'serie', 'repeats', 'weight_equation',)
list_editable = ('serie', 'repeats', 'weight_equation',) list_editable = ('serie', 'repeats', 'weight_equation',)
@ -181,6 +226,7 @@ class ExercisePlanDetailAdmin(admin.ModelAdmin):
def get_exercise_type(self, obj): def get_exercise_type(self, obj):
return obj.exercise_type.name return obj.exercise_type.name
'''
class ProductAdmin(admin.ModelAdmin): class ProductAdmin(admin.ModelAdmin):
@ -221,8 +267,8 @@ class ExerciseDeviceAdmin(admin.ModelAdmin):
admin.site.register(ExerciseType, ExerciseTypeAdmin) admin.site.register(ExerciseType, ExerciseTypeAdmin)
admin.site.register(ExerciseTree, ExerciseTreeAdmin) admin.site.register(ExerciseTree, ExerciseTreeAdmin)
admin.site.register(ExercisePlanTemplate, ExercisePlanTemplateAdmin)
admin.site.register(ExercisePlan, ExercisePlanAdmin) admin.site.register(ExercisePlan, ExercisePlanAdmin)
admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin)
admin.site.register(Product, ProductAdmin) admin.site.register(Product, ProductAdmin)
admin.site.register(ExerciseDevice, ExerciseDeviceAdmin) admin.site.register(ExerciseDevice, ExerciseDeviceAdmin)
admin.autodiscover() admin.autodiscover()

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-03 18:29+0100\n" "POT-Creation-Date: 2021-02-23 14:53+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,167 +18,191 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: .\aitrainer_backoffice\admin.py:34 .\aitrainer_backoffice\admin.py:114 #: .\aitrainer_backoffice\admin.py:48 .\aitrainer_backoffice\admin.py:94
#: .\aitrainer_backoffice\admin.py:227 #: .\aitrainer_backoffice\admin.py:258
msgid "Image Preview" msgid "Image Preview"
msgstr "Kép előnézet" msgstr "Kép előnézet"
#: .\aitrainer_backoffice\models.py:21 .\aitrainer_backoffice\models.py:252 #: .\aitrainer_backoffice\models.py:27 .\aitrainer_backoffice\models.py:201
msgid "Exercise Device" msgid "Exercise Device"
msgstr "Edzés eszköz" msgstr "Edzés eszköz"
#: .\aitrainer_backoffice\models.py:22 .\aitrainer_backoffice\models.py:253 #: .\aitrainer_backoffice\models.py:28 .\aitrainer_backoffice\models.py:202
msgid "Exercise Devices" msgid "Exercise Devices"
msgstr "Edzés eszközök" msgstr "Edzés eszközök"
#: .\aitrainer_backoffice\models.py:42 #: .\aitrainer_backoffice\models.py:42
msgid "Exercise Tree"
msgstr "Gyakorlat Menü"
#: .\aitrainer_backoffice\models.py:43
msgid "Exercise Tree Items"
msgstr "Gyakorlat Menü elemek"
#: .\aitrainer_backoffice\models.py:76
msgid "Exercise"
msgstr "Gyakorlat"
#: .\aitrainer_backoffice\models.py:77
msgid "Exercises"
msgstr "Gyakorlatok"
#: .\aitrainer_backoffice\models.py:97
msgid "Image"
msgstr "Kép"
#: .\aitrainer_backoffice\models.py:98
msgid "Images"
msgstr "Képek"
#: .\aitrainer_backoffice\models.py:113 .\aitrainer_backoffice\models.py:128
#: .\aitrainer_backoffice\models.py:159 .\aitrainer_backoffice\models.py:238
#: .\aitrainer_backoffice\models.py:264
msgid "Translation"
msgstr "Fordítás"
#: .\aitrainer_backoffice\models.py:114 .\aitrainer_backoffice\models.py:129
#: .\aitrainer_backoffice\models.py:160 .\aitrainer_backoffice\models.py:239
#: .\aitrainer_backoffice\models.py:265
msgid "Translations"
msgstr "Fordítások"
#: .\aitrainer_backoffice\models.py:143
msgid "Exercise Plan"
msgstr "Edzésterv"
#: .\aitrainer_backoffice\models.py:144
msgid "Exercise Plans"
msgstr "Edzéstervek"
#: .\aitrainer_backoffice\models.py:176
msgid "Exercise Plan Detail"
msgstr "Edzésterv gyakorlat"
#: .\aitrainer_backoffice\models.py:177
msgid "Exercise Plan Details"
msgstr "Edzésterv gyakorlatok"
#: .\aitrainer_backoffice\models.py:195
msgid "Product"
msgstr "Termék"
#: .\aitrainer_backoffice\models.py:196
msgid "Products"
msgstr "Termékek"
#: .\aitrainer_backoffice\models.py:212
msgid "Purchase"
msgstr "Vásárlás"
#: .\aitrainer_backoffice\models.py:213
msgid "Purchases"
msgstr "Vásárlások"
#: .\aitrainer_backoffice\models.py:223
msgid "Customer Property"
msgstr "Ügyfél tulajdonság"
#: .\aitrainer_backoffice\models.py:224
msgid "Customer Properties"
msgstr "Ügyfél tulajdonságok"
#: .\aitrainer_backoffice\models.py:274
#, fuzzy #, fuzzy
#| msgid "Exercise Tree Parent" #| msgid "Exercise Tree Parent"
msgid "exercise_device_parent" msgid "exercise_device_parent"
msgstr "Gyakorlat Eszköz szülő" msgstr "Gyakorlat Eszköz szülő"
#: .\aitrainer_backoffice\models.py:276 #: .\aitrainer_backoffice\models.py:44
#, fuzzy #, fuzzy
#| msgid "Exercise Tree" #| msgid "Exercise Tree"
msgid "exercise_device_child" msgid "exercise_device_child"
msgstr "Gyakorlat eszköz" msgstr "Gyakorlat eszköz"
#: .\aitrainer_backoffice\models.py:280 #: .\aitrainer_backoffice\models.py:48
msgid "Device Alternative" msgid "Device Alternative"
msgstr "Eszköz alternatíva" msgstr "Eszköz alternatíva"
#: .\aitrainer_backoffice\models.py:281 #: .\aitrainer_backoffice\models.py:49
msgid "Device Alternatives" msgid "Device Alternatives"
msgstr "Eszköz alternatívák" msgstr "Eszköz alternatívák"
#: .\aitrainer_backoffice\models.py:288 #: .\aitrainer_backoffice\models.py:61 .\aitrainer_backoffice\models.py:98
#, fuzzy #: .\aitrainer_backoffice\models.py:187 .\aitrainer_backoffice\models.py:261
#| msgid "Exercise Tree Parent" #: .\aitrainer_backoffice\models.py:307 .\aitrainer_backoffice\models.py:390
msgid "exercise_type_parent" msgid "Translation"
msgstr "Gyakorlat szülő" msgstr "Fordítás"
#: .\aitrainer_backoffice\models.py:290 #: .\aitrainer_backoffice\models.py:62 .\aitrainer_backoffice\models.py:99
#, fuzzy #: .\aitrainer_backoffice\models.py:188 .\aitrainer_backoffice\models.py:262
#| msgid "Exercise Tree" #: .\aitrainer_backoffice\models.py:308 .\aitrainer_backoffice\models.py:391
msgid "exercise_type_child" msgid "Translations"
msgstr "Aktuális gyakorlat" msgstr "Fordítások"
#: .\aitrainer_backoffice\models.py:294 #: .\aitrainer_backoffice\models.py:83
msgid "Exercise Alternative" msgid "Exercise Tree"
msgstr "Gyakorlat alternatíva" msgstr "Gyakorlat Menü"
#: .\aitrainer_backoffice\models.py:295 #: .\aitrainer_backoffice\models.py:84
msgid "Exercise Alternatives" msgid "Exercise Tree Items"
msgstr "Gyakorlat alternatívák" msgstr "Gyakorlat Menü elemek"
#: .\aitrainer_backoffice\models.py:306 #: .\aitrainer_backoffice\models.py:108
msgid "Exercise Parent"
msgstr "Gyakorlat szülő"
#: .\aitrainer_backoffice\models.py:307
msgid "Exercise Parents"
msgstr "Gyakorlat szülők"
#: .\aitrainer_backoffice\models.py:313
#, fuzzy #, fuzzy
#| msgid "Exercise Tree Parent" #| msgid "Exercise Tree Parent"
msgid "exercise_tree_parent" msgid "exercise_tree_parent"
msgstr "Gyakorlat Menü szülő" msgstr "Gyakorlat Menü szülő"
#: .\aitrainer_backoffice\models.py:313 #: .\aitrainer_backoffice\models.py:108
msgid "Parent menu" msgid "Parent menu"
msgstr "Szülő menüpont" msgstr "Szülő menüpont"
#: .\aitrainer_backoffice\models.py:314 #: .\aitrainer_backoffice\models.py:110
#, fuzzy #, fuzzy
#| msgid "Exercise Tree" #| msgid "Exercise Tree"
msgid "exercise_tree_child" msgid "exercise_tree_child"
msgstr "Aktuális Gyakorlat Menü" msgstr "Aktuális Gyakorlat Menü"
#: .\aitrainer_backoffice\models.py:314 #: .\aitrainer_backoffice\models.py:110
msgid "Actual menu" msgid "Actual menu"
msgstr "Aktuális menüpont" msgstr "Aktuális menüpont"
#: .\aitrainer_backoffice\models.py:318 #: .\aitrainer_backoffice\models.py:114
msgid "Exercise Tree Parent" msgid "Exercise Tree Parent"
msgstr "Gyakorlat Menü szülő" msgstr "Gyakorlat Menü szülő"
#: .\aitrainer_backoffice\models.py:319 #: .\aitrainer_backoffice\models.py:115
msgid "Exercise Tree Parents" msgid "Exercise Tree Parents"
msgstr "Gyakorlat Menü szülők" msgstr "Gyakorlat Menü szülők"
#: .\aitrainer_backoffice\models.py:150
msgid "Exercise"
msgstr "Gyakorlat"
#: .\aitrainer_backoffice\models.py:151
msgid "Exercises"
msgstr "Gyakorlatok"
#: .\aitrainer_backoffice\models.py:171
msgid "Image"
msgstr "Kép"
#: .\aitrainer_backoffice\models.py:172
msgid "Images"
msgstr "Képek"
#: .\aitrainer_backoffice\models.py:208
#, fuzzy
#| msgid "Exercise Tree Parent"
msgid "exercise_type_parent"
msgstr "Gyakorlat szülő"
#: .\aitrainer_backoffice\models.py:210
#, fuzzy
#| msgid "Exercise Tree"
msgid "exercise_type_child"
msgstr "Aktuális gyakorlat"
#: .\aitrainer_backoffice\models.py:214
msgid "Exercise Alternative"
msgstr "Gyakorlat alternatíva"
#: .\aitrainer_backoffice\models.py:215
msgid "Exercise Alternatives"
msgstr "Gyakorlat alternatívák"
#: .\aitrainer_backoffice\models.py:226
msgid "Exercise Parent"
msgstr "Gyakorlat szülő"
#: .\aitrainer_backoffice\models.py:227
msgid "Exercise Parents"
msgstr "Gyakorlat szülők"
#: .\aitrainer_backoffice\models.py:245
#, fuzzy
#| msgid "Exercise Plan Detail"
msgid "Exercise Plan Template"
msgstr "Edzésterv sablon"
#: .\aitrainer_backoffice\models.py:246
#, fuzzy
#| msgid "Exercise Plan Details"
msgid "Exercise Plan Templates"
msgstr "Edzésterv sablonok"
#: .\aitrainer_backoffice\models.py:279
#, fuzzy
#| msgid "Exercise Plan Detail"
msgid "Exercise Plan Template Detail"
msgstr "Edzésterv sablon gyakorlat"
#: .\aitrainer_backoffice\models.py:280
#, fuzzy
#| msgid "Exercise Plan Details"
msgid "Exercise Plan Template Details"
msgstr "Edzésterv sablon gyakorlatok"
#: .\aitrainer_backoffice\models.py:291
msgid "Exercise Plan"
msgstr "Edzésterv"
#: .\aitrainer_backoffice\models.py:292
msgid "Exercise Plans"
msgstr "Edzéstervek"
#: .\aitrainer_backoffice\models.py:324
msgid "Exercise Plan Detail"
msgstr "Edzésterv gyakorlat"
#: .\aitrainer_backoffice\models.py:325
msgid "Exercise Plan Details"
msgstr "Edzésterv gyakorlatok"
#: .\aitrainer_backoffice\models.py:347
msgid "Product"
msgstr "Termék"
#: .\aitrainer_backoffice\models.py:348
msgid "Products"
msgstr "Termékek"
#: .\aitrainer_backoffice\models.py:364
msgid "Purchase"
msgstr "Vásárlás"
#: .\aitrainer_backoffice\models.py:365
msgid "Purchases"
msgstr "Vásárlások"
#: .\aitrainer_backoffice\models.py:375
msgid "Customer Property"
msgstr "Ügyfél tulajdonság"
#: .\aitrainer_backoffice\models.py:376
msgid "Customer Properties"
msgstr "Ügyfél tulajdonságok"

View File

@ -228,6 +228,58 @@ class ExerciseTypeParents(models.Model):
unique_together = [['exercise_type', 'exercise_tree']] unique_together = [['exercise_type', 'exercise_tree']]
class TemplateTypes(models.TextChoices):
MINI_SET = "mini_test_set"
SPECIAL = "special"
class ExercisePlanTemplate(models.Model):
exercise_plan_template_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, help_text='The name should be in English here')
description = models.TextField(max_length=1000, blank=True, null=True, help_text='The description should be in '
'English here')
template_type = models.CharField(max_length=20, choices=TemplateTypes.choices, default=TemplateTypes.SPECIAL)
class Meta:
db_table = 'exercise_plan_template'
verbose_name = _("Exercise Plan Template")
verbose_name_plural = _("Exercise Plan Templates")
def __str__(self):
return self.name
class ExercisePlanTemplateTranslation(models.Model):
translation_id = models.AutoField(primary_key=True)
exercise_plan_template = models.ForeignKey(ExercisePlanTemplate, on_delete=models.CASCADE)
language_code = models.CharField(max_length=2, choices=LanguageTypes.choices, default=LanguageTypes.HU)
name = models.CharField(max_length=100)
description = models.TextField(max_length=1000, blank=True, null=True)
class Meta:
db_table = 'exercise_plan_template_translation'
verbose_name = _("Translation")
verbose_name_plural = _("Translations")
def __str__(self):
return self.name
class ExercisePlanTemplateDetail(models.Model):
exercise_plan_template_detail_id = models.AutoField(primary_key=True)
exercise_plan_template = models.ForeignKey(ExercisePlanTemplate, on_delete=models.CASCADE)
exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE)
serie = models.IntegerField()
quantity = models.FloatField()
quantity_unit_quantity = models.FloatField()
resting_time = models.TimeField()
class Meta:
db_table = 'exercise_plan_template_detail'
verbose_name = _("Exercise Plan Template Detail")
verbose_name_plural = _("Exercise Plan Template Details")
class ExercisePlan(models.Model): class ExercisePlan(models.Model):
exercise_plan_id = models.AutoField(primary_key=True) exercise_plan_id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, help_text='The name should be in English here') name = models.CharField(max_length=100, help_text='The name should be in English here')

View File

@ -27,3 +27,4 @@ urlpatterns = [
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
admin.site.site_header = 'WorkoutTest Admin'

View File

@ -1,3 +1,2 @@
django-admin makemessages -l hu --ignore venv --pythonpath "D:\projects\aitrainer\src\aitrainer_backoffice" --settings aitrainer_backoffice.aitrainer_backoffice.settings.dev django-admin makemessages -l hu --ignore venv --pythonpath "D:\projects\aitrainer\src\aitrainer_backoffice" --settings aitrainer_backoffice.aitrainer_backoffice.settings.dev
## compilemessages

View File

@ -0,0 +1,2 @@
django-admin compilemessages -l hu --pythonpath "D:\projects\aitrainer\src\aitrainer_backoffice" --settings aitrainer_backoffice.aitrainer_backoffice.settings.dev