API 1.0.26 admin: ExercisePlanTemplate
This commit is contained in:
parent
0f089d7882
commit
78c6dbee71
@ -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()
|
||||
|
@ -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"
|
||||
|
@ -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')
|
||||
|
@ -27,3 +27,4 @@ urlpatterns = [
|
||||
|
||||
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
|
||||
|
||||
admin.site.site_header = 'WorkoutTest Admin'
|
@ -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
|
2
aitrainer_backoffice/translate_compile.bat
Normal file
2
aitrainer_backoffice/translate_compile.bat
Normal file
@ -0,0 +1,2 @@
|
||||
django-admin compilemessages -l hu --pythonpath "D:\projects\aitrainer\src\aitrainer_backoffice" --settings aitrainer_backoffice.aitrainer_backoffice.settings.dev
|
||||
|
Loading…
Reference in New Issue
Block a user