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.utils.html import format_html
from django.utils.translation import ugettext_lazy as _
@ -11,6 +13,7 @@ from .models import ExerciseTree, ExerciseTreeParents
from .models import ExercisePlanTranslation
from .models import ExercisePlanDetail
from .models import ExercisePlan
from .models import ExercisePlanTemplate, ExercisePlanTemplateTranslation, ExercisePlanTemplateDetail
'''
ExerciseTree
@ -114,7 +117,7 @@ class ExerciseTypeParentsInline(admin.TabularInline):
class ExerciseTypeAdmin(admin.ModelAdmin):
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')
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):
model = ExercisePlanTranslation
fields = ('language_code', 'name', 'description')
@ -169,7 +214,7 @@ class ExercisePlanAdmin(admin.ModelAdmin):
TranslationPlanInline
]
'''
class ExercisePlanDetailAdmin(admin.ModelAdmin):
list_display = ('get_plan', 'get_exercise_type', 'serie', 'repeats', 'weight_equation',)
list_editable = ('serie', 'repeats', 'weight_equation',)
@ -181,6 +226,7 @@ class ExercisePlanDetailAdmin(admin.ModelAdmin):
def get_exercise_type(self, obj):
return obj.exercise_type.name
'''
class ProductAdmin(admin.ModelAdmin):
@ -221,8 +267,8 @@ class ExerciseDeviceAdmin(admin.ModelAdmin):
admin.site.register(ExerciseType, ExerciseTypeAdmin)
admin.site.register(ExerciseTree, ExerciseTreeAdmin)
admin.site.register(ExercisePlanTemplate, ExercisePlanTemplateAdmin)
admin.site.register(ExercisePlan, ExercisePlanAdmin)
admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin)
admin.site.register(Product, ProductAdmin)
admin.site.register(ExerciseDevice, ExerciseDeviceAdmin)
admin.autodiscover()

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,167 +18,191 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: .\aitrainer_backoffice\admin.py:34 .\aitrainer_backoffice\admin.py:114
#: .\aitrainer_backoffice\admin.py:227
#: .\aitrainer_backoffice\admin.py:48 .\aitrainer_backoffice\admin.py:94
#: .\aitrainer_backoffice\admin.py:258
msgid "Image Preview"
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"
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"
msgstr "Edzés eszközök"
#: .\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
#| msgid "Exercise Tree Parent"
msgid "exercise_device_parent"
msgstr "Gyakorlat Eszköz szülő"
#: .\aitrainer_backoffice\models.py:276
#: .\aitrainer_backoffice\models.py:44
#, fuzzy
#| msgid "Exercise Tree"
msgid "exercise_device_child"
msgstr "Gyakorlat eszköz"
#: .\aitrainer_backoffice\models.py:280
#: .\aitrainer_backoffice\models.py:48
msgid "Device Alternative"
msgstr "Eszköz alternatíva"
#: .\aitrainer_backoffice\models.py:281
#: .\aitrainer_backoffice\models.py:49
msgid "Device Alternatives"
msgstr "Eszköz alternatívák"
#: .\aitrainer_backoffice\models.py:288
#, fuzzy
#| msgid "Exercise Tree Parent"
msgid "exercise_type_parent"
msgstr "Gyakorlat szülő"
#: .\aitrainer_backoffice\models.py:61 .\aitrainer_backoffice\models.py:98
#: .\aitrainer_backoffice\models.py:187 .\aitrainer_backoffice\models.py:261
#: .\aitrainer_backoffice\models.py:307 .\aitrainer_backoffice\models.py:390
msgid "Translation"
msgstr "Fordítás"
#: .\aitrainer_backoffice\models.py:290
#, fuzzy
#| msgid "Exercise Tree"
msgid "exercise_type_child"
msgstr "Aktuális gyakorlat"
#: .\aitrainer_backoffice\models.py:62 .\aitrainer_backoffice\models.py:99
#: .\aitrainer_backoffice\models.py:188 .\aitrainer_backoffice\models.py:262
#: .\aitrainer_backoffice\models.py:308 .\aitrainer_backoffice\models.py:391
msgid "Translations"
msgstr "Fordítások"
#: .\aitrainer_backoffice\models.py:294
msgid "Exercise Alternative"
msgstr "Gyakorlat alternatíva"
#: .\aitrainer_backoffice\models.py:83
msgid "Exercise Tree"
msgstr "Gyakorlat Menü"
#: .\aitrainer_backoffice\models.py:295
msgid "Exercise Alternatives"
msgstr "Gyakorlat alternatívák"
#: .\aitrainer_backoffice\models.py:84
msgid "Exercise Tree Items"
msgstr "Gyakorlat Menü elemek"
#: .\aitrainer_backoffice\models.py:306
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
#: .\aitrainer_backoffice\models.py:108
#, fuzzy
#| msgid "Exercise Tree Parent"
msgid "exercise_tree_parent"
msgstr "Gyakorlat Menü szülő"
#: .\aitrainer_backoffice\models.py:313
#: .\aitrainer_backoffice\models.py:108
msgid "Parent menu"
msgstr "Szülő menüpont"
#: .\aitrainer_backoffice\models.py:314
#: .\aitrainer_backoffice\models.py:110
#, fuzzy
#| msgid "Exercise Tree"
msgid "exercise_tree_child"
msgstr "Aktuális Gyakorlat Menü"
#: .\aitrainer_backoffice\models.py:314
#: .\aitrainer_backoffice\models.py:110
msgid "Actual menu"
msgstr "Aktuális menüpont"
#: .\aitrainer_backoffice\models.py:318
#: .\aitrainer_backoffice\models.py:114
msgid "Exercise Tree Parent"
msgstr "Gyakorlat Menü szülő"
#: .\aitrainer_backoffice\models.py:319
#: .\aitrainer_backoffice\models.py:115
msgid "Exercise Tree Parents"
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']]
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):
exercise_plan_id = models.AutoField(primary_key=True)
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)
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
## 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