From 71e0b8f155cd0c88a51890af2e75e0f0ce4233ca Mon Sep 17 00:00:00 2001 From: Bossanyi Tibor Date: Fri, 24 Jul 2020 14:37:20 +0200 Subject: [PATCH] exercise plan, plan detail --- .../aitrainer_backoffice/admin.py | 40 +++++++++++++++++ .../aitrainer_backoffice/models.py | 45 +++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/aitrainer_backoffice/aitrainer_backoffice/admin.py b/aitrainer_backoffice/aitrainer_backoffice/admin.py index 82e5025..240684c 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/admin.py +++ b/aitrainer_backoffice/aitrainer_backoffice/admin.py @@ -6,6 +6,9 @@ from .models import ExerciseTypeImage from .models import ExerciseTypeTranslation from .models import ExerciseTreeTranslation from .models import ExerciseTree +from .models import ExercisePlanTranslation +from .models import ExercisePlanDetail +from .models import ExercisePlan class ImageInline(admin.StackedInline): @@ -87,7 +90,44 @@ class ExerciseTreeAdmin(admin.ModelAdmin): ] +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 = '{}˓→'.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', 'repeat', 'weight_equation',) + list_editable = ('serie', 'repeat', '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 + + admin.site.register(ExerciseType, ExerciseTypeAdmin) admin.site.register(ExerciseTree, ExerciseTreeAdmin) +admin.site.register(ExercisePlan, ExercisePlanAdmin) +admin.site.register(ExercisePlanDetail, ExercisePlanDetailAdmin) admin.autodiscover() diff --git a/aitrainer_backoffice/aitrainer_backoffice/models.py b/aitrainer_backoffice/aitrainer_backoffice/models.py index ed344bc..b1afada 100644 --- a/aitrainer_backoffice/aitrainer_backoffice/models.py +++ b/aitrainer_backoffice/aitrainer_backoffice/models.py @@ -104,3 +104,48 @@ class ExerciseTreeTranslation(models.Model): def __str__(self): return self.name + + +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') + description = models.TextField(max_length=1000, blank=True, null=True, help_text='The description should be in ' + 'English here') + + class Meta: + db_table = 'exercise_plan' + verbose_name = _("Exercise Plan") + verbose_name_plural = _("Exercise Plans") + + def __str__(self): + return self.name + + +class ExercisePlanTranslation(models.Model): + translation_id = models.AutoField(primary_key=True) + exercise_plan = models.ForeignKey(ExercisePlan, 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_translation' + verbose_name = _("Translation") + verbose_name_plural = _("Translations") + + def __str__(self): + return self.name + + +class ExercisePlanDetail(models.Model): + exercise_plan_detail_id = models.AutoField(primary_key=True) + exercise_plan = models.ForeignKey(ExercisePlan, on_delete=models.CASCADE) + exercise_type = models.ForeignKey(ExerciseType, on_delete=models.CASCADE) + serie = models.IntegerField() + repeat = models.IntegerField() + weight_equation = models.CharField(max_length=100) + + class Meta: + db_table = 'exercise_plan_detail' + verbose_name = _("Exercise Plan Detail") + verbose_name_plural = _("Exercise Plan Details") \ No newline at end of file